Revert "Merge pull request #4779 from Neerti/2/1/2018_make_the_sun_not_lag_again"

This reverts commit f4df29713d, reversing
changes made to 337e5e7436.
This commit is contained in:
Leshana
2018-04-18 18:08:16 -04:00
parent 35b60f19f8
commit 471e544a61
5 changed files with 2 additions and 144 deletions
+1 -18
View File
@@ -5,7 +5,6 @@
var/datum/light_source/light
var/list/light_sources
var/light_datum_type = /datum/light_source
// Nonsensical value for l_color default, so we can detect if it gets set to null.
#define NONSENSICAL_VALUE -99999
@@ -42,7 +41,7 @@
if(light)
light.update(.)
else
light = new light_datum_type(src, .)
light = new /datum/light_source(src, .)
/atom/New()
. = ..()
@@ -110,19 +109,3 @@
/obj/item/dropped()
. = ..()
update_light()
/obj/effect/sun
name = "sun"
desc ="SUNTHESUNTHESUNTHESUNTHE"
icon = 'icons/effects/effects.dmi'
icon_state = "sun"
invisibility = 100
anchored = TRUE
light_datum_type = /datum/light_source/sun
light_color = "#FFFFFF"
light_range = 65
/obj/effect/sun/Destroy(force = FALSE)
if(!force)
return QDEL_HINT_LETMELIVE
return ..()
-100
View File
@@ -284,106 +284,6 @@
C.affecting -= src
effect_str -= C
#define APPLY_CORNER_NO_FALLOFF(C) \
. = 1; \
. *= light_power; \
\
effect_str[C] = .; \
\
C.update_lumcount \
( \
. * applied_lum_r, \
. * applied_lum_g, \
. * applied_lum_b \
);
// Special snowflake subtype used to light the Surface.
// The big differences is that this ignores FOV calculations (and as such doesn't use DVIEW) and instead applies it to all
// 'outdoor' turfs within range.
// Another difference is it has no falloff, meaning that it creates a big flat square instead of a circle that gets darker towards the edges.
/datum/light_source/sun
/datum/light_source/sun/recalc_corner(var/datum/lighting_corner/C)
if(effect_str.Find(C)) // Already have one.
REMOVE_CORNER(C)
APPLY_CORNER_NO_FALLOFF(C)
/datum/light_source/sun/apply_lum()
var/static/update_gen = 1
applied = 1
// Keep track of the last applied lum values so that the lighting can be reversed
applied_lum_r = lum_r
applied_lum_g = lum_g
applied_lum_b = lum_b
for(var/thing in RANGE_TURFS(light_range, source_turf) )
var/turf/T = thing
if(!T.lighting_corners_initialised)
T.generate_missing_corners()
if(!T.outdoors)
continue
for(var/datum/lighting_corner/C in T.get_corners())
if(C.update_gen == update_gen)
continue
C.update_gen = update_gen
C.affecting += src
if(!C.active)
effect_str[C] = 0
continue
APPLY_CORNER_NO_FALLOFF(C)
if(!T.affecting_lights)
T.affecting_lights = list()
T.affecting_lights += src
affecting_turfs += T
update_gen++
/datum/light_source/sun/smart_vis_update()
var/list/datum/lighting_corner/corners = list()
var/list/turf/turfs = list()
for(var/thing in RANGE_TURFS(light_range, source_turf) )
var/turf/T = thing
if(!T.lighting_corners_initialised)
T.generate_missing_corners()
corners |= T.get_corners()
turfs += T
var/list/L = turfs - affecting_turfs // New turfs, add us to the affecting lights of them.
affecting_turfs += L
for(var/turf/T in L)
if(!T.affecting_lights)
T.affecting_lights = list(src)
else
T.affecting_lights += src
L = affecting_turfs - turfs // Now-gone turfs, remove us from the affecting lights.
affecting_turfs -= L
for(var/turf/T in L)
T.affecting_lights -= src
for(var/datum/lighting_corner/C in corners - effect_str) // New corners
C.affecting += src
if(!C.active)
effect_str[C] = 0
continue
APPLY_CORNER_NO_FALLOFF(C)
for(var/datum/lighting_corner/C in effect_str - corners) // Old, now gone, corners.
REMOVE_CORNER(C)
C.affecting -= src
effect_str -= C
#undef effect_update
#undef LUM_FALLOFF
#undef REMOVE_CORNER
+1 -18
View File
@@ -13,13 +13,12 @@
var/sun_position = 0 // 0 means midnight, 1 means noon.
var/list/sun = list("range","brightness","color")
var/list/expected_z_levels = list()
var/expected_z_levels = list()
var/turf/unsimulated/wall/planetary/planetary_wall_type = /turf/unsimulated/wall/planetary
var/list/turf/simulated/floor/planet_floors = list()
var/list/turf/unsimulated/wall/planetary/planet_walls = list()
var/list/obj/effect/sun/planet_suns = list()
var/needs_work = 0 // Bitflags to signal to the planet controller these need (properly deferrable) work. Flags defined in controller.
@@ -28,8 +27,6 @@
..()
weather_holder = new(src)
current_time = current_time.make_random_time()
if(expected_z_levels.len)
build_suns()
update_sun()
/datum/planet/proc/process(amount)
@@ -53,17 +50,3 @@
sun["color"] = new_color
needs_work |= PLANET_PROCESS_SUN
/datum/planet/proc/build_suns()
var/desired_suns_per_row = 15
var/sun_spacing = Ceiling(max(world.maxx, world.maxy) / desired_suns_per_row)
for(var/z_level in expected_z_levels) // Z
for(var/i = 1 to desired_suns_per_row) // X
for(var/j = 1 to desired_suns_per_row) // Y
var/turf/T = locate(i * sun_spacing, j * sun_spacing, z_level)
if(T) // We might've walked off the map if this is null.
var/obj/effect/sun/new_sun = new(T)
new_sun.light_range = sun_spacing-1
planet_suns += new_sun