pawengine/object.h
2025-02-24 20:11:51 +01:00

42 lines
1 KiB
C

#ifndef INCLUDE_WAYLANDCLIENT_OBJECT_H_
#define INCLUDE_WAYLANDCLIENT_OBJECT_H_
#include "dynarray.h"
// #include "vulkan_internal.h"
dyn_array_define(da_Object, struct Object *);
dyn_array_define(da_Named, struct Named);
struct Scene {
struct Vk *vk;
struct Mem *mem;
struct da_Object objects;
struct da_Object insert_queue;
struct da_Named named;
struct Register *reg;
float delta_secs;
long msecs;
};
struct Object {
struct Type *type;
void *data;
};
struct Named {
const char *id;
struct Object *object;
};
struct Scene *make_scene(struct Vk *vk, struct Register *reg);
void free_scene(struct Scene *scene);
void scene_tick(struct Scene *scene);
void scene_queue_insert(struct Scene *scene, char *name, void *object_data);
void scene_register_named(struct Scene *scene, const char *id,
struct Object *object);
void scene_unregister_named(struct Scene *scene, const char *id);
struct Object *scene_get_named(struct Scene *scene, const char *id);
#endif // INCLUDE_WAYLANDCLIENT_OBJECT_H_