Added ECS Module

Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
2021-03-28 09:25:08 +02:00
parent a2a1c7bd80
commit 19143a0ee1
3 changed files with 36 additions and 11 deletions

View File

@@ -7,14 +7,26 @@
#define TYPE_MODULE evmod_glfw
#include <evol/meta/type_import.h>
#define NAMESPACE_MODULE evmod_world
#define TYPE_MODULE evmod_ecs
#include <evol/meta/type_import.h>
#define NAMESPACE_MODULE evmod_ecs
#include <evol/meta/namespace_import.h>
#define IMPORT_NAMESPACES do { \
IMPORT_NAMESPACE(World, world_module); \
IMPORT_NAMESPACE(ECS, ecs_module); \
IMPORT_NAMESPACE(Window, window_module); \
} while (0)
typedef struct Cmp1 {
I32 dummy_i32;
} Component1;
typedef struct Cmp2 {
I16 dummy_i16;
F32 dummy_f32;
} Component2;
int main(int argc, char **argv)
{
evolengine_t *engine = evol_create();
@@ -22,21 +34,34 @@ int main(int argc, char **argv)
evol_init(engine);
evolmodule_t window_module = evol_loadmodule("window"); assert(window_module);
evolmodule_t world_module = evol_loadmodule("world"); assert(world_module);
evolmodule_t ecs_module = evol_loadmodule("ecs"); assert(ecs_module);
IMPORT_NAMESPACES;
ECS->newScene();
ECSEntityID ent1 = ECS->createEntity();
ECSComponentID Cmp1_ID = ECS->registerComponent("Component1", sizeof(Component1), EV_ALIGNOF(Component1));
ECSComponentID Cmp2_ID = ECS->registerComponent("Component2", sizeof(Component2), EV_ALIGNOF(Component2));
Component1 c1 = { 555 };
Component2 c2 = { 123, 456.789 };
ECS->addComponent(ent1, Cmp1_ID, sizeof(Component1), &c1);
ECS->addComponent(ent1, Cmp2_ID, sizeof(Component2), &c2);
bool result = 0;
while(true) {
result |= Window->update(0.0);
result |= World->update(0.0);
result |= ECS->update(0.0);
if(result) break;
}
evol_unloadmodule(world_module);
evol_unloadmodule(ecs_module);
evol_unloadmodule(window_module);
evol_deinit(engine);
evol_destroy(engine);
return 0;
}
}