HATPC/scene.c

43 lines
959 B
C

#include "scene.h"
void init_scene(Scene_t *scene, SceneType_t scene_type, system_func_t render_func)
{
sc_map_init_64(&scene->action_map, 32, 0);
sc_queue_init(&scene->action_queue);
sc_array_init(&scene->systems);
init_entity_manager(&scene->ent_manager);
scene->scene_type = scene_type;
scene->render_function = render_func;
scene->paused = false;
scene->has_ended = false;
}
void free_scene(Scene_t *scene)
{
sc_map_term_64(&scene->action_map);
sc_queue_term(&scene->action_queue);
sc_array_term(&scene->systems);
free_entity_manager(&scene->ent_manager);
}
inline void update_scene(Scene_t *scene)
{
system_func_t sys;
sc_array_foreach(&scene->systems, sys)
{
sys(scene);
}
}
inline void render_scene(Scene_t *scene)
{
scene->render_function(scene);
}
inline void queue_action(Scene_t *scene, ActionType_t action)
{
sc_queue_add_last(&scene->action_queue, action);
}