Adding an option to not free the scene on switching

This commit is contained in:
Anonymus Raccoon
2020-05-03 20:06:17 +02:00
parent 873f0cef56
commit b034b325b6
2 changed files with 4 additions and 4 deletions

View File

@@ -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);

View File

@@ -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)