SDK/Entity: Delay component removal until world update

Allows system to freely remove components while updating


Former-commit-id: db5877bc20e6a0dfadd69f81a339f0a57d8404df [formerly 74327b8f1429855625613f258894b37d026041fe] [formerly 65b8f2ba78d2690b7a469d4b9818b189524633db [formerly 71be95adb46b7183261a8038352c4d8bd17cacc3]]
Former-commit-id: ba91d5abad60792e648d47e646ae49d43a1c94b5 [formerly 8d0667574ff665e151e7fda5f854fc11a16c854d]
Former-commit-id: eb7b06c2739ef698a153a6221870a8d0956dc875
This commit is contained in:
Lynix
2016-08-11 01:02:40 +02:00
parent b096096e83
commit 1fc0d564ce
4 changed files with 53 additions and 36 deletions

View File

@@ -139,6 +139,11 @@ namespace Ndk
if (!entity->IsValid())
continue;
Nz::Bitset<>& removedComponents = entity->GetRemovedComponentBits();
for (std::size_t j = removedComponents.FindFirst(); j != m_dirtyEntities.npos; j = removedComponents.FindNext(j))
entity->DestroyComponent(j);
removedComponents.Reset();
for (auto& system : m_systems)
{
// Ignore non-existent systems