From 7fa41f76710e6493ed2f8457bef6edc962117f68 Mon Sep 17 00:00:00 2001 From: Mergul Date: Wed, 30 Oct 2019 19:41:21 +0100 Subject: [PATCH] -fixed bug (Events was called before onAddEntity callback) --- source/ecs/manager.d | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/source/ecs/manager.d b/source/ecs/manager.d index 375a0e0..3708969 100644 --- a/source/ecs/manager.d +++ b/source/ecs/manager.d @@ -2235,14 +2235,17 @@ export struct EntityManager { EntityID entity_id = *cast(EntityID*) event_pointer; Entity* entity = id_manager.getEntityPointer(entity_id); - call_data.block = getMetaData(entity); - call_data.id = call_data.block.entityIndex(entity); - - foreach (caller; events[i].callers) + if(entity) { - call_data.system_pointer = caller.system.m_system_pointer; - (cast(void function(ref EventCallData) nothrow @nogc) caller - .callback)(call_data); + call_data.block = getMetaData(entity); + call_data.id = call_data.block.entityIndex(entity); + + foreach (caller; events[i].callers) + { + call_data.system_pointer = caller.system.m_system_pointer; + (cast(void function(ref EventCallData) nothrow @nogc) caller + .callback)(call_data); + } } event_pointer += events[i].size; } @@ -2258,11 +2261,11 @@ export struct EntityManager export void commit() { - updateEvents(); id_manager.optimize(); updateBlocks(); removeEntities(); changeEntities(); + updateEvents(); event_manager.clearEvents(); }