SS1984 - Modules - TypesDefine Details

code/__DEFINES/layers.dm

RENDER_PLANE_TRANSPARENTTransparent plane that shows openspace underneath the floor
SEETHROUGH_PLANESlightly above the game plane but does not catch mouse clicks. Useful for certain visuals that should be clicked through, like seethrough trees
DEFAULT_PLANEMarks out the default plane, even if we don't use it
LIGHTING_PLANENormal 1 per turf dynamic lighting underlays
O_LIGHTING_VISUAL_PLANELighting objects that are "free floating"
RENDER_PLANE_TURF_LIGHTINGRender plate used by overlay lighting to mask turf lights
RENDER_PLANE_EMISSIVEThis plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas.
RENDER_PLANE_UNLIT_GAMEMain game plane to which everything renders, which then is multiplied by light Should not be lit directly as it is sourced for emissive bloom
RENDER_PLANE_LIGHT_MASKMasks the lighting plane with turfs, so we never light up the void Failing that, masks emissives and the overlay lighting plane
RENDER_PLANE_SPECULARWe cannot render speculars to ABOVE_LIGHTING, as then they give it alpha and end up masking things in darkness So we need to render it directly to RENDER_PLANE_GAME above RENDER_PLANE_LIGHTING
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_PLANEPopup 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. Only render plate planes should be above this.
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
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
TOPDOWN_TO_EMISSIVE_LAYERUsed to shift all topdown layer emissives to a the game plane equivalent layers, as otherwise they render above everything else due to being KEEP_APART
MAP_EDITOR_TURF_LAYERWhich layer turfs appear on by default in the map editor. Should be unique!
WATER_LEVEL_LAYERAnything below this layer is to be considered completely (visually) under water by the immerse layer.
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.
SCREENTIP_LAYERLayer for screentips
LIGHT_DEBUG_LAYERLayer for light overlays
RADIAL_CONTENT_LAYER1000 is an unimportant number, it's just to normalize copied layers

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

DEFAULT_PLANE

Marks out the default plane, even if we don't use it

EMISSIVE_LAYER_UNBLOCKABLE

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

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.

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

MAP_EDITOR_TURF_LAYER

Which layer turfs appear on by default in the map editor. Should be unique!

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_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_EMISSIVE

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

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

RENDER_PLANE_LIGHT_MASK

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

RENDER_PLANE_SPECULAR

We cannot render speculars to ABOVE_LIGHTING, as then they give it alpha and end up masking things in darkness So we need to render it directly to RENDER_PLANE_GAME above RENDER_PLANE_LIGHTING

RENDER_PLANE_TRANSPARENT

Transparent plane that shows openspace underneath the floor

RENDER_PLANE_TURF_LIGHTING

Render plate used by overlay lighting to mask turf lights

RENDER_PLANE_UNLIT_GAME

Main game plane to which everything renders, which then is multiplied by light Should not be lit directly as it is sourced for emissive bloom

RUNECHAT_PLANE

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. Only render plate planes should be above this.

TOPDOWN_TO_EMISSIVE_LAYER

Used to shift all topdown layer emissives to a the game plane equivalent layers, as otherwise they render above everything else due to being KEEP_APART

WATER_LEVEL_LAYER

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