From 2b0ea0524f32d9517eb151b586d26bc3638914d2 Mon Sep 17 00:00:00 2001 From: PJB3005 Date: Wed, 15 Jul 2015 17:22:56 +0200 Subject: [PATCH] gotta go fast! --- code/__DEFINES/lighting.dm | 1 - code/game/turfs/turf.dm | 8 ---- code/modules/lighting/light_source.dm | 49 +++++------------------ code/modules/lighting/lighting_overlay.dm | 10 +---- code/modules/lighting/lighting_system.dm | 28 +------------ code/modules/lighting/lighting_turf.dm | 27 ------------- 6 files changed, 12 insertions(+), 111 deletions(-) diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 3a33365efd4..dbb34def5b6 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -5,7 +5,6 @@ #define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone #define LIGHTING_TRANSITIONS 1 // smooth, animated transitions, similar to /tg/station -#define LIGHTING_RESOLUTION 1 // resolution of the lighting overlays, powers of 2 only, max of 32 #define LIGHTING_LAYER 10 // drawing layer for lighting overlays #define LIGHTING_ICON 'icons/effects/lighting_overlay.dmi' // icon used for lighting shading effects diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 1d212cdc7f6..5631b55820b 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -237,11 +237,7 @@ var/old_opacity = opacity var/old_dynamic_lighting = dynamic_lighting var/list/old_affecting_lights = affecting_lights - #if LIGHTING_RESOLUTION == 1 var/old_lighting_overlay = lighting_overlay - #else - var/old_lighting_overlay = lighting_overlays - #endif if(air_master) air_master.remove_from_active(src) @@ -255,11 +251,7 @@ for(var/turf/space/S in range(W,1)) S.update_starlight() - #if LIGHTING_RESOLUTION == 1 lighting_overlay = old_lighting_overlay - #else - lighting_overlays = old_lighting_overlay - #endif affecting_lights = old_affecting_lights if((old_opacity != opacity) || (dynamic_lighting != old_dynamic_lighting)) diff --git a/code/modules/lighting/light_source.dm b/code/modules/lighting/light_source.dm index 854fddcc2ce..e23d53cf21f 100644 --- a/code/modules/lighting/light_source.dm +++ b/code/modules/lighting/light_source.dm @@ -116,11 +116,7 @@ /datum/light_source/proc/falloff(atom/movable/lighting_overlay/O) #if LIGHTING_FALLOFF == 1 // circular - #if LIGHTING_RESOLUTION == 1 . = (O.x - source_turf.x)**2 + (O.y - source_turf.y)**2 + LIGHTING_HEIGHT - #else - . = (O.x - source_turf.x + O.xoffset)**2 + (O.y - source_turf.y + O.yoffset)**2 + LIGHTING_HEIGHT - #endif #if LIGHTING_LAMBERTIAN == 1 . = CLAMP01((1 - CLAMP01(sqrt(.) / max(1,light_range))) * (1 / (sqrt(. + 1)))) @@ -129,11 +125,7 @@ #endif #elif LIGHTING_FALLOFF == 2 // square - #if LIGHTING_RESOLUTION == 1 . = abs(O.x - source_turf.x) + abs(O.y - source_turf.y) + LIGHTING_HEIGHT - #else - . = abs(O.x - source_turf.x + O.xoffset) + abs(O.y - source_turf.y + O.yoffset) + LIGHTING_HEIGHT - #endif #if LIGHTING_LAMBERTIAN == 1 . = CLAMP01((1 - CLAMP01(. / max(1,light_range))) * (1 / (sqrt(.)**2 + ))) @@ -145,16 +137,15 @@ /datum/light_source/proc/apply_lum() applied = 1 if(istype(source_turf)) - #if LIGHTING_RESOLUTION == 1 for(var/turf/T in dview(light_range, source_turf, INVISIBILITY_LIGHTING)) if(T.lighting_overlay) var/strength = light_power * falloff(T.lighting_overlay) if(!strength) //Don't add turfs that aren't affected to the affected turfs. continue - effect_r[T.lighting_overlay] = round(lum_r * strength, LIGHTING_ROUND_VALUE) - effect_g[T.lighting_overlay] = round(lum_g * strength, LIGHTING_ROUND_VALUE) - effect_b[T.lighting_overlay] = round(lum_b * strength, LIGHTING_ROUND_VALUE) + effect_r += round(lum_r * strength, LIGHTING_ROUND_VALUE) + effect_g += round(lum_g * strength, LIGHTING_ROUND_VALUE) + effect_b += round(lum_b * strength, LIGHTING_ROUND_VALUE) T.lighting_overlay.update_lumcount( round(lum_r * strength, LIGHTING_ROUND_VALUE), @@ -162,48 +153,28 @@ round(lum_b * strength, LIGHTING_ROUND_VALUE) ) - if(!T.affecting_lights) - T.affecting_lights = list() - - T.affecting_lights += src - effect_turf += T - - #else - for(var/turf/T in dview(light_range, source_turf, INVISIBILITY_LIGHTING)) - for(var/atom/movable/lighting_overlay/L in T.lighting_overlays) - var/strength = light_power * falloff(L) - - effect_r[L] = round(lum_r * strength, LIGHTING_ROUND_VALUE) - effect_g[L] = round(lum_g * strength, LIGHTING_ROUND_VALUE) - effect_b[L] = round(lum_b * strength, LIGHTING_ROUND_VALUE) - - L.update_lumcount( - round(lum_r * strength, LIGHTING_ROUND_VALUE), - round(lum_g * strength, LIGHTING_ROUND_VALUE), - round(lum_b * strength, LIGHTING_ROUND_VALUE) - ) + else + effect_r += 0 + effect_g += 0 + effect_b += 0 if(!T.affecting_lights) T.affecting_lights = list() T.affecting_lights += src effect_turf += T - #endif /datum/light_source/proc/remove_lum() applied = 0 + var/i = 1 for(var/turf/T in effect_turf) if(T.affecting_lights) T.affecting_lights -= src - #if LIGHTING_RESOLUTION == 1 if(T.lighting_overlay) - T.lighting_overlay.update_lumcount(-effect_r[T.lighting_overlay], -effect_g[T.lighting_overlay], -effect_b[T.lighting_overlay]) - #else - for(var/atom/movable/lighting_overlay/L in T.lighting_overlays) - L.lighting_overlay.update_lumcount(-effect_r[L], -effect_g[L], -effect_b[L]) - #endif + T.lighting_overlay.update_lumcount(-effect_r[i], -effect_g[i], -effect_b[i]) + i++ effect_r.Cut() effect_g.Cut() diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm index d40997a6fcd..0a20a7977c2 100644 --- a/code/modules/lighting/lighting_overlay.dm +++ b/code/modules/lighting/lighting_overlay.dm @@ -9,16 +9,12 @@ invisibility = INVISIBILITY_LIGHTING blend_mode = BLEND_MULTIPLY color = "#000000" + icon_state = "light1" var/lum_r var/lum_g var/lum_b - #if LIGHTING_RESOLUTION != 1 - var/xoffset - var/yoffset - #endif - var/needs_update /atom/movable/lighting_overlay/New() @@ -107,11 +103,7 @@ var/turf/T = loc if(istype(T)) - #if LIGHTING_RESOLUTION == 1 T.lighting_overlay = null - #else - T.lighting_overlays -= src - #endif for(var/datum/light_source/D in T.affecting_lights) //Remove references to us on the light sources affecting us. D.effect_r -= src D.effect_g -= src diff --git a/code/modules/lighting/lighting_system.dm b/code/modules/lighting/lighting_system.dm index 6d5e1b9bbd7..418190ca7a2 100644 --- a/code/modules/lighting/lighting_system.dm +++ b/code/modules/lighting/lighting_system.dm @@ -5,28 +5,15 @@ // duplicates lots of code, but this proc needs to be as fast as possible. /proc/create_lighting_overlays(zlevel = 0) - var/state = "light[LIGHTING_RESOLUTION]" var/area/A if(zlevel == 0) // populate all zlevels for(var/turf/T in world) if(T.dynamic_lighting) A = T.loc if(A.lighting_use_dynamic) - #if LIGHTING_RESOLUTION == 1 var/atom/movable/lighting_overlay/O = new(T) - O.icon_state = state T.lighting_overlay = O - #else - for(var/i = 0; i < LIGHTING_RESOLUTION; i++) - for(var/j = 0; j < LIGHTING_RESOLUTION; j++) - var/atom/movable/lighting_overlay/O = new(T) - O.pixel_x = i * (32 / LIGHTING_RESOLUTION) - O.pixel_y = j * (32 / LIGHTING_RESOLUTION) - O.xoffset = (((2*i + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.yoffset = (((2*j + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.icon_state = state - T.lighting_overlays += O - #endif + else for(var/x = 1; x <= world.maxx; x++) for(var/y = 1; y <= world.maxy; y++) @@ -34,18 +21,5 @@ if(T.dynamic_lighting) A = T.loc if(A.lighting_use_dynamic) - #if LIGHTING_RESOLUTION == 1 var/atom/movable/lighting_overlay/O = new(T) - O.icon_state = state T.lighting_overlay = O - #else - for(var/i = 0; i < LIGHTING_RESOLUTION; i++) - for(var/j = 0; j < LIGHTING_RESOLUTION; j++) - var/atom/movable/lighting_overlay/O = new(T) - O.pixel_x = i * (32 / LIGHTING_RESOLUTION) - O.pixel_y = j * (32 / LIGHTING_RESOLUTION) - O.xoffset = (((2*i + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.yoffset = (((2*j + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.icon_state = state - T.lighting_overlays += O - #endif \ No newline at end of file diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm index 8bb30c4c707..46596bc52f4 100644 --- a/code/modules/lighting/lighting_turf.dm +++ b/code/modules/lighting/lighting_turf.dm @@ -1,47 +1,20 @@ /turf var/list/affecting_lights - #if LIGHTING_RESOLUTION == 1 var/atom/movable/lighting_overlay/lighting_overlay - #else - var/list/lighting_overlays[0] - #endif /turf/proc/reconsider_lights() for(var/datum/light_source/L in affecting_lights) L.force_update() /turf/proc/lighting_clear_overlays() - #if LIGHTING_RESOLUTION == 1 if(lighting_overlay) qdel(lighting_overlay) - #else - for(var/atom/movable/lighting_overlay/L in lighting_overlays) - qdel(L) - #endif /turf/proc/lighting_build_overlays() - #if LIGHTING_RESOLUTION == 1 if(lighting_overlay) - #else - if(lighting_overlays.len) - #endif return - var/state = "light[LIGHTING_RESOLUTION]" var/area/A = loc if(A.lighting_use_dynamic) - #if LIGHTING_RESOLUTION == 1 var/atom/movable/lighting_overlay/O = new(src) - O.icon_state = state lighting_overlay = O - #else - for(var/i = 0; i < LIGHTING_RESOLUTION; i++) - for(var/j = 0; j < LIGHTING_RESOLUTION; j++) - var/atom/movable/lighting_overlay/O = new(src) - O.pixel_x = i * (32 / LIGHTING_RESOLUTION) - O.pixel_y = j * (32 / LIGHTING_RESOLUTION) - O.xoffset = (((2*i + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.yoffset = (((2*j + 1) / (LIGHTING_RESOLUTION * 2)) - 0.5) - O.icon_state = state - lighting_overlays += O - #endif \ No newline at end of file