-
Notifications
You must be signed in to change notification settings - Fork 0
Visibility System
League maps use two visibility systems that control which meshes appear during gameplay. The addon fully supports both in the viewport and during export.
The primary visibility system. Each mesh has a visibility_layer bitmask that determines which elemental rift configuration it belongs to.
| Bit | Value | Dragon |
|---|---|---|
| 0 | 1 | Base (no dragon) |
| 1 | 2 | Inferno (Fire) |
| 2 | 4 | Mountain (Earth) |
| 3 | 8 | Ocean |
| 4 | 16 | Cloud |
| 5 | 32 | Hextech |
| 6 | 64 | Chemtech |
| 7 | 128 | Void |
A mesh with visibility_layer = 0 or visibility_layer = 255 is visible on all dragon configurations.
Multiple bits can be set — a mesh with visibility_layer = 6 (bits 1+2) is visible on both Inferno and Mountain.
In Layer Management, use the Dragon Layer Filter dropdown to preview a specific dragon configuration:
- Select a dragon type
- Only meshes matching that layer bit are shown
- Meshes with
visibility_layer = 0always show
- Select mesh(es).
- In Mesh Properties, toggle individual layer checkboxes.
- Or use the Assign to Layer operator for batch assignment.
The secondary visibility system, used for Baron Nashor's pit area. When a mesh has a baron_hash assigned, it can override or supplement the dragon layer system.
Defined in map11.bin via PriorityLayerController entries:
| State | Bit Value | Description |
|---|---|---|
| Base | 1 | Default pit state |
| Cup | 2 | Cup variation |
| Tunnel | 4 | Tunnel variation |
| Upgraded | 8 | Upgraded variation |
Custom maps may define different baron states with different bit values.
Baron hash controllers are entries in the materials file that define visibility rules. They come in several types:
Direct layer assignment — maps a hash to a specific visibility flag value.
{
"PathHash": "{8e6a128e}",
"name": "HextechController",
"DefaultVisible": false,
"layer_flag": 64,
"__type": "LayerController"
}Reference parent controllers to inherit/combine visibility logic.
{
"PathHash": "{5e652742}",
"Parents": ["{8e6a128e}", "{4f0b2a3e}", ...],
"ParentMode": 3,
"__type": "ChildMapVisibilityController"
}Baron state assignment — maps a hash to baron pit state bits.
{
"PathHash": "{f4968631}",
"name": "BaronBase",
"baron_state_bits": 1,
"__type": "PriorityLayerController"
}| Value | Mode | Meaning |
|---|---|---|
| 1 | Visible | Mesh visible when parent condition is active |
| 3 | Not Visible | Mesh hidden when parent condition is active (visible on all other layers) |
# STEP 1: Dragon visibility
if has_baron_hash and has_baron_dragon_layers:
# OVERRIDE: Baron dragon layers take precedence
is_in_list = current_dragon in baron_dragon_layers
if parent_mode == 3: # Not Visible
dragon_visible = not is_in_list
else: # Visible
dragon_visible = is_in_list
else:
# STANDARD: Use visibility_layer bitmask
if visibility_layer == 0 or visibility_layer == 255:
dragon_visible = True
else:
dragon_visible = bool(visibility_layer & current_dragon_bit)
# STEP 2: Baron pit visibility
if has_baron_hash and has_baron_layers:
is_in_list = current_baron_state in baron_layers
if parent_mode == 3: # Not Visible
baron_visible = not is_in_list
else: # Visible
baron_visible = is_in_list
else:
baron_visible = True # No baron restriction
# FINAL: Both must be true
visible = dragon_visible and baron_visible- No baron hash → mesh uses the dragon layer system only, visible on all baron states.
-
Baron hash with no dragon layers → dragon visibility from
visibility_layer, baron from decoded hash. -
Baron hash with dragon layers → baron hash overrides
visibility_layerfor dragon visibility.
Location: LoL Mapgeo tab → Mesh Properties → Baron Hash section
| Button | Action |
|---|---|
| Load from Selected | Copy baron hash from active mesh into editor |
| Apply to Selected | Write editor values to all selected meshes |
| Remove Baron Hash | Clear baron hash from selected meshes |
| Create New Controller | Create a new baron hash from a name (FNV-1a auto-hash) |
| Field | Description |
|---|---|
| Hash | Hex hash value (e.g. 5E652742) |
| Name | Human-readable name for auto-hashing |
| Parent Mode | Visible (1) or Not Visible (3) |
| Baron Layers | Checkboxes: Base, Cup, Tunnel, Upgraded |
| Dragon Layers | Checkboxes: Base through Void |
In Layer Management, the Dragon Layer Filter dropdown shows only meshes matching the selected dragon configuration. Use Edit Mode checkbox to disable filtering and show all meshes while editing.
The Baron Layer Filter dropdown filters by baron pit state. Combined with the dragon filter, you can preview exactly which meshes appear for any game state.
Click Show All to reset visibility and display every mesh regardless of layer settings.
A mesh that should only appear on Hextech dragon:
visibility_layer = 32 (bit 5 = Hextech)
baron_hash = "" (no baron restriction)
A mesh visible on all dragons EXCEPT Hextech, visible only during Baron Cup state:
visibility_layer = 223 (all bits except bit 5)
baron_hash = "5E652742" (ChildMapVisibilityController with ParentMode=3)
baron_layers_decoded = [Cup]
baron_dragon_layers = [Hextech]
With ParentMode=3 (Not Visible):
- Dragon: NOT visible on Hextech → visible on all others
- Baron: visible only during Cup state