mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
* Adds lazyloading to the asset subsystems (#69454) * Adds lazyloading to the asset subsystems This currently applies only to spritesheets because of how monumentally expensive they are. If an asset is requested it will immediately be fully loaded, but otherwise we slowly load them in with a separate subsystem. This allows us to not hold up initialize with hair stuff. Saves roughly 33% (16 seconds with LOW_MEMORY_MODE) of initialize on my machine My target is something closer to the 9 second init that had back in 2019, this is a good first step. Lets see how much more we can do yeah lads? Co-authored-by: san7890 <the@ san7890.com> * Adds lazyloading to the asset subsystems Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: san7890 <the@ san7890.com>
20 lines
618 B
Plaintext
20 lines
618 B
Plaintext
/// Allows us to lazyload asset datums
|
|
/// Anything inserted here will fully load if directly gotten
|
|
/// So this just serves to remove the requirement to load assets fully during init
|
|
SUBSYSTEM_DEF(asset_loading)
|
|
name = "Asset Loading"
|
|
priority = FIRE_PRIORITY_ASSETS
|
|
flags = SS_NO_INIT
|
|
runlevels = RUNLEVEL_LOBBY|RUNLEVELS_DEFAULT
|
|
var/list/datum/asset/generate_queue = list()
|
|
|
|
/datum/controller/subsystem/asset_loading/fire(resumed)
|
|
while(length(generate_queue))
|
|
var/datum/asset/to_load = generate_queue[generate_queue.len]
|
|
|
|
to_load.queued_generation()
|
|
|
|
if(MC_TICK_CHECK)
|
|
return
|
|
generate_queue.len--
|