/tg/ Station 13 - Modules - TypesDefine Details

code/__DEFINES/layers.dm

SEETHROUGH_PLANESlightly above the game plane but does not catch mouse clicks. Useful for certain visuals that should be clicked through, like seethrough trees
LIGHTING_PLANENormal 1 per turf dynamic lighting underlays
O_LIGHTING_VISUAL_PLANELighting objects that are "free floating"
EMISSIVE_RENDER_PLATEThis plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas.
LIGHT_MASK_PLANEMasks the lighting plane with turfs, so we never light up the void Failing that, masks emissives and the overlay lighting plane
ABOVE_LIGHTING_PLANEThings that should render ignoring lighting
PIPECRAWL_IMAGES_PLANE---------------- MISC ----------------------- Pipecrawling images
CAMERA_STATIC_PLANEAI Camera Static
HIGH_GAME_PLANEAnything that wants to be part of the game plane, but also wants to draw above literally everything else
RUNECHAT_PLANE--------------- FULLSCREEN RUNECHAT BUBBLES ------------ Popup Chat Messages
BALLOON_CHAT_PLANEPlane for balloon text (text that fades up)
SPLASHSCREEN_PLANEPlane of the "splash" icon used that shows on the lobby screen
RENDER_PLANE_GAME_MASKEDIf fov is enabled we'll draw game to this and do shit to it
RENDER_PLANE_GAME_UNMASKEDThe bit of the game plane that is let alone is sent here
ESCAPE_MENU_PLANEPlane related to the menu when pressing Escape. Needed so that we can apply a blur effect to EVERYTHING, and guarantee we are above all UI.
PLANE_RANGEThe range unique planes can be in Try and keep this to a nice whole number, so it's easy to look at a plane var and know what's going on
CATWALK_LAYERcatwalk overlay of /turf/open/floor/plating/catwalk_floor
TOPDOWN_WATER_LEVEL_LAYERBelow this level, objects with topdown layers are rendered as if underwater by the immerse element
TOPDOWN_ABOVE_WATER_LAYERAbove this level, objects with topdown layers are unaffected by the immerse element
WATER_LEVEL_LAYERAnything below this layer is to be considered completely (visually) under water by the immerse layer.
WATER_VISUAL_OVERLAY_LAYERThe layer of the visual overlay used in the submerge element. The vis overlay inherits the planes of the movables it's attached to (that also have KEEP_TOGETHER added) We just have to make sure the visual overlay is rendered above all the other overlays of those movables.
LIGHTING_MASK_LAYERTypically overlays, that "hide" portions of the turf underlay layer I'm allotting 100 z levels before this breaks. That'll never happen --Lemon
LIGHTING_PRIMARY_LAYERMisc things that draw on the turf lighting plane Space, solar beams, etc
LIGHTING_ABOVE_ALLStuff that needs to draw above everything else on this plane
EMISSIVE_LAYER_UNBLOCKABLEThe layer you should use if you really don't want an emissive overlay to be blocked.
FLASH_LAYER--------------- FULLSCREEN IMAGES ------------
TYPING_LAYER--------------- FULLSCREEN RUNECHAT BUBBLES ------------ Bubble for typing indicators
RADIAL_CONTENT_LAYER1000 is an unimportant number, it's just to normalize copied layers
SCREENTIP_LAYERLayer for screentips
TUTORIAL_INSTRUCTIONS_LAYERLayer for tutorial instructions
LIGHT_DEBUG_LAYERLayer for light overlays
LOBBY_BELOW_MENU_LAYERLayer for lobby menu collapse button
LOBBY_MENU_LAYERLayer for lobby menu background image and main buttons (Join/Ready, Observe, Character Prefs)
LOBBY_SHUTTER_LAYERLayer for lobby menu shutter, which covers up the menu to collapse/expand it
LOBBY_BOTTOM_BUTTON_LAYERLayer for lobby menu buttons that are hanging away from and lower than the main panel
CINEMATIC_LAYERcinematics are "below" the splash screen
PLANE_MASTERS_GAMEPlane master controller keys
PLANE_CRITICAL_DISPLAYThis plane master will not go away if its layer is culled. useful for preserving effects
PLANE_CRITICAL_NO_RELAYThis plane master will temporarially remove relays to all other planes Allows us to retain the effects of a plane while cutting off the changes it makes
PLANE_CRITICAL_CUT_RENDERWe assume this plane master has a render target starting with *, it'll be removed, forcing it to render in place
BLOCKS_PLANE_OFFSETTINGThis plane master will not be offset itself, existing only once with an offset of 0 Mostly used for planes that really don't need to be duplicated, like the hud planes
OFFSET_RELAYS_MATCH_HIGHESTThis plane master will have its relays offset to match the highest rendering plane that matches the target Required for making things like the blind fullscreen not render over runechat
MULTIZ_PERFORMANCE_DISABLEA value of /datum/preference/numeric/multiz_performance that disables the option
MAX_EXPECTED_Z_DEPTHWe expect at most 3 layers of multiz Increment this define if you make a huge map. We unit test for it too just to make it easy for you If you modify this, you'll need to modify the tsx file too

Define Details

ABOVE_LIGHTING_PLANE

Things that should render ignoring lighting

BALLOON_CHAT_PLANE

Plane for balloon text (text that fades up)

BLOCKS_PLANE_OFFSETTING

This plane master will not be offset itself, existing only once with an offset of 0 Mostly used for planes that really don't need to be duplicated, like the hud planes

CAMERA_STATIC_PLANE

AI Camera Static

CATWALK_LAYER

catwalk overlay of /turf/open/floor/plating/catwalk_floor

CINEMATIC_LAYER

cinematics are "below" the splash screen

EMISSIVE_LAYER_UNBLOCKABLE

The layer you should use if you really don't want an emissive overlay to be blocked.

EMISSIVE_RENDER_PLATE

This plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas.

ESCAPE_MENU_PLANE

Plane related to the menu when pressing Escape. Needed so that we can apply a blur effect to EVERYTHING, and guarantee we are above all UI.

FLASH_LAYER

--------------- FULLSCREEN IMAGES ------------

HIGH_GAME_PLANE

Anything that wants to be part of the game plane, but also wants to draw above literally everything else

LIGHTING_ABOVE_ALL

Stuff that needs to draw above everything else on this plane

LIGHTING_MASK_LAYER

Typically overlays, that "hide" portions of the turf underlay layer I'm allotting 100 z levels before this breaks. That'll never happen --Lemon

LIGHTING_PLANE

Normal 1 per turf dynamic lighting underlays

LIGHTING_PRIMARY_LAYER

Misc things that draw on the turf lighting plane Space, solar beams, etc

LIGHT_DEBUG_LAYER

Layer for light overlays

LIGHT_MASK_PLANE

Masks the lighting plane with turfs, so we never light up the void Failing that, masks emissives and the overlay lighting plane

LOBBY_BELOW_MENU_LAYER

Layer for lobby menu collapse button

LOBBY_BOTTOM_BUTTON_LAYER

Layer for lobby menu buttons that are hanging away from and lower than the main panel

LOBBY_MENU_LAYER

Layer for lobby menu background image and main buttons (Join/Ready, Observe, Character Prefs)

LOBBY_SHUTTER_LAYER

Layer for lobby menu shutter, which covers up the menu to collapse/expand it

MAX_EXPECTED_Z_DEPTH

We expect at most 3 layers of multiz Increment this define if you make a huge map. We unit test for it too just to make it easy for you If you modify this, you'll need to modify the tsx file too

MULTIZ_PERFORMANCE_DISABLE

A value of /datum/preference/numeric/multiz_performance that disables the option

OFFSET_RELAYS_MATCH_HIGHEST

This plane master will have its relays offset to match the highest rendering plane that matches the target Required for making things like the blind fullscreen not render over runechat

O_LIGHTING_VISUAL_PLANE

Lighting objects that are "free floating"

PIPECRAWL_IMAGES_PLANE

---------------- MISC ----------------------- Pipecrawling images

PLANE_CRITICAL_CUT_RENDER

We assume this plane master has a render target starting with *, it'll be removed, forcing it to render in place

PLANE_CRITICAL_DISPLAY

This plane master will not go away if its layer is culled. useful for preserving effects

PLANE_CRITICAL_NO_RELAY

This plane master will temporarially remove relays to all other planes Allows us to retain the effects of a plane while cutting off the changes it makes

PLANE_MASTERS_GAME

Plane master controller keys

PLANE_RANGE

The range unique planes can be in Try and keep this to a nice whole number, so it's easy to look at a plane var and know what's going on

RADIAL_CONTENT_LAYER

1000 is an unimportant number, it's just to normalize copied layers

RENDER_PLANE_GAME_MASKED

If fov is enabled we'll draw game to this and do shit to it

RENDER_PLANE_GAME_UNMASKED

The bit of the game plane that is let alone is sent here

RUNECHAT_PLANE

--------------- FULLSCREEN RUNECHAT BUBBLES ------------ Popup Chat Messages

SCREENTIP_LAYER

Layer for screentips

SEETHROUGH_PLANE

Slightly above the game plane but does not catch mouse clicks. Useful for certain visuals that should be clicked through, like seethrough trees

SPLASHSCREEN_PLANE

Plane of the "splash" icon used that shows on the lobby screen

TOPDOWN_ABOVE_WATER_LAYER

Above this level, objects with topdown layers are unaffected by the immerse element

TOPDOWN_WATER_LEVEL_LAYER

Below this level, objects with topdown layers are rendered as if underwater by the immerse element

TUTORIAL_INSTRUCTIONS_LAYER

Layer for tutorial instructions

TYPING_LAYER

--------------- FULLSCREEN RUNECHAT BUBBLES ------------ Bubble for typing indicators

WATER_LEVEL_LAYER

Anything below this layer is to be considered completely (visually) under water by the immerse layer.

WATER_VISUAL_OVERLAY_LAYER

The layer of the visual overlay used in the submerge element. The vis overlay inherits the planes of the movables it's attached to (that also have KEEP_TOGETHER added) We just have to make sure the visual overlay is rendered above all the other overlays of those movables.