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

@@ -10,8 +10,8 @@ evol_dep = dependency('evol')
subproject('evmod_glfw') subproject('evmod_glfw')
evmodglfw_dep = dependency('evmod_glfw') evmodglfw_dep = dependency('evmod_glfw')
subproject('evmod_world') subproject('evmod_ecs')
evmodworld_dep = dependency('evmod_world') evmodecs_dep = dependency('evmod_ecs')
sandbox_incdir = [] sandbox_incdir = []
@@ -37,7 +37,7 @@ sandbox_exe = executable(
dependencies: [ dependencies: [
evol_dep, evol_dep,
evmodglfw_dep, evmodglfw_dep,
evmodworld_dep, evmodecs_dep,
], ],
install : true, install : true,
include_directories: sandbox_incdir, include_directories: sandbox_incdir,

View File

@@ -7,14 +7,26 @@
#define TYPE_MODULE evmod_glfw #define TYPE_MODULE evmod_glfw
#include <evol/meta/type_import.h> #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> #include <evol/meta/namespace_import.h>
#define IMPORT_NAMESPACES do { \ #define IMPORT_NAMESPACES do { \
IMPORT_NAMESPACE(World, world_module); \ IMPORT_NAMESPACE(ECS, ecs_module); \
IMPORT_NAMESPACE(Window, window_module); \ IMPORT_NAMESPACE(Window, window_module); \
} while (0) } 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) int main(int argc, char **argv)
{ {
evolengine_t *engine = evol_create(); evolengine_t *engine = evol_create();
@@ -22,19 +34,32 @@ int main(int argc, char **argv)
evol_init(engine); evol_init(engine);
evolmodule_t window_module = evol_loadmodule("window"); assert(window_module); 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; 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; bool result = 0;
while(true) { while(true) {
result |= Window->update(0.0); result |= Window->update(0.0);
result |= World->update(0.0); result |= ECS->update(0.0);
if(result) break; if(result) break;
} }
evol_unloadmodule(world_module); evol_unloadmodule(ecs_module);
evol_unloadmodule(window_module); evol_unloadmodule(window_module);
evol_deinit(engine); evol_deinit(engine);
evol_destroy(engine); evol_destroy(engine);

View File

@@ -1,7 +1,7 @@
[wrap-git] [wrap-git]
directory = evmod_world directory = evmod_ecs
url = https://github.com/evol3D/evol-mod-flecs.git url = https://github.com/evol3D/evol-mod-flecs.git
revision = master revision = master
[provide] [provide]
dependency_names = evmod_world dependency_names = evmod_ecs