Files
Gamacon/include/scene.h
T
AnonymusRaccoon da2f00aea4 Adding prefabs id
2020-03-09 12:02:55 +01:00

42 lines
1.3 KiB
C

/*
** EPITECH PROJECT, 2019
** Gamacon
** File description:
** scene
*/
typedef struct gc_scene gc_scene;
#pragma once
#include "engine.h"
#include "entity.h"
#include "list.h"
#include "tupple.h"
#include <stdbool.h>
struct gc_scene
{
gc_list *data;
void *(*get_data)(gc_scene *scene, const char *type, const char *name);
void (*add_callback)(gc_scene *scene, const char *name, void *func);
void (*destroy)(gc_scene *scene);
gc_list *entities;
gc_tupple *entities_by_cmp;
int (*add_entity)(gc_scene *scene, gc_entity *entity);
gc_entity *(*get_entity)(gc_scene *scene, int id);
gc_list *(*get_entity_by_cmp)(gc_scene *scene, const char *cmp_name);
void (*load_entity)(gc_scene *this, gc_engine *engine, node *xml, int pref);
gc_list *callbacks;
callback_t (*get_callback)(gc_scene *this, char *name);
};
callback_t scene_get_callback(gc_scene *scene, char *name);
gc_scene *scene_create(gc_engine *engine, const char *mappath);
void scene_load_data(gc_engine *engine, gc_scene *scene, node *n);
void *scene_get_data(gc_scene *scene, const char *type, const char *name);
void scene_add_callback(gc_scene *scene, const char *name, void *func);
void scene_destroy(gc_scene *scene);
void scene_load_entity(gc_scene *this, gc_engine *engine, node *n, int prefab);