Merge branch 'master' of https://gitlab.com/Mergul/bubel-ecs.git into remove_structure_top_mixin
# Conflicts: # tests/basic.d
This commit is contained in:
commit
8b2793fc57
13 changed files with 200 additions and 97 deletions
110
tests/basic.d
110
tests/basic.d
|
|
@ -139,6 +139,7 @@ void afterEveryTest()
|
|||
unittest
|
||||
{
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate([becsID!CInt, becsID!CFloat, becsID!CFlag].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_);
|
||||
Entity* entity = gEM.addEntity(tmpl_);
|
||||
EntityMeta meta = entity.getMeta();
|
||||
assert(meta.hasComponent(becsID!CInt));
|
||||
|
|
@ -157,6 +158,7 @@ unittest
|
|||
unittest
|
||||
{
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate([becsID!CInt, becsID!CFloat, becsID!CFlag].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_);
|
||||
assert(tmpl_.info.components.length == 3);
|
||||
assert(tmpl_.info.size == (CInt.sizeof + CFloat.sizeof + EntityID.sizeof));
|
||||
assert(tmpl_.getComponent!CInt);
|
||||
|
|
@ -345,6 +347,7 @@ unittest
|
|||
assert(*tmpl_7.getComponent!CLong == 10);
|
||||
|
||||
gEM.freeTemplate(tmpl_d);
|
||||
gEM.freeTemplate(tmpl_cp);
|
||||
gEM.freeTemplate(tmpl_);
|
||||
gEM.freeTemplate(tmpl_2);
|
||||
gEM.freeTemplate(tmpl_3);
|
||||
|
|
@ -368,6 +371,8 @@ unittest
|
|||
assert(*tmpl_.getComponent!CInt == 1);
|
||||
assert(*tmpl_.getComponent!CFloat == 2.0);
|
||||
assert(tmpl_.info == tmpl_2.info);
|
||||
gEM.freeTemplate(tmpl_);
|
||||
gEM.freeTemplate(tmpl_2);
|
||||
}
|
||||
|
||||
@("MultiRegister")
|
||||
|
|
@ -1615,4 +1620,107 @@ unittest
|
|||
assert(pass.system_callers[3].dependencies[2].system_id == becsID!TestSystem3);
|
||||
assert(pass.system_callers[4].dependencies[0].system_id == becsID!TestSystem2);
|
||||
assert(pass.system_callers[4].dependencies[1].system_id == becsID!TestSystem4);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@("CustomFilter")
|
||||
unittest
|
||||
{
|
||||
struct TestSystem
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@optional CInt[] int_;
|
||||
@optional CLong[] long_;
|
||||
@optional CFloat[] float_;
|
||||
@optional CDouble[] double_;
|
||||
}
|
||||
|
||||
bool filterEntity(EntityManager.EntityInfo* info)
|
||||
{
|
||||
if(!info.hasComponent(becsID!CInt))return false;
|
||||
int one_from = 0;
|
||||
if(info.hasComponent(becsID!CLong))one_from++;
|
||||
if(info.hasComponent(becsID!CFloat))one_from++;
|
||||
if(info.hasComponent(becsID!CDouble))one_from++;
|
||||
if(one_from == 1)return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
updates++;
|
||||
}
|
||||
|
||||
uint updates = 0;
|
||||
}
|
||||
|
||||
struct TestSystem2
|
||||
{
|
||||
mixin ECS.System;
|
||||
|
||||
struct EntitiesData
|
||||
{
|
||||
uint length;
|
||||
@optional CInt[] int_;
|
||||
@optional CLong[] long_;
|
||||
@optional CFloat[] float_;
|
||||
@optional CDouble[] double_;
|
||||
}
|
||||
|
||||
bool filterEntity(EntityManager.EntityInfo* info)
|
||||
{
|
||||
if(info.hasComponent(becsID!CInt) && info.hasComponent(becsID!CFloat) && !info.hasComponent(becsID!CLong) && !info.hasComponent(becsID!CDouble))return true;
|
||||
if(info.hasComponent(becsID!CLong) && info.hasComponent(becsID!CDouble) && !info.hasComponent(becsID!CInt) && !info.hasComponent(becsID!CFloat))return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void onUpdate(EntitiesData entities)
|
||||
{
|
||||
updates++;
|
||||
}
|
||||
|
||||
uint updates = 0;
|
||||
}
|
||||
|
||||
gEM.beginRegister();
|
||||
|
||||
gEM.registerSystem!TestSystem(0);
|
||||
gEM.registerSystem!TestSystem2(1);
|
||||
|
||||
gEM.endRegister();
|
||||
|
||||
|
||||
EntityTemplate* tmpl_ = gEM.allocateTemplate([becsID!CInt, becsID!CLong, becsID!CFloat, becsID!CDouble].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_);
|
||||
EntityTemplate* tmpl_2 = gEM.allocateTemplate([becsID!CInt, becsID!CFloat].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_2);
|
||||
EntityTemplate* tmpl_3 = gEM.allocateTemplate([becsID!CLong, becsID!CDouble].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_3);
|
||||
EntityTemplate* tmpl_4 = gEM.allocateTemplate([becsID!CInt, becsID!CLong, becsID!CDouble].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_4);
|
||||
EntityTemplate* tmpl_5 = gEM.allocateTemplate([becsID!CInt, becsID!CDouble].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_5);
|
||||
EntityTemplate* tmpl_6 = gEM.allocateTemplate([becsID!CDouble].staticArray);
|
||||
scope(exit)gEM.freeTemplate(tmpl_6);
|
||||
|
||||
gEM.addEntity(tmpl_);
|
||||
gEM.addEntity(tmpl_2);
|
||||
gEM.addEntity(tmpl_3);
|
||||
gEM.addEntity(tmpl_4);
|
||||
gEM.addEntity(tmpl_5);
|
||||
gEM.addEntity(tmpl_6);
|
||||
|
||||
TestSystem* test_system = gEM.getSystem!TestSystem;
|
||||
TestSystem2* test_system2 = gEM.getSystem!TestSystem2;
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
|
||||
assert(test_system.updates == 2);
|
||||
assert(test_system2.updates == 2);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1014,6 +1014,7 @@ else:
|
|||
writeEntityComponents(gEM.getEntity(entity));
|
||||
//import std.stdio;
|
||||
////writeln((cast(uint*)tmpl.info.first_block)[0..48]);
|
||||
gEM.freeTemplate(tmpl_empty);
|
||||
gEM.freeTemplate(tmpl);
|
||||
gEM.freeTemplate(tmpl2);
|
||||
gEM.freeTemplate(copy_tempalte);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue