diff --git a/meson.build b/meson.build index 9c8c5ac..3c33930 100644 --- a/meson.build +++ b/meson.build @@ -10,8 +10,8 @@ evol_dep = dependency('evol') subproject('evmod_glfw') evmodglfw_dep = dependency('evmod_glfw') -subproject('evmod_world') -evmodworld_dep = dependency('evmod_world') +subproject('evmod_ecs') +evmodecs_dep = dependency('evmod_ecs') sandbox_incdir = [] @@ -37,7 +37,7 @@ sandbox_exe = executable( dependencies: [ evol_dep, evmodglfw_dep, - evmodworld_dep, + evmodecs_dep, ], install : true, include_directories: sandbox_incdir, diff --git a/src/main.c b/src/main.c index 7e8f8b2..c0f8ff6 100644 --- a/src/main.c +++ b/src/main.c @@ -7,14 +7,26 @@ #define TYPE_MODULE evmod_glfw #include -#define NAMESPACE_MODULE evmod_world +#define TYPE_MODULE evmod_ecs +#include + +#define NAMESPACE_MODULE evmod_ecs #include #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; -} \ No newline at end of file +} diff --git a/subprojects/evmod_world.wrap b/subprojects/evmod_ecs.wrap similarity index 62% rename from subprojects/evmod_world.wrap rename to subprojects/evmod_ecs.wrap index 784f748..3a7d7ba 100644 --- a/subprojects/evmod_world.wrap +++ b/subprojects/evmod_ecs.wrap @@ -1,7 +1,7 @@ [wrap-git] -directory = evmod_world +directory = evmod_ecs url = https://github.com/evol3D/evol-mod-flecs.git revision = master [provide] -dependency_names = evmod_world +dependency_names = evmod_ecs