Ndk/BaseSystem: Added entity validation

Former-commit-id: d82a66179244ae8807f65b193ed9be2f48abffa4
This commit is contained in:
Lynix
2015-05-03 19:51:56 +02:00
parent 3ebf967f30
commit 47c5d1072b
4 changed files with 31 additions and 9 deletions

View File

@@ -125,25 +125,30 @@ namespace Ndk
{
NazaraAssert(i < m_entities.size(), "Entity index out of range");
Entity& entity = m_entities[i].entity;
Entity* entity = &m_entities[i].entity;
// Aucun intérêt de traiter une entité n'existant plus
if (entity.IsValid())
if (entity->IsValid())
{
for (auto& system : m_systems)
{
// L'entité est-elle enregistrée comme faisant partie du système ?
bool partOfSystem = system->HasEntity(&entity);
bool partOfSystem = system->HasEntity(entity);
// Doit-elle en faire partie ?
if (system->Filters(&entity) != partOfSystem)
if (system->Filters(entity))
{
// L'entité n'est pas dans l'état dans lequel elle devrait être vis-à-vis de ce système
// si elle en fait partie, nous devons l'en enlever, et inversément
// L'entité doit faire partie du système, revalidons-là (événement système) ou ajoutons-la au système
if (!partOfSystem)
system->AddEntity(entity);
system->ValidateEntity(entity, !partOfSystem);
}
else
{
// Elle ne doit pas en faire partie, si elle en faisait partie nous devons la retirer
if (partOfSystem)
system->RemoveEntity(&entity);
else
system->AddEntity(&entity);
system->RemoveEntity(entity);
}
}
}