Fixed recurring bug with collision listener
This commit is contained in:
parent
74a85180ac
commit
f6c74ad3d2
|
@ -84,14 +84,27 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
const SHCollisionInfo& C_INFO = *eventIter;
|
const SHCollisionInfo& C_INFO = *eventIter;
|
||||||
|
|
||||||
const bool CLEAR_EVENT = C_INFO.GetCollisionState() == SHCollisionInfo::State::EXIT || C_INFO.GetCollisionState() == SHCollisionInfo::State::INVALID;
|
|
||||||
const bool INVALID_ENTITY = !SHEntityManager::IsValidEID(C_INFO.GetEntityA()) || !SHEntityManager::IsValidEID(C_INFO.GetEntityB());
|
const bool INVALID_ENTITY = !SHEntityManager::IsValidEID(C_INFO.GetEntityA()) || !SHEntityManager::IsValidEID(C_INFO.GetEntityB());
|
||||||
const bool INACTIVE_OBJECT = !SHSceneManager::CheckNodeAndComponentsActive<SHColliderComponent>(C_INFO.GetEntityA()) || !SHSceneManager::CheckNodeAndComponentsActive<SHColliderComponent>(C_INFO.GetEntityB());
|
if (INVALID_ENTITY)
|
||||||
|
{
|
||||||
if (CLEAR_EVENT || INVALID_ENTITY || INACTIVE_OBJECT)
|
|
||||||
eventIter = container.erase(eventIter);
|
eventIter = container.erase(eventIter);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
++eventIter;
|
{
|
||||||
|
const bool CLEAR_EVENT = C_INFO.GetCollisionState() == SHCollisionInfo::State::EXIT || C_INFO.GetCollisionState() == SHCollisionInfo::State::INVALID;
|
||||||
|
|
||||||
|
const bool INACTIVE_OBJECT = !SHSceneManager::CheckNodeAndComponentsActive<SHColliderComponent>(C_INFO.GetEntityA())
|
||||||
|
|| !SHSceneManager::CheckNodeAndComponentsActive<SHColliderComponent>(C_INFO.GetEntityB());
|
||||||
|
|
||||||
|
if (CLEAR_EVENT || INACTIVE_OBJECT)
|
||||||
|
{
|
||||||
|
eventIter = container.erase(eventIter);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
++eventIter;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue