mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-15 01:46:30 +01:00
94d92803b4
Depends on #21458. Ports https://github.com/cmss13-devs/cmss13/pull/4229, with the original authors as: - https://github.com/tgstation/TerraGov-Marine-Corps/pull/1964 for the lighting controller (A-lexa) - https://github.com/tgstation/TerraGov-Marine-Corps/pull/4747 and https://github.com/tgstation/TerraGov-Marine-Corps/pull/7263 for the lighting (TiviPlus) - https://github.com/tgstation/tgstation/pull/54520 for the dir lighting component - https://github.com/tgstation/tgstation/pull/75018 for the out of bounds fix in lighting - https://github.com/tgstation/TerraGov-Marine-Corps/pull/6678 for the emissives (TiviPlus) The main driving reason behind this is that current lighting consumes way too much processing power, especially for things like odysseys/away sites where a billion light sources are processing/moving at once and the game slows down to a crawl. Hopefully this improves the situation by a good margin, but we will need some testmerging to confirm that. <img width="1349" height="1349" alt="image" src="https://github.com/user-attachments/assets/1059ba2b-c0c5-495a-9c76-2d75d0c42bf2" /> <img width="1349" height="1349" alt="image" src="https://github.com/user-attachments/assets/9704b0f6-4cf6-4dfd-a6cb-5702ad07d677" /> - [x] Resolve todos - [x] Look into open space fuckery (border objects) --------- Co-authored-by: Matt Atlas <liermattia@gmail.com> Co-authored-by: JohnWildkins <john.wildkins@gmail.com>
35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
/**
|
|
* Internal atom that copies an appearance on to the blocker plane
|
|
*
|
|
* Copies an appearance vis render_target and render_source on to the emissive blocking plane.
|
|
* This means that the atom in question will block any emissive sprites.
|
|
* This should only be used internally. If you are directly creating more of these, you're
|
|
* almost guaranteed to be doing something wrong.
|
|
*/
|
|
/atom/movable/emissive_blocker
|
|
name = "emissive blocker"
|
|
plane = EMISSIVE_PLANE
|
|
layer = FLOAT_LAYER
|
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
|
//Why?
|
|
//render_targets copy the transform of the target as well, but vis_contents also applies the transform
|
|
//to what's in it. Applying RESET_TRANSFORM here makes vis_contents not apply the transform.
|
|
//Since only render_target handles transform we don't get any applied transform "stacking"
|
|
appearance_flags = EMISSIVE_APPEARANCE_FLAGS
|
|
|
|
/atom/movable/emissive_blocker/Initialize(mapload, source)
|
|
. = ..()
|
|
verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage?
|
|
|
|
render_source = source
|
|
color = GLOB.em_block_color
|
|
|
|
|
|
/atom/movable/emissive_blocker/ex_act(severity)
|
|
return FALSE
|
|
|
|
//Prevents people from moving these after creation, because they shouldn't be.
|
|
/atom/movable/emissive_blocker/forceMove(atom/destination, no_tp=FALSE, harderforce = FALSE)
|
|
if(harderforce)
|
|
return ..()
|