Added ECS Module
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
37
src/main.c
37
src/main.c
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user