27
src/main.c
27
src/main.c
@@ -1,4 +1,5 @@
|
|||||||
#include <evol/evol.h>
|
#include <evol/evol.h>
|
||||||
|
#include <evol/common/ev_log.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#define NAMESPACE_MODULE evmod_glfw
|
#define NAMESPACE_MODULE evmod_glfw
|
||||||
@@ -27,30 +28,48 @@ typedef struct Cmp2 {
|
|||||||
F32 dummy_f32;
|
F32 dummy_f32;
|
||||||
} Component2;
|
} Component2;
|
||||||
|
|
||||||
|
int cmp12(ECSQuery query)
|
||||||
|
{
|
||||||
|
Component1 *cmp1 = ECS->getQueryColumn(query, sizeof(Component1), 1);
|
||||||
|
Component2 *cmp2 = ECS->getQueryColumn(query, sizeof(Component2), 2);
|
||||||
|
U32 count = ECS->getQueryMatchCount(query);
|
||||||
|
|
||||||
|
for(int i = 1; i <= count; ++i) {
|
||||||
|
ev_log_trace("Iteration #%d, cmp1: {%d}", i, cmp1[i-1].dummy_i32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
evolengine_t *engine = evol_create();
|
evolengine_t *engine = evol_create();
|
||||||
evol_parse_args(engine, argc, argv);
|
evol_parse_args(engine, argc, argv);
|
||||||
evol_init(engine);
|
evol_init(engine);
|
||||||
|
|
||||||
evolmodule_t window_module = evol_loadmodule("window"); assert(window_module);
|
evolmodule_t window_module = evol_loadmodule("window"); DEBUG_ASSERT(window_module);
|
||||||
evolmodule_t ecs_module = evol_loadmodule("ecs"); assert(ecs_module);
|
evolmodule_t ecs_module = evol_loadmodule("ecs"); DEBUG_ASSERT(ecs_module);
|
||||||
|
|
||||||
IMPORT_NAMESPACES;
|
IMPORT_NAMESPACES;
|
||||||
|
|
||||||
ECS->newScene();
|
ECS->newScene();
|
||||||
|
|
||||||
ECSEntityID ent1 = ECS->createEntity();
|
ECSEntityID ent1 = ECS->createEntity();
|
||||||
|
ECSEntityID ent2 = ECS->createEntity();
|
||||||
|
|
||||||
ECSComponentID Cmp1_ID = ECS->registerComponent("Component1", sizeof(Component1), EV_ALIGNOF(Component1));
|
ECSComponentID Cmp1_ID = ECS->registerComponent("Component1", sizeof(Component1), EV_ALIGNOF(Component1));
|
||||||
ECSComponentID Cmp2_ID = ECS->registerComponent("Component2", sizeof(Component2), EV_ALIGNOF(Component2));
|
ECSComponentID Cmp2_ID = ECS->registerComponent("Component2", sizeof(Component2), EV_ALIGNOF(Component2));
|
||||||
|
|
||||||
Component1 c1 = { 555 };
|
Component1 c11 = { 555 };
|
||||||
Component2 c2 = { 123, 456.789 };
|
Component2 c2 = { 123, 456.789 };
|
||||||
|
Component1 c12 = { 444 };
|
||||||
|
|
||||||
ECS->addComponent(ent1, Cmp1_ID, sizeof(Component1), &c1);
|
ECS->addComponent(ent1, Cmp1_ID, sizeof(Component1), &c11);
|
||||||
ECS->addComponent(ent1, Cmp2_ID, sizeof(Component2), &c2);
|
ECS->addComponent(ent1, Cmp2_ID, sizeof(Component2), &c2);
|
||||||
|
|
||||||
|
ECS->addComponent(ent2, Cmp1_ID, sizeof(Component1), &c12);
|
||||||
|
ECS->addComponent(ent2, Cmp2_ID, sizeof(Component2), &c2);
|
||||||
|
|
||||||
|
ECS->registerSystem("Component1, Component2", EV_ECS_PIPELINE_STAGE_UPDATE, cmp12, "cmp12");
|
||||||
|
|
||||||
bool result = 0;
|
bool result = 0;
|
||||||
while(true) {
|
while(true) {
|
||||||
result |= Window->update(0.0);
|
result |= Window->update(0.0);
|
||||||
|
|||||||
Reference in New Issue
Block a user