Skip to content

Visibility System

TheKillerey edited this page Apr 13, 2026 · 1 revision

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.


Dragon Layer System (Standard)

The primary visibility system. Each mesh has a visibility_layer bitmask that determines which elemental rift configuration it belongs to.

Layer Bits

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.

Viewport Filtering

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 = 0 always show

Assigning Layers

  1. Select mesh(es).
  2. In Mesh Properties, toggle individual layer checkboxes.
  3. Or use the Assign to Layer operator for batch assignment.

Baron Hash System (Override)

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.

Baron States

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.

How Baron Hash Works

Baron hash controllers are entries in the materials file that define visibility rules. They come in several types:

Layer Controllers (0xc406a533)

Direct layer assignment — maps a hash to a specific visibility flag value.

{
  "PathHash": "{8e6a128e}",
  "name": "HextechController",
  "DefaultVisible": false,
  "layer_flag": 64,
  "__type": "LayerController"
}

Child Controllers (ChildMapVisibilityController)

Reference parent controllers to inherit/combine visibility logic.

{
  "PathHash": "{5e652742}",
  "Parents": ["{8e6a128e}", "{4f0b2a3e}", ...],
  "ParentMode": 3,
  "__type": "ChildMapVisibilityController"
}

Priority Layer Controllers (0xec733fe2)

Baron state assignment — maps a hash to baron pit state bits.

{
  "PathHash": "{f4968631}",
  "name": "BaronBase",
  "baron_state_bits": 1,
  "__type": "PriorityLayerController"
}

ParentMode Values

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)

Visibility Priority Logic

# 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

Key Rules

  1. No baron hash → mesh uses the dragon layer system only, visible on all baron states.
  2. Baron hash with no dragon layers → dragon visibility from visibility_layer, baron from decoded hash.
  3. Baron hash with dragon layers → baron hash overrides visibility_layer for dragon visibility.

Baron Hash Editor

Location: LoL Mapgeo tab → Mesh Properties → Baron Hash section

Operations

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)

Editor Fields

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

Viewport Filtering

Dragon Filter

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.

Baron Filter

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.

Show All

Click Show All to reset visibility and display every mesh regardless of layer settings.


Example: Hextech-Only Mesh

A mesh that should only appear on Hextech dragon:

visibility_layer = 32  (bit 5 = Hextech)
baron_hash = ""        (no baron restriction)

Example: Baron Override Mesh

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

Clone this wiki locally