mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-15 01:54:52 +01:00
Hologram Touchup (Init savings edition) (#74793)
## About The Pull Request ### Polishes and Reworks Holograms Hologram generation currently involves a bunch of icon operations, which are slow. Not to mention a series of get flats for the human models, which is even worse. We lose 0.05 seconds of init to em off just the 2 RCD holograms. it hurts man. So instead, let's use filters and render steps to achive the same effect. While I'm here I'll dim the holo light and make it blue, make the hologram and its beam emissive (so they glow), and do some fenangling with move_hologram() (it doesn't clear the hologram off failure anymore, instead relying on callers to do that) to ensure holocalls can't be accidentially ended by moving out of the area. Ah and I added RESET_ALPHA to the emissive appearance flags, cause the alpha does override and fuck with color rendering, which ends up looking dumb. If we're gonna support this stuff it should be first class not accidential. ### Makes Static Not Shit While I'm here (since holograms see static) lets ensure the static plane is always visible if you're seeing through an ai eye. The old solution was limited to applying it to JUST ais, which isn't satisfactory for this sort of thing and missed a LOT of cases (I didn't really get how ai eyes worked before I'ma be honest) I'm adding a signal off the hud for it detecting a change in its eye here. This is semi redundant, but avoids unneeded dupe work, so I'm ok with it. The pipeline here is less sane then I'd like, but it works and that's enough ## Why It's Good For The Game  More pretty, better ux, **static works** ## Changelog 🆑 add: Holograms glow now, pokes at the lighting for holocalls in general a bit to make em nicer. qol: You can no longer accidentally end a holocall (as a non ai) by leaving the area. Felt like garbage fix: Fixes static rendering improperly if viewed by a non ai /🆑
This commit is contained in:
@@ -56,11 +56,6 @@
|
||||
* This should only be used internally. If you are directly creating more of these, you're
|
||||
* almost guaranteed to be doing something wrong.
|
||||
*/
|
||||
/**
|
||||
* Render step that modfies an atom's color
|
||||
* Useful for creating coherent emissive blockers out of things like glass floors by lowering alpha statically using matrixes
|
||||
* Other stuff too I'm sure
|
||||
*/
|
||||
/atom/movable/render_step/emissive_blocker
|
||||
name = "emissive blocker"
|
||||
plane = EMISSIVE_PLANE
|
||||
@@ -69,3 +64,18 @@
|
||||
/atom/movable/render_step/emissive_blocker/Initialize(mapload, source)
|
||||
. = ..()
|
||||
src.color = GLOB.em_block_color
|
||||
|
||||
|
||||
/**
|
||||
* Render step that makes the passed in render source GLOW
|
||||
*
|
||||
* Copies an appearance vis render_target and render_source on to the emissive plane
|
||||
*/
|
||||
/atom/movable/render_step/emissive
|
||||
name = "emissive"
|
||||
plane = EMISSIVE_PLANE
|
||||
appearance_flags = EMISSIVE_APPEARANCE_FLAGS|RESET_TRANSFORM
|
||||
|
||||
/atom/movable/render_step/emissive/Initialize(mapload, source)
|
||||
. = ..()
|
||||
src.color = GLOB.emissive_color
|
||||
|
||||
Reference in New Issue
Block a user