Fixed collisions on inactive objects

This commit is contained in:
2026-03-29 14:02:28 +02:00
parent 7425d9a5b2
commit 7c344e2e37
3 changed files with 6 additions and 4 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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;