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