Merge branch 'master' into wasm_demos
# Conflicts: # demos/external/sources/mmutils/thread_pool.d # tests/meson.build
This commit is contained in:
commit
84a5cbef13
32 changed files with 1568 additions and 1535 deletions
|
|
@ -54,26 +54,26 @@ EntityTemplate* tmpl;
|
|||
|
||||
void beforeEveryTest()
|
||||
{
|
||||
gEM.initialize(0);
|
||||
gEntityManager.initialize(0);
|
||||
|
||||
gEM.beginRegister();
|
||||
gEntityManager.beginRegister();
|
||||
|
||||
gEM.registerComponent!CLong;
|
||||
gEM.registerComponent!CInt;
|
||||
gEM.registerComponent!CUInt;
|
||||
gEM.registerComponent!CBig;
|
||||
gEntityManager.registerComponent!CLong;
|
||||
gEntityManager.registerComponent!CInt;
|
||||
gEntityManager.registerComponent!CUInt;
|
||||
gEntityManager.registerComponent!CBig;
|
||||
|
||||
gEM.endRegister();
|
||||
gEntityManager.endRegister();
|
||||
|
||||
tmpl = gEM.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
foreach(i; 0 .. 100_000)gEM.addEntity(tmpl);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
foreach(i; 0 .. 100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
void afterEveryTest()
|
||||
{
|
||||
if(tmpl)gEM.freeTemplate(tmpl);
|
||||
if(tmpl)gEntityManager.freeTemplate(tmpl);
|
||||
tmpl = null;
|
||||
gEM.destroy();
|
||||
gEntityManager.destroy();
|
||||
}
|
||||
|
||||
@("DirectAccess100k1comp")
|
||||
|
|
@ -81,7 +81,7 @@ unittest
|
|||
{
|
||||
foreach(i;0..25000)
|
||||
{
|
||||
Entity* entity = gEM.getEntity(EntityID(i*4+1,0));
|
||||
Entity* entity = gEntityManager.getEntity(EntityID(i*4+1,0));
|
||||
CUInt* comp1 = entity.getComponent!CUInt;
|
||||
comp1.value = 4;
|
||||
}
|
||||
|
|
@ -92,7 +92,7 @@ unittest
|
|||
{
|
||||
foreach(i;0..25000)
|
||||
{
|
||||
Entity* entity = gEM.getEntity(EntityID(i*4+1,0));
|
||||
Entity* entity = gEntityManager.getEntity(EntityID(i*4+1,0));
|
||||
CUInt* comp1 = entity.getComponent!CUInt;
|
||||
comp1.value = 4;
|
||||
CInt* comp2 = entity.getComponent!CInt;
|
||||
|
|
@ -109,7 +109,7 @@ unittest
|
|||
{
|
||||
foreach(i;0..25000)
|
||||
{
|
||||
Entity* entity = gEM.getEntity(EntityID(i*4+1,0));
|
||||
Entity* entity = gEntityManager.getEntity(EntityID(i*4+1,0));
|
||||
EntityMeta meta = entity.getMeta();
|
||||
CUInt* comp1 = meta.getComponent!CUInt;
|
||||
comp1.value = 4;
|
||||
|
|
@ -121,7 +121,7 @@ unittest
|
|||
{
|
||||
foreach(i;0..25000)
|
||||
{
|
||||
Entity* entity = gEM.getEntity(EntityID(i*4+1,0));
|
||||
Entity* entity = gEntityManager.getEntity(EntityID(i*4+1,0));
|
||||
EntityMeta meta = entity.getMeta();
|
||||
CUInt* comp1 = meta.getComponent!CUInt;
|
||||
comp1.value = 4;
|
||||
|
|
|
|||
660
tests/basic.d
660
tests/basic.d
File diff suppressed because it is too large
Load diff
70
tests/bugs.d
70
tests/bugs.d
|
|
@ -45,23 +45,23 @@ unittest
|
|||
|
||||
void onCreate()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CInt, becsID!CLong].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CInt, becsID!CLong].staticArray);
|
||||
}
|
||||
|
||||
void onDestroy()
|
||||
{
|
||||
gEM.freeTemplate(tmpl);
|
||||
gEntityManager.freeTemplate(tmpl);
|
||||
}
|
||||
|
||||
void handleEvent(Entity* entity, Event1 event)
|
||||
{
|
||||
gEM.removeEntity(event.id);
|
||||
gEM.sendEvent(entity.id,Event2());
|
||||
gEntityManager.removeEntity(event.id);
|
||||
gEntityManager.sendEvent(entity.id,Event2());
|
||||
}
|
||||
|
||||
void handleEvent(Entity* entity, Event2 event)
|
||||
{
|
||||
id = gEM.addEntity(tmpl).id;
|
||||
id = gEntityManager.addEntity(tmpl).id;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -94,49 +94,49 @@ unittest
|
|||
///remove every entity
|
||||
void onUpdate(EntitiesData data)
|
||||
{
|
||||
foreach(i;0..data.length)gEM.removeEntity(data.entity[i].id);
|
||||
foreach(i;0..data.length)gEntityManager.removeEntity(data.entity[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
gEM.initialize(0);
|
||||
gEntityManager.initialize(0);
|
||||
|
||||
gEM.beginRegister();
|
||||
gEntityManager.beginRegister();
|
||||
|
||||
gEM.registerComponent!CInt;
|
||||
gEM.registerComponent!CFloat;
|
||||
gEM.registerComponent!CDouble;
|
||||
gEM.registerComponent!CLong;
|
||||
gEM.registerComponent!CShort;
|
||||
gEM.registerComponent!CFlag;
|
||||
gEntityManager.registerComponent!CInt;
|
||||
gEntityManager.registerComponent!CFloat;
|
||||
gEntityManager.registerComponent!CDouble;
|
||||
gEntityManager.registerComponent!CLong;
|
||||
gEntityManager.registerComponent!CShort;
|
||||
gEntityManager.registerComponent!CFlag;
|
||||
|
||||
gEM.registerEvent!Event1;
|
||||
gEM.registerEvent!Event2;
|
||||
gEntityManager.registerEvent!Event1;
|
||||
gEntityManager.registerEvent!Event2;
|
||||
|
||||
gEM.registerSystem!System1(0);
|
||||
gEM.registerSystem!System2(-200);
|
||||
gEM.registerSystem!System3(-200);
|
||||
gEntityManager.registerSystem!System1(0);
|
||||
gEntityManager.registerSystem!System2(-200);
|
||||
gEntityManager.registerSystem!System3(-200);
|
||||
|
||||
gEM.endRegister();
|
||||
gEntityManager.endRegister();
|
||||
|
||||
EntityTemplate* tmpl = gEM.allocateTemplate([becsID!CInt, becsID!CLong].staticArray);
|
||||
EntityID id = gEM.addEntity(tmpl,[CLong(10).ref_, CInt(6).ref_].staticArray).id;
|
||||
EntityID id2 = gEM.addEntity(tmpl,[CInt(4).ref_].staticArray).id;
|
||||
gEM.freeTemplate(tmpl);
|
||||
gEM.commit();
|
||||
EntityTemplate* tmpl = gEntityManager.allocateTemplate([becsID!CInt, becsID!CLong].staticArray);
|
||||
EntityID id = gEntityManager.addEntity(tmpl,[CLong(10).ref_, CInt(6).ref_].staticArray).id;
|
||||
EntityID id2 = gEntityManager.addEntity(tmpl,[CInt(4).ref_].staticArray).id;
|
||||
gEntityManager.freeTemplate(tmpl);
|
||||
gEntityManager.commit();
|
||||
|
||||
gEM.sendEvent(id2, Event1(id));
|
||||
gEntityManager.sendEvent(id2, Event1(id));
|
||||
|
||||
gEM.getSystem(becsID!System2).disable();
|
||||
gEntityManager.getSystem(becsID!System2).disable();
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
gEM.getSystem(becsID!System2).enable();
|
||||
gEntityManager.getSystem(becsID!System2).enable();
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
gEM.destroy();
|
||||
gEntityManager.destroy();
|
||||
}
|
||||
|
|
@ -1,11 +1,18 @@
|
|||
tests_src = files(
|
||||
'tests.d',
|
||||
'access_perf.d',
|
||||
'basic.d',
|
||||
'bugs.d',
|
||||
'id_manager.d',
|
||||
'map.d',
|
||||
'perf.d',
|
||||
'runner.d',
|
||||
'time.d',
|
||||
'vector.d'
|
||||
)
|
||||
|
||||
|
||||
if host_machine.cpu_family() != 'wasm32'
|
||||
exe = executable('decs-tests', tests_src,
|
||||
include_directories : [inc],
|
||||
include_directories : [inc, '..'],
|
||||
dependencies : decs_dep,
|
||||
)
|
||||
|
||||
|
|
|
|||
60
tests/perf.d
60
tests/perf.d
|
|
@ -63,123 +63,123 @@ EntityTemplate* tmpl;
|
|||
|
||||
void beforeEveryTest()
|
||||
{
|
||||
gEM.initialize(0);
|
||||
gEntityManager.initialize(0);
|
||||
|
||||
gEM.beginRegister();
|
||||
gEntityManager.beginRegister();
|
||||
|
||||
gEM.registerComponent!CLong;
|
||||
gEM.registerComponent!CShort;
|
||||
gEM.registerComponent!CInt;
|
||||
gEM.registerComponent!CUInt;
|
||||
gEM.registerComponent!CBig;
|
||||
gEntityManager.registerComponent!CLong;
|
||||
gEntityManager.registerComponent!CShort;
|
||||
gEntityManager.registerComponent!CInt;
|
||||
gEntityManager.registerComponent!CUInt;
|
||||
gEntityManager.registerComponent!CBig;
|
||||
|
||||
gEM.endRegister();
|
||||
gEntityManager.endRegister();
|
||||
tmpl = null;
|
||||
}
|
||||
|
||||
void afterEveryTest()
|
||||
{
|
||||
if(tmpl)gEM.freeTemplate(tmpl);
|
||||
if(tmpl)gEntityManager.freeTemplate(tmpl);
|
||||
tmpl = null;
|
||||
gEM.destroy();
|
||||
gEntityManager.destroy();
|
||||
}
|
||||
|
||||
void smallTmpl()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CShort].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CShort].staticArray);
|
||||
}
|
||||
|
||||
void bigTmpl()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CBig].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CBig].staticArray);
|
||||
}
|
||||
|
||||
void multiSmallTmpl()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CShort, becsID!CLong, becsID!CInt, becsID!CUInt].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CShort, becsID!CLong, becsID!CInt, becsID!CUInt].staticArray);
|
||||
}
|
||||
|
||||
void multiBigTmpl()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
}
|
||||
|
||||
@("AddEntities100k1comp2b") @(before, &smallTmpl)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k1comp128b") @(before, &bigTmpl)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k4comp18b") @(before, &multiSmallTmpl)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k4comp144b") @(before, &multiBigTmpl)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
void allocDealloc100k()
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
gEM.commit();
|
||||
foreach(i; 0..100_000)gEM.removeEntity(EntityID(i + 1,0));
|
||||
gEM.commit();
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
gEntityManager.commit();
|
||||
foreach(i; 0..100_000)gEntityManager.removeEntity(EntityID(i + 1,0));
|
||||
gEntityManager.commit();
|
||||
}
|
||||
|
||||
void smallTmplPreAlloc()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CShort].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CShort].staticArray);
|
||||
allocDealloc100k();
|
||||
}
|
||||
|
||||
void bigTmplPreAlloc()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CBig].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CBig].staticArray);
|
||||
allocDealloc100k();
|
||||
}
|
||||
|
||||
void multiSmallTmplPreAlloc()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CShort, becsID!CLong, becsID!CInt, becsID!CUInt].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CShort, becsID!CLong, becsID!CInt, becsID!CUInt].staticArray);
|
||||
allocDealloc100k();
|
||||
}
|
||||
|
||||
void multiBigTmplPreAlloc()
|
||||
{
|
||||
tmpl = gEM.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
tmpl = gEntityManager.allocateTemplate([becsID!CLong, becsID!CInt, becsID!CUInt, becsID!CBig].staticArray);
|
||||
allocDealloc100k();
|
||||
}
|
||||
|
||||
@("AddEntities100k1comp2bPreAlloc") @(before, &smallTmplPreAlloc)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k1comp128bPreAlloc") @(before, &bigTmplPreAlloc)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k4comp18bPreAlloc") @(before, &multiSmallTmplPreAlloc)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
||||
@("AddEntities100k4comp144bPreAlloc") @(before, &multiBigTmplPreAlloc)
|
||||
unittest
|
||||
{
|
||||
foreach(i; 0..100_000)gEM.addEntity(tmpl);
|
||||
foreach(i; 0..100_000)gEntityManager.addEntity(tmpl);
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ module tests.runner;
|
|||
|
||||
import core.stdc.stdio;
|
||||
import core.stdc.string;
|
||||
import core.sys.posix.setjmp;
|
||||
|
||||
import bubel.ecs.vector;
|
||||
import bubel.ecs.simple_vector;
|
||||
|
|
@ -25,11 +24,36 @@ else
|
|||
enum int ASSERTED = 123;
|
||||
enum string OUT_FILE = "test_report.xml";
|
||||
|
||||
static jmp_buf gEnvBuffer;
|
||||
static AssertInfo gAssertInfo;
|
||||
|
||||
version (D_BetterC)
|
||||
{
|
||||
version(Posix)
|
||||
{
|
||||
import core.sys.posix.setjmp;
|
||||
}
|
||||
else version(Windows)
|
||||
{
|
||||
version(X86)
|
||||
alias jmp_buf = ubyte[64];
|
||||
else version(X86_64)
|
||||
alias jmp_buf = ubyte[256];
|
||||
else version(IA64)
|
||||
alias jmp_buf = ubyte[512];
|
||||
|
||||
extern (C) {
|
||||
int _setjmp(ref jmp_buf);
|
||||
void longjmp(ref jmp_buf, int);
|
||||
}
|
||||
alias setjmp = _setjmp;
|
||||
}
|
||||
|
||||
static jmp_buf gEnvBuffer;
|
||||
static AssertInfo gAssertInfo;
|
||||
|
||||
extern (C) void __assert(const char* msg, const char* file, int line)
|
||||
{
|
||||
gAssertInfo = AssertInfo(msg, file, line);
|
||||
longjmp(gEnvBuffer, ASSERTED);
|
||||
}
|
||||
}
|
||||
else version = notBetterC;
|
||||
|
||||
|
|
@ -40,12 +64,6 @@ struct AssertInfo
|
|||
int line;
|
||||
}
|
||||
|
||||
extern (C) void __assert(const char* msg, const char* file, int line)
|
||||
{
|
||||
gAssertInfo = AssertInfo(msg, file, line);
|
||||
longjmp(gEnvBuffer, ASSERTED);
|
||||
}
|
||||
|
||||
struct Test
|
||||
{
|
||||
string file;
|
||||
|
|
@ -427,6 +445,13 @@ extern (C) int main(int argc, char** args)
|
|||
}
|
||||
}
|
||||
|
||||
static import tests.id_manager;
|
||||
static import tests.vector;
|
||||
static import tests.basic;
|
||||
static import tests.perf;
|
||||
static import tests.access_perf;
|
||||
static import tests.bugs;
|
||||
static import tests.map;
|
||||
TestRunner!(tests.id_manager, tests.vector, tests.basic, tests.perf, tests.access_perf, tests.bugs, tests.map) runner;
|
||||
|
||||
runner.runTests(include[], exclude[]);
|
||||
|
|
|
|||
280
tests/tests.d
280
tests/tests.d
|
|
@ -226,7 +226,7 @@ struct EverySystem
|
|||
{
|
||||
foreach(i;0..data.length)
|
||||
{
|
||||
gEM.removeEntity(data.entity[i].id);
|
||||
gEntityManager.removeEntity(data.entity[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ struct EverySystem
|
|||
{
|
||||
foreach(i;0..data.length)
|
||||
{
|
||||
gEM.addComponents(data.entity[i].id, TestComp2());
|
||||
gEntityManager.addComponents(data.entity[i].id, TestComp2());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -566,7 +566,7 @@ struct TestSystem2
|
|||
test.bg = event.a;
|
||||
TestEvent2 event2;
|
||||
event2.a = event.a + 8;
|
||||
gEM.sendEvent(entity.id, event2);
|
||||
gEntityManager.sendEvent(entity.id, event2);
|
||||
}
|
||||
|
||||
void handleEvent(Entity* entity, TestEvent2 event)
|
||||
|
|
@ -601,12 +601,12 @@ struct TestSystem2
|
|||
data.test[i].gg += 14;
|
||||
TestEvent event;
|
||||
event.a = data.test[i].gg + 4;
|
||||
gEM.sendEvent(data.entity[i].id, event); //*/
|
||||
gEntityManager.sendEvent(data.entity[i].id, event); //*/
|
||||
/*TestEvent2 event2;
|
||||
event2.a = data.test[i].gg + 8;
|
||||
gEM.sendEvent(data.entity[i].id, event2);//*/
|
||||
//gEM.sendEvent!(TestEvent)(data.entity[i].id, event);
|
||||
//gEM.sendSelfEvent!(TestEvent)(data.entity[i].id, TestEvent());
|
||||
gEntityManager.sendEvent(data.entity[i].id, event2);//*/
|
||||
//gEntityManager.sendEvent!(TestEvent)(data.entity[i].id, event);
|
||||
//gEntityManager.sendSelfEvent!(TestEvent)(data.entity[i].id, TestEvent());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -615,7 +615,7 @@ struct TestSystem2
|
|||
foreach (i; 0 .. data.test.length)
|
||||
{
|
||||
data.test[i].gg -= 1;
|
||||
//gEM.sendSelfEvent!(TestEvent)(data.entity[i].id, TestEvent());
|
||||
//gEntityManager.sendSelfEvent!(TestEvent)(data.entity[i].id, TestEvent());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -686,25 +686,25 @@ else:
|
|||
|
||||
EntityManager.initialize(1);
|
||||
|
||||
//gEM.setJobDispachFunc(&dispatch);
|
||||
gEM.setMultithreadingCallbacks(&dispatch, &getID);
|
||||
//assert(gEM !is null);
|
||||
//gEntityManager.setJobDispachFunc(&dispatch);
|
||||
gEntityManager.setMultithreadingCallbacks(&dispatch, &getID);
|
||||
//assert(gEntityManager !is null);
|
||||
|
||||
gEM.beginRegister();
|
||||
gEM.registerPass("fixed");
|
||||
gEntityManager.beginRegister();
|
||||
gEntityManager.registerPass("fixed");
|
||||
|
||||
//MonoTime time = MonoTime.currTime;
|
||||
long time = Time.getUSecTime();
|
||||
|
||||
gEM.registerComponent!TestComp2;
|
||||
gEM.registerComponent!TestComp4;
|
||||
gEM.registerComponent!TestComp;
|
||||
gEM.registerComponent!TestComp3;
|
||||
gEM.registerComponent!TestComp5;
|
||||
gEM.registerComponent!CPosition;
|
||||
gEntityManager.registerComponent!TestComp2;
|
||||
gEntityManager.registerComponent!TestComp4;
|
||||
gEntityManager.registerComponent!TestComp;
|
||||
gEntityManager.registerComponent!TestComp3;
|
||||
gEntityManager.registerComponent!TestComp5;
|
||||
gEntityManager.registerComponent!CPosition;
|
||||
|
||||
gEM.registerEvent!TestEvent;
|
||||
gEM.registerEvent!TestEvent2;
|
||||
gEntityManager.registerEvent!TestEvent;
|
||||
gEntityManager.registerEvent!TestEvent2;
|
||||
|
||||
/*ulong dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Components register: ", dur, " usecs");
|
||||
|
|
@ -714,19 +714,19 @@ else:
|
|||
printf("Components register: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
time = Time.getUSecTime();
|
||||
|
||||
gEM.registerSystem!TestSystemWithHighPriority(100, "fixed");
|
||||
gEM.registerSystem!TestSystem(0);
|
||||
gEM.registerSystem!ChangeTestSystem(0);
|
||||
gEM.registerSystem!Sys1(10);
|
||||
gEM.registerSystem!Sys2(-100);
|
||||
gEM.registerSystem!Sys3(-2);
|
||||
gEM.registerSystem!EmptySystem(2);
|
||||
gEM.registerSystem!EmptyEventSystem(2);
|
||||
gEM.registerSystem!EventSystem(2);
|
||||
gEM.registerSystem!EverySystem(0);
|
||||
//gEM.registerSystem!TestSystemWithHighPriority(100);
|
||||
//gEM.registerSystem!TestSystem2(0);
|
||||
gEM.endRegister();
|
||||
gEntityManager.registerSystem!TestSystemWithHighPriority(100, "fixed");
|
||||
gEntityManager.registerSystem!TestSystem(0);
|
||||
gEntityManager.registerSystem!ChangeTestSystem(0);
|
||||
gEntityManager.registerSystem!Sys1(10);
|
||||
gEntityManager.registerSystem!Sys2(-100);
|
||||
gEntityManager.registerSystem!Sys3(-2);
|
||||
gEntityManager.registerSystem!EmptySystem(2);
|
||||
gEntityManager.registerSystem!EmptyEventSystem(2);
|
||||
gEntityManager.registerSystem!EventSystem(2);
|
||||
gEntityManager.registerSystem!EverySystem(0);
|
||||
//gEntityManager.registerSystem!TestSystemWithHighPriority(100);
|
||||
//gEntityManager.registerSystem!TestSystem2(0);
|
||||
gEntityManager.endRegister();
|
||||
|
||||
/*dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Systems register: ", dur, " usecs");
|
||||
|
|
@ -737,11 +737,11 @@ else:
|
|||
|
||||
//ushort[3] ids = [becsID!TestComp2, becsID!TestComp, becsID!TestComp4];
|
||||
ushort[2] ids = [becsID!TestComp2, becsID!TestComp];
|
||||
EntityTemplate* tmpl = gEM.allocateTemplate(ids);
|
||||
EntityTemplate* tmpl = gEntityManager.allocateTemplate(ids);
|
||||
|
||||
//ushort[3] ids2 = [becsID!TestComp3, becsID!TestComp, becsID!TestComp4];
|
||||
ushort[2] ids2 = [becsID!TestComp3, becsID!TestComp];
|
||||
EntityTemplate* tmpl2 = gEM.allocateTemplate(ids2);
|
||||
EntityTemplate* tmpl2 = gEntityManager.allocateTemplate(ids2);
|
||||
////writeln(tmpl.info.components[]);
|
||||
//*cast(EntityID*) tmpl.entity_data.ptr = EntityID(1, 1);
|
||||
|
||||
|
|
@ -752,67 +752,67 @@ else:
|
|||
|
||||
time = Time.getUSecTime();
|
||||
ushort[1] empty_ids = [becsID!CPosition];
|
||||
EntityTemplate* tmpl_empty = gEM.allocateTemplate(empty_ids);
|
||||
EntityTemplate* tmpl_empty = gEntityManager.allocateTemplate(empty_ids);
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
|
||||
time = Time.getUSecTime();
|
||||
|
||||
foreach(i;0..4_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..4_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..2_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..4_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
foreach(i;0..4_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
foreach(i;0..2_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
|
||||
printf("Adding 1M entities: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
time = Time.getUSecTime();
|
||||
gEM.callEntitiesFunction!EverySystem(&gEM.getSystem!EverySystem().iterate);
|
||||
gEntityManager.callEntitiesFunction!EverySystem(&gEntityManager.getSystem!EverySystem().iterate);
|
||||
printf("Iterate 1M entities: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
gEM.begin();
|
||||
gEntityManager.begin();
|
||||
time = Time.getUSecTime();
|
||||
gEM.update();
|
||||
gEntityManager.update();
|
||||
printf("Iterate 1M entities (update): %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
gEM.end();
|
||||
gEntityManager.end();
|
||||
|
||||
time = Time.getUSecTime();
|
||||
gEM.callEntitiesFunction!EverySystem(&gEM.getSystem!EverySystem().free);
|
||||
gEM.commit();
|
||||
gEntityManager.callEntitiesFunction!EverySystem(&gEntityManager.getSystem!EverySystem().free);
|
||||
gEntityManager.commit();
|
||||
printf("Deleting 1M entities: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
time = Time.getUSecTime();
|
||||
|
||||
foreach(i;0..4_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..4_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..2_000_000)gEM.addEntity(tmpl_empty);
|
||||
gEM.commit();
|
||||
foreach(i;0..4_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
foreach(i;0..4_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
foreach(i;0..2_000_000)gEntityManager.addEntity(tmpl_empty);
|
||||
gEntityManager.commit();
|
||||
|
||||
printf("Adding 1M entities (prealloc): %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
time = Time.getUSecTime();
|
||||
gEM.callEntitiesFunction!EverySystem(&gEM.getSystem!EverySystem().addOne);
|
||||
gEM.commit();
|
||||
gEntityManager.callEntitiesFunction!EverySystem(&gEntityManager.getSystem!EverySystem().addOne);
|
||||
gEntityManager.commit();
|
||||
printf("Adding 1M component: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
gEM.commit();
|
||||
gEM.callEntitiesFunction!EverySystem(&gEM.getSystem!EverySystem().free);
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
gEntityManager.callEntitiesFunction!EverySystem(&gEntityManager.getSystem!EverySystem().free);
|
||||
gEntityManager.commit();
|
||||
|
||||
time = Time.getUSecTime();
|
||||
|
||||
EntityID entity;
|
||||
|
||||
{
|
||||
entity = gEM.addEntity(tmpl).id;
|
||||
writeEntityComponents(gEM.getEntity(entity));
|
||||
EntityManager.EntitiesBlock* block = EntityManager.instance.getMetaData(
|
||||
gEM.getEntity(entity));
|
||||
entity = gEntityManager.addEntity(tmpl).id;
|
||||
writeEntityComponents(gEntityManager.getEntity(entity));
|
||||
EntityManager.EntitiesBlock* block = gEntityManager.getMetaData(
|
||||
gEntityManager.getEntity(entity));
|
||||
EntityManager.EntityInfo* info = block.type_info;
|
||||
//writeln(info.add_listeners);
|
||||
//if(info)assert(0);
|
||||
|
|
@ -821,9 +821,9 @@ else:
|
|||
//time = MonoTime.currTime;
|
||||
time = Time.getUSecTime();
|
||||
|
||||
//foreach(i; 0..1_000_000)gEM.addEntity(tmpl);
|
||||
//foreach(i; 0..1_000_000)gEntityManager.addEntity(tmpl);
|
||||
|
||||
//foreach(i; 0..1_000_000)gEM.removeEntity(gEM.addEntity(tmpl).id);
|
||||
//foreach(i; 0..1_000_000)gEntityManager.removeEntity(gEntityManager.addEntity(tmpl).id);
|
||||
|
||||
import bubel.ecs.std;
|
||||
|
||||
|
|
@ -832,14 +832,14 @@ else:
|
|||
|
||||
foreach (i; 0 .. 200)
|
||||
{
|
||||
gEM.begin();
|
||||
gEntityManager.begin();
|
||||
foreach (j; 0 .. 5_000)
|
||||
idss[j] = gEM.addEntity(tmpl).id;
|
||||
idss[j] = gEntityManager.addEntity(tmpl).id;
|
||||
foreach (j; 0 .. 5_000)
|
||||
gEM.removeEntity(idss[j]);
|
||||
gEM.end();
|
||||
gEntityManager.removeEntity(idss[j]);
|
||||
gEntityManager.end();
|
||||
}
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Entities adding: ", dur, " usecs");
|
||||
|
|
@ -847,7 +847,7 @@ else:
|
|||
time = Time.getUSecTime();
|
||||
|
||||
uint blocks = 0;
|
||||
foreach (info; &gEM.entities_infos.byValue)
|
||||
foreach (info; &gEntityManager.entities_infos.byValue)
|
||||
{
|
||||
EntityManager.EntitiesBlock* block = info.first_block;
|
||||
while (block !is null)
|
||||
|
|
@ -859,13 +859,13 @@ else:
|
|||
//writeln("Entities blocks: ", blocks);
|
||||
printf("Entities blocks: %u\n", blocks);
|
||||
|
||||
//foreach(j; 0..1_000)gEM.addEntity(tmpl);
|
||||
//foreach(j; 0..1_000)gEntityManager.addEntity(tmpl);
|
||||
|
||||
gEM.beginRegister();
|
||||
gEM.registerSystem!TestSystem2(0);
|
||||
gEM.endRegister();
|
||||
gEntityManager.beginRegister();
|
||||
gEntityManager.registerSystem!TestSystem2(0);
|
||||
gEntityManager.endRegister();
|
||||
|
||||
//gEM.generateDependencies();
|
||||
//gEntityManager.generateDependencies();
|
||||
|
||||
//assert(*(cast(EntityID*)(cast(void*)tmpl.info.first_block+24)) == EntityID(1,1));
|
||||
//assert(*(cast(EntityID*)(cast(void*)tmpl.info.first_block+48)) == EntityID(1,1));
|
||||
|
|
@ -878,12 +878,12 @@ else:
|
|||
EntityID[] entities = Mallocator.makeArray!EntityID(1_000_000);
|
||||
foreach (i; 0 .. 500_000)
|
||||
{
|
||||
entity2 = gEM.addEntity(tmpl).id;
|
||||
entity2 = gEntityManager.addEntity(tmpl).id;
|
||||
entities[i * 2] = entity2;
|
||||
entities[i * 2 + 1] = gEM.addEntity(tmpl2).id;
|
||||
entities[i * 2 + 1] = gEntityManager.addEntity(tmpl2).id;
|
||||
}
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Entities adding2: ", dur, " usecs");
|
||||
|
||||
|
|
@ -893,12 +893,12 @@ else:
|
|||
|
||||
foreach (i; 0 .. 1_000_000)
|
||||
{
|
||||
EntityManager.instance.addComponents(entities[i], TestComp5());
|
||||
gEntityManager.addComponents(entities[i], TestComp5());
|
||||
if ((i & 0x00FFFF) == 0)
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
}
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Components adding: ", dur, " usecs");
|
||||
|
||||
|
|
@ -908,11 +908,11 @@ else:
|
|||
|
||||
foreach (i; 0 .. 1_000_000)
|
||||
{
|
||||
EntityManager.instance.removeComponents!TestComp5(entities[i]);
|
||||
//if((i & 0x00FFFF) == 0)gEM.commit();
|
||||
gEntityManager.removeComponents!TestComp5(entities[i]);
|
||||
//if((i & 0x00FFFF) == 0)gEntityManager.commit();
|
||||
}
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Components removing: ", dur, " usecs");
|
||||
printf("Components removing: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
|
@ -923,102 +923,102 @@ else:
|
|||
//time = MonoTime.currTime;
|
||||
time = Time.getUSecTime();
|
||||
|
||||
gEM.begin();
|
||||
//gEM.updateMT();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
//gEntityManager.updateMT();
|
||||
gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Update: ", dur, " usecs");
|
||||
printf("Update: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
writeEntityComponents(gEM.getEntity(entity2));
|
||||
writeEntityComponents(gEntityManager.getEntity(entity2));
|
||||
|
||||
//time = MonoTime.currTime;
|
||||
time = Time.getUSecTime();
|
||||
|
||||
gEM.begin();
|
||||
gEM.updateMT();
|
||||
//gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.updateMT();
|
||||
//gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Update: ", dur, " usecs");
|
||||
printf("Update: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
writeEntityComponents(gEM.getEntity(entity2));
|
||||
writeEntityComponents(gEntityManager.getEntity(entity2));
|
||||
|
||||
//time = MonoTime.currTime;
|
||||
time = Time.getUSecTime();
|
||||
|
||||
gEM.begin();
|
||||
gEM.updateMT();
|
||||
//gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.updateMT();
|
||||
//gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
//dur = (MonoTime.currTime - time).total!"usecs";
|
||||
//writeln("Update: ", dur, " usecs");
|
||||
printf("Update: %f usecs\n", cast(float)(Time.getUSecTime() - time));
|
||||
|
||||
writeEntityComponents(gEM.getEntity(entity2));
|
||||
writeEntityComponents(gEntityManager.getEntity(entity2));
|
||||
|
||||
entity = gEM.addEntity(tmpl).id;
|
||||
entity = gEntityManager.addEntity(tmpl).id;
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
//Entity* pp;// = gEM.getEntity(entity.id);
|
||||
//Entity* pp;// = gEntityManager.getEntity(entity.id);
|
||||
////writeln((cast(uint*) pp)[0 .. 14], " ", pp);
|
||||
writeEntityComponents(gEM.getEntity(entity));
|
||||
writeEntityComponents(gEntityManager.getEntity(entity));
|
||||
|
||||
//writeln("Entity, its copy, and template, and default filled tempalte");
|
||||
gEM.addEntity(tmpl);
|
||||
writeEntityComponents(gEM.getEntity(entity));
|
||||
writeEntityComponents(gEM.addEntityCopy(entity));
|
||||
EntityTemplate* copy_tempalte = gEM.allocateTemplate(entity);
|
||||
writeEntityComponents(gEM.addEntity(copy_tempalte));
|
||||
EntityTemplate* copy_default_tempalte = gEM.allocateTemplate(entity, true);
|
||||
writeEntityComponents(gEM.addEntity(copy_default_tempalte));
|
||||
gEntityManager.addEntity(tmpl);
|
||||
writeEntityComponents(gEntityManager.getEntity(entity));
|
||||
writeEntityComponents(gEntityManager.addEntityCopy(entity));
|
||||
EntityTemplate* copy_tempalte = gEntityManager.allocateTemplate(entity);
|
||||
writeEntityComponents(gEntityManager.addEntity(copy_tempalte));
|
||||
EntityTemplate* copy_default_tempalte = gEntityManager.allocateTemplate(entity, true);
|
||||
writeEntityComponents(gEntityManager.addEntity(copy_default_tempalte));
|
||||
|
||||
gEM.addComponents(entity, TestComp4());
|
||||
gEM.addComponents(entity, TestComp3());
|
||||
gEntityManager.addComponents(entity, TestComp4());
|
||||
gEntityManager.addComponents(entity, TestComp3());
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.update();
|
||||
gEntityManager.end();
|
||||
|
||||
writeEntityComponents(gEM.getEntity(entity));
|
||||
writeEntityComponents(gEntityManager.getEntity(entity));
|
||||
|
||||
gEM.removeComponents!(TestComp)(entity);
|
||||
gEM.addComponents(entity, TestComp());
|
||||
gEM.addComponents(entity, TestComp5());
|
||||
gEntityManager.removeComponents!(TestComp)(entity);
|
||||
gEntityManager.addComponents(entity, TestComp());
|
||||
gEntityManager.addComponents(entity, TestComp5());
|
||||
|
||||
gEM.begin();
|
||||
gEM.update();
|
||||
gEM.update("fixed");
|
||||
gEM.end();
|
||||
gEntityManager.begin();
|
||||
gEntityManager.update();
|
||||
gEntityManager.update("fixed");
|
||||
gEntityManager.end();
|
||||
|
||||
gEM.removeComponents!(TestComp4)(entity);
|
||||
gEntityManager.removeComponents!(TestComp4)(entity);
|
||||
|
||||
gEM.commit();
|
||||
gEntityManager.commit();
|
||||
|
||||
System* sys = EntityManager.instance.getSystem(becsID!TestSystem2);
|
||||
System* sys = gEntityManager.getSystem(becsID!TestSystem2);
|
||||
|
||||
ExternalUpdateCallTest external_update_test;
|
||||
|
||||
EntityManager.instance.callEntitiesFunction!TestSystem2(&external_update_test.update);
|
||||
gEntityManager.callEntitiesFunction!TestSystem2(&external_update_test.update);
|
||||
|
||||
printf("pre end\n");
|
||||
|
||||
writeEntityComponents(gEM.getEntity(entity));
|
||||
writeEntityComponents(gEntityManager.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);
|
||||
gEM.freeTemplate(copy_default_tempalte);
|
||||
gEntityManager.freeTemplate(tmpl_empty);
|
||||
gEntityManager.freeTemplate(tmpl);
|
||||
gEntityManager.freeTemplate(tmpl2);
|
||||
gEntityManager.freeTemplate(copy_tempalte);
|
||||
gEntityManager.freeTemplate(copy_default_tempalte);
|
||||
EntityManager.destroy();
|
||||
|
||||
Mallocator.dispose(idss);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue