From 2408c03579d0ebdce23dfe75093567d28482e287 Mon Sep 17 00:00:00 2001 From: Daniel Bross Date: Wed, 2 Jul 2025 23:33:11 +0200 Subject: [PATCH] load_scene now set the loaded scene as the current scene by default. It is opt-out with make_current=false --- core/scene.jai | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/scene.jai b/core/scene.jai index 1ba4fad..56d568e 100644 --- a/core/scene.jai +++ b/core/scene.jai @@ -44,11 +44,16 @@ visitor :: (info : *File_Visit_Info, files: *[..] Entity_File_Info) { } } -load_scene :: (name: string) -> *Scene { +load_scene :: (name: string, make_current: bool = true) -> *Scene { scene := create_scene(name, 1024); + + if make_current { + engine.current_scene = scene; + } + scene.mode = engine.mode; - if engine.procs.on_scene_loaded != null { + if engine.procs.on_pre_scene_loaded != null { engine.procs.on_pre_scene_loaded(scene, engine.mode); } @@ -143,17 +148,15 @@ unload_scene :: (scene: *Scene) { } switch_to_scene :: (scene_name: string) { + prev := engine.current_scene; new_scene := load_scene(scene_name); - - unload_scene(engine.current_scene); - - engine.current_scene = new_scene; + unload_scene(prev); } reload_scene :: (scene: *Scene) { name := copy_temporary_string(scene.name); unload_scene(engine.current_scene); - engine.current_scene = load_scene(name); + load_scene(name); } create_scene :: (name: string = "", max_entities: s64 = 256) -> *Scene {