diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c3d7449b657..47859e4bb5a 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -58,6 +58,13 @@ var/list/airlock_overlays = list() var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass" var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' + var/image/old_frame_overlay //keep those in order to prevent unnecessary updating + var/image/old_filling_overlay + var/image/old_lights_overlay + var/image/old_panel_overlay + var/image/old_weld_overlay + var/image/old_sparks_overlay + explosion_block = 1 /obj/machinery/door/airlock/New() @@ -312,13 +319,31 @@ About the new airlock wires panel: if(p_open) panel_overlay = get_airlock_overlay("panel_opening", overlays_file) - overlays.Cut() - overlays += frame_overlay - overlays += filling_overlay - overlays += lights_overlay - overlays += panel_overlay - overlays += weld_overlay - overlays += sparks_overlay + //doesn't use overlays.Cut() for performance reasons + if(frame_overlay != old_frame_overlay) + overlays -= old_frame_overlay + overlays += frame_overlay + old_frame_overlay = frame_overlay + if(filling_overlay != old_filling_overlay) + overlays -= old_filling_overlay + overlays += filling_overlay + old_filling_overlay = filling_overlay + if(lights_overlay != old_lights_overlay) + overlays -= old_lights_overlay + overlays += lights_overlay + old_lights_overlay = lights_overlay + if(panel_overlay != old_panel_overlay) + overlays -= old_panel_overlay + overlays += panel_overlay + old_panel_overlay = panel_overlay + if(weld_overlay != old_weld_overlay) + overlays -= old_weld_overlay + overlays += weld_overlay + old_weld_overlay = weld_overlay + if(sparks_overlay != old_sparks_overlay) + overlays -= old_sparks_overlay + overlays += sparks_overlay + old_sparks_overlay = sparks_overlay /proc/get_airlock_overlay(icon_state, icon_file) var/iconkey = "[icon_state][icon_file]"