-onAdd/onRemove called when components are changed

This commit is contained in:
Mergul 2019-03-24 14:42:21 +00:00
parent e4be23ee96
commit 4ac80d7025
2 changed files with 131 additions and 14 deletions

View file

@ -94,6 +94,63 @@ static struct TestComp4
}
}
struct ChangeTestSystem
{
mixin ECS.System!16;//__gshared ushort system_id;
void onCreate()
{
writeln("On Change Test System create.");
}
void onDestroy()
{
writeln("On Change Test System destroy.");
}
void onAdd(EntitiesData data)
{
foreach(i;0..data.length)
writeln("Entity added ID: ",data.entites[i].id.id);
}
void onRemove(EntitiesData data)
{
writeln("Entity removed ID: ",data.entites[0].id);
}
bool onBegin()
{
//writeln("On Test System begin.");
return true;
}
void onEnd()
{
//writeln("On Test System end.");
}
void initialize(ref Entity entity, ref TestComp comp)
{
}
static struct EntitiesData
{
size_t length;
const(Entity)[] entites;
TestComp4[] test4;
}
void update(EntitiesData data)
{
foreach(i;0..data.length)
{
}
}
}
struct TestSystem
{
mixin ECS.System!16;//__gshared ushort system_id;
@ -344,6 +401,7 @@ int main()
gEM.registerSystem!TestSystemWithHighPriority(100,"fixed");
gEM.registerSystem!TestSystem(0);
gEM.registerSystem!ChangeTestSystem(0);
//gEM.registerSystem!TestSystemWithHighPriority(100);
//gEM.registerSystem!TestSystem2(0);
gEM.endRegister();
@ -491,6 +549,7 @@ int main()
gEM.removeComponents!(TestComp)(entity.id);
gEM.addComponents(entity.id, TestComp());
gEM.removeComponents!(TestComp4)(entity.id);
gEM.begin();
gEM.update();
@ -498,7 +557,6 @@ int main()
gEM.end();
writeEntityComponents(gEM.getEntity(entity.id));
//import std.stdio;
//writeln((cast(uint*)tmpl.info.first_block)[0..48]);
gEM.freeTemplate(tmpl);