mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-18 18:46:24 +01:00
Revert "Merge pull request #4779 from Neerti/2/1/2018_make_the_sun_not_lag_again"
This reverts commitf4df29713d, reversing changes made to337e5e7436.
This commit is contained in:
@@ -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 ..()
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user