From 27cdccac75b2564839609072ec8f02ed8ad9c576 Mon Sep 17 00:00:00 2001 From: William Moberg Date: Wed, 10 Feb 2016 16:10:41 +0100 Subject: [PATCH] Frustrum octree should only get AABBs derived from Model now. --- include/Engine/Collision/Collision.h | 2 +- src/Engine/Collision/Collision.cpp | 6 +++--- src/Engine/Collision/FillFrustumOctreeSystem.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/Engine/Collision/Collision.h b/include/Engine/Collision/Collision.h index 86f397f7..c3759393 100644 --- a/include/Engine/Collision/Collision.h +++ b/include/Engine/Collision/Collision.h @@ -79,7 +79,7 @@ bool AABBVsAABB(const AABB& a, const AABB& b); bool AABBVsAABB(const AABB& a, const AABB& b, glm::vec3& minimumTranslation); // Calculates an absolute AABB from an entity AABB component -boost::optional EntityAbsoluteAABB(EntityWrapper& entity); +boost::optional EntityAbsoluteAABB(EntityWrapper& entity, bool takeModelBox = false); boost::optional AbsoluteAABBExplosionEffect(EntityWrapper& entity); } diff --git a/src/Engine/Collision/Collision.cpp b/src/Engine/Collision/Collision.cpp index 07080caf..b7b21969 100644 --- a/src/Engine/Collision/Collision.cpp +++ b/src/Engine/Collision/Collision.cpp @@ -565,10 +565,10 @@ bool AABBvsTriangles(const AABB& box, return hit; } -boost::optional EntityAbsoluteAABB(EntityWrapper& entity) +boost::optional EntityAbsoluteAABB(EntityWrapper& entity, bool takeModelBox) { AABB modelSpaceBox; - if (entity.HasComponent("AABB")) { + if (entity.HasComponent("AABB") && !takeModelBox) { ComponentWrapper& cAABB = entity["AABB"]; modelSpaceBox = EntityAABB::FromOriginSize((glm::vec3)cAABB["Origin"], (glm::vec3)cAABB["Size"]); } else if (entity.HasComponent("Model")) { @@ -614,7 +614,7 @@ boost::optional EntityAbsoluteAABB(EntityWrapper& entity) boost::optional AbsoluteAABBExplosionEffect(EntityWrapper& entity) { - boost::optional modelBox = EntityAbsoluteAABB(entity); + boost::optional modelBox = EntityAbsoluteAABB(entity, true); if (!modelBox) { return boost::none; } diff --git a/src/Engine/Collision/FillFrustumOctreeSystem.cpp b/src/Engine/Collision/FillFrustumOctreeSystem.cpp index a8835266..2be8bee0 100644 --- a/src/Engine/Collision/FillFrustumOctreeSystem.cpp +++ b/src/Engine/Collision/FillFrustumOctreeSystem.cpp @@ -11,7 +11,7 @@ void FillFrustumOctreeSystem::UpdateComponent(EntityWrapper& entity, ComponentWr if (entity.HasComponent("ExplosionEffect")) { absoluteAABB = Collision::AbsoluteAABBExplosionEffect(entity); } else { - absoluteAABB = Collision::EntityAbsoluteAABB(entity); + absoluteAABB = Collision::EntityAbsoluteAABB(entity, true); } if (absoluteAABB) { m_Octree->AddDynamicObject(*absoluteAABB);