From d19efeba8b9ff22522b64d0960bb7b74ce0af370 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 18 Apr 2017 18:02:23 -0500 Subject: [PATCH] Speeds up lighting initialization --- code/__DEFINES/lighting.dm | 9 ++++++++- code/__DEFINES/misc.dm | 7 ------- code/controllers/subsystem/lighting.dm | 3 ++- code/game/area/areas.dm | 2 ++ code/modules/lighting/lighting_setup.dm | 22 +++++++++------------- 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 32b4e6059f..fd98a68e07 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -71,4 +71,11 @@ #define LIGHTING_PLANE_ALPHA_VISIBLE 255 #define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 128 //For lighting alpha, small amounts lead to big changes. even at 128 its hard to figure out what is dark and what is light, at 64 you almost can't even tell. -#define LIGHTING_PLANE_ALPHA_INVISIBLE 0 \ No newline at end of file +#define LIGHTING_PLANE_ALPHA_INVISIBLE 0 + +//lighting area defines +#define DYNAMIC_LIGHTING_DISABLED 0 //dynamic lighting disabled (area stays at full brightness) +#define DYNAMIC_LIGHTING_ENABLED 1 //dynamic lighting enabled +#define DYNAMIC_LIGHTING_FORCED 2 //dynamic lighting enabled even if the area doesn't require power +#define DYNAMIC_LIGHTING_IFSTARLIGHT 3 //dynamic lighting enabled only if starlight is. +#define IS_DYNAMIC_LIGHTING(A) A.dynamic_lighting \ No newline at end of file diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index bacd49f0e3..efb9b3addf 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -221,13 +221,6 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) -//lighting area defines -#define DYNAMIC_LIGHTING_DISABLED 0 //dynamic lighting disabled (area stays at full brightness) -#define DYNAMIC_LIGHTING_ENABLED 1 //dynamic lighting enabled -#define DYNAMIC_LIGHTING_FORCED 2 //dynamic lighting enabled even if the area doesn't require power -#define DYNAMIC_LIGHTING_IFSTARLIGHT 3 //dynamic lighting enabled only if starlight is. -#define IS_DYNAMIC_LIGHTING(A) ( A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT ? config.starlight : A.dynamic_lighting ) - //subtypesof(), typesof() without the parent path #define subtypesof(typepath) ( typesof(typepath) - typepath ) diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index a6547cd903..ebe914c7a1 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -16,7 +16,8 @@ SUBSYSTEM_DEF(lighting) /datum/controller/subsystem/lighting/Initialize(timeofday) if (config.starlight) - for(var/area/A in world) + for(var/I in GLOB.sortedAreas) + var/area/A = I if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) A.luminosity = 0 diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index f346da191a..f3e2de241f 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -116,6 +116,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) luminosity = 0 else if(dynamic_lighting != DYNAMIC_LIGHTING_IFSTARLIGHT) dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + if(dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) + dynamic_lighting = config.starlight ? DYNAMIC_LIGHTING_ENABLED : DYNAMIC_LIGHTING_DISABLED ..() diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm index f94c713bab..236f873aa8 100644 --- a/code/modules/lighting/lighting_setup.dm +++ b/code/modules/lighting/lighting_setup.dm @@ -1,19 +1,15 @@ /proc/create_all_lighting_objects() - for (var/zlevel = 1 to world.maxz) - create_lighting_objects_zlevel(zlevel) + for(var/I in GLOB.sortedAreas) + var/area/A = I -/proc/create_lighting_objects_zlevel(zlevel) - ASSERT(zlevel) - var/turf/T - var/thing - for (thing in block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))) - T = thing - if (!IS_DYNAMIC_LIGHTING(T)) + if(!IS_DYNAMIC_LIGHTING(A)) continue - var/area/A = T.loc - if (!IS_DYNAMIC_LIGHTING(A)) - continue + for(var/turf/T in A) - new/atom/movable/lighting_object(T, TRUE) + if(!IS_DYNAMIC_LIGHTING(T)) + continue + + new/atom/movable/lighting_object(T, TRUE) + CHECK_TICK CHECK_TICK