mirror of
https://github.com/zoriya/Gamacon.git
synced 2025-12-06 02:36:09 +00:00
Adding an option to not free the scene on switching
This commit is contained in:
@@ -36,7 +36,7 @@ struct gc_engine
|
||||
void (*handle_events)(gc_engine *engine);
|
||||
int (*game_loop)(gc_engine *engine, float dtime);
|
||||
void (*draw)(gc_engine *engine);
|
||||
int (*change_scene)(gc_engine *engine, gc_scene *scene);
|
||||
int (*change_scene)(gc_engine *engine, gc_scene *scene, bool free_old);
|
||||
void (*destroy)(gc_engine *engine);
|
||||
|
||||
gc_list *systems;
|
||||
@@ -82,7 +82,7 @@ void engine_stop_music(gc_engine *engine);
|
||||
void engine_on_resize(gc_engine *engine, gc_vector2 size);
|
||||
gc_vector2 engine_get_screen_size(gc_engine *this);
|
||||
|
||||
int change_scene(gc_engine *engine, gc_scene *scene);
|
||||
int change_scene(gc_engine *engine, gc_scene *scene, bool free_old_scene);
|
||||
|
||||
void engine_add_builtin_systems(gc_engine *engine);
|
||||
void *engine_get_system(gc_engine *engine, const char *name);
|
||||
|
||||
@@ -66,12 +66,12 @@ void engine_setup_event(gc_engine *engine)
|
||||
engine->trigger_event = &engine_trigger_event;
|
||||
}
|
||||
|
||||
int change_scene(gc_engine *engine, gc_scene *scene)
|
||||
int change_scene(gc_engine *engine, gc_scene *scene, bool free)
|
||||
{
|
||||
void *music = scene->get_data(scene, "music", NULL);
|
||||
|
||||
engine->stop_music(engine);
|
||||
if (engine->scene)
|
||||
if (engine->scene && free)
|
||||
engine->scene->destroy(engine->scene);
|
||||
engine->scene = scene;
|
||||
if (music)
|
||||
|
||||
Reference in New Issue
Block a user