Fixed collisions on inactive objects
This commit is contained in:
@@ -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;
|
m_resultCount = 0;
|
||||||
const FP zero(0);
|
const FP zero(0);
|
||||||
pushBack = psyqo::Vec3{zero, zero, zero};
|
pushBack = psyqo::Vec3{zero, zero, zero};
|
||||||
@@ -173,8 +173,10 @@ int CollisionSystem::detectCollisions(const AABB& playerAABB, psyqo::Vec3& pushB
|
|||||||
// Rebuild spatial grid with all colliders
|
// Rebuild spatial grid with all colliders
|
||||||
m_grid.clear();
|
m_grid.clear();
|
||||||
for (int i = 0; i < m_colliderCount; i++) {
|
for (int i = 0; i < m_colliderCount; i++) {
|
||||||
|
if(scene.getGameObject(m_colliders[i].gameObjectIndex)->isActive()) {
|
||||||
m_grid.insert(i, m_colliders[i].bounds);
|
m_grid.insert(i, m_colliders[i].bounds);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Test player AABB against all colliders for push-back
|
// Test player AABB against all colliders for push-back
|
||||||
uint16_t nearby[32];
|
uint16_t nearby[32];
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public:
|
|||||||
|
|
||||||
void registerTriggerBox(const AABB& bounds, int16_t luaFileIndex);
|
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);
|
void detectTriggers(const AABB& playerAABB, class SceneManager& scene);
|
||||||
|
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ void psxsplash::SceneManager::GameTick(psyqo::GPU &gpu) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
psyqo::Vec3 pushBack;
|
psyqo::Vec3 pushBack;
|
||||||
int collisionCount = m_collisionSystem.detectCollisions(playerAABB, pushBack);
|
int collisionCount = m_collisionSystem.detectCollisions(playerAABB, pushBack, *this);
|
||||||
|
|
||||||
{
|
{
|
||||||
psyqo::FixedPoint<12> zero;
|
psyqo::FixedPoint<12> zero;
|
||||||
|
|||||||
Reference in New Issue
Block a user