mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 18:11:16 +00:00
* Adds emissive carpet, adds plane support to decal element - Adds a basic abstract/debugging emissive carpet - Makes decals capable of supporting plane - Adds auto-smoothing decals * Adds simple neon carpet variations * Adds neon carpet reagents and recipes * Refactors emissive blockers to allow multiple layers of emissive / emissive blocking objects - Splits the emissive and emissive blocker plane masters into several plane masters which handle different layers of emissiveness. * Makes neon carpet tile stacks emissive * Rearranges and docs some emissive plane masters - Folds the overlay lighting plane master into the emissive planes since it is also used to mask the lighting plane * Fixes null mats_per_unit stack recombining after splitting - I think I broke this a while ago when I reworked how stacks handle materials. Whoops. - This basically only effects carpet at the moment. Good thing I did this when I did! * Adds neon carpets to cargo - Adds a cargo supply crate containing a _lot_ of neon carpets for 3000 credits * Fixes neon carpet highlights leaking through vending machines and such - Turns out vending machines axed their own emissive blockers whenever they updated their icon because they cleared their managed_vis_overlays... - Generic emissive blocking has been elementized and some update_overlays procs have been straightened out. * Fixes id_arg_index for the emissive blocker element * Commits @Rohsie's suggestions
46 lines
1.6 KiB
Plaintext
46 lines
1.6 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 = ""
|
|
plane = EMISSIVE_BLOCKER_PLANE
|
|
layer = EMISSIVE_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 = RESET_TRANSFORM
|
|
|
|
/atom/movable/emissive_blocker/Initialize(mapload, source, render_plane = EMISSIVE_BLOCKER_PLANE)
|
|
. = ..()
|
|
verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage?
|
|
|
|
render_source = source
|
|
plane = render_plane
|
|
|
|
/atom/movable/emissive_blocker/ex_act(severity)
|
|
return FALSE
|
|
|
|
/atom/movable/emissive_blocker/singularity_act()
|
|
return
|
|
|
|
/atom/movable/emissive_blocker/singularity_pull()
|
|
return
|
|
|
|
/atom/movable/emissive_blocker/blob_act()
|
|
return
|
|
|
|
/atom/movable/emissive_blocker/onTransitZ()
|
|
return
|
|
|
|
//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 ..()
|