diff --git a/src/collision.cpp b/src/collision.cpp index 66c9607..aa4da19 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -165,7 +165,7 @@ void CollisionSystem::updateCollider(uint16_t gameObjectIndex, const psyqo::Vec3 } } -int CollisionSystem::detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushBack) { +int CollisionSystem::detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushBack, SceneManager& scene) { m_resultCount = 0; const FP zero(0); pushBack = psyqo::Vec3{zero, zero, zero}; @@ -173,7 +173,9 @@ int CollisionSystem::detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushB // Rebuild spatial grid with all colliders m_grid.clear(); for (int i = 0; i < m_colliderCount; i++) { - m_grid.insert(i, m_colliders[i].bounds); + if(scene.getGameObject(m_colliders[i].gameObjectIndex)->isActive()) { + m_grid.insert(i, m_colliders[i].bounds); + } } // Test player AABB against all colliders for push-back diff --git a/src/collision.hh b/src/collision.hh index ae7ee69..cce3558 100644 --- a/src/collision.hh +++ b/src/collision.hh @@ -110,7 +110,7 @@ public: void registerTriggerBox(const AABB& bounds, int16_t luaFileIndex); - int detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushBack); + int detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushBack, class SceneManager& scene); void detectTriggers(const AABB& playerAABB, class SceneManager& scene); diff --git a/src/scenemanager.cpp b/src/scenemanager.cpp index f84975f..27d372b 100644 --- a/src/scenemanager.cpp +++ b/src/scenemanager.cpp @@ -319,7 +319,7 @@ void psxsplash::SceneManager::GameTick(psyqo::GPU &gpu) { } psyqo::Vec3 pushBack; - int collisionCount = m_collisionSystem.detectCollisions(playerAABB, pushBack); + int collisionCount = m_collisionSystem.detectCollisions(playerAABB, pushBack, *this); { psyqo::FixedPoint<12> zero;