From 49f37e17ae6ce59983f5d1c3d54722e5ba671579 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 28 Dec 2012 22:57:40 +0100 Subject: [PATCH] AxisAlignedBox::Transform now apply translation Added an optionnal argument to prevent translation from being applied Updated demo Former-commit-id: c56cb04733379eb6dda98b150931fb0e496ef889 --- examples/AnimatedMesh/main.cpp | 2 +- include/Nazara/Utility/AxisAlignedBox.hpp | 2 +- src/Nazara/Utility/AxisAlignedBox.cpp | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/examples/AnimatedMesh/main.cpp b/examples/AnimatedMesh/main.cpp index d4890dc47..f55b2808b 100644 --- a/examples/AnimatedMesh/main.cpp +++ b/examples/AnimatedMesh/main.cpp @@ -483,7 +483,7 @@ int main() NzDebugDrawer::Draw(hellknight.GetAABB()); NzAxisAlignedBox aabb(drfreak.GetMesh()->GetAABB()); - aabb.Transform(drfreak.GetTransformMatrix()); + aabb.Transform(drfreak.GetTransformMatrix(), false); NzRenderer::SetMatrix(nzMatrixType_World, NzMatrix4f::Translate(drfreak.GetDerivedTranslation())); NzDebugDrawer::SetPrimaryColor(NzColor::Red); diff --git a/include/Nazara/Utility/AxisAlignedBox.hpp b/include/Nazara/Utility/AxisAlignedBox.hpp index 7d1d0dfef..ee1cde0ec 100644 --- a/include/Nazara/Utility/AxisAlignedBox.hpp +++ b/include/Nazara/Utility/AxisAlignedBox.hpp @@ -42,7 +42,7 @@ class NAZARA_API NzAxisAlignedBox NzString ToString() const; - void Transform(const NzMatrix4f& matrix); + void Transform(const NzMatrix4f& matrix, bool applyTranslation = true); operator NzString() const; diff --git a/src/Nazara/Utility/AxisAlignedBox.cpp b/src/Nazara/Utility/AxisAlignedBox.cpp index 339e178e5..d719fb17d 100644 --- a/src/Nazara/Utility/AxisAlignedBox.cpp +++ b/src/Nazara/Utility/AxisAlignedBox.cpp @@ -206,19 +206,18 @@ NzString NzAxisAlignedBox::ToString() const return "NzAxisAlignedBox(ERROR)"; } -void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix) +void NzAxisAlignedBox::Transform(const NzMatrix4f& matrix, bool applyTranslation) { if (m_extend != nzExtend_Finite) return; - NzVector3f center = matrix.Transform(m_cube.GetCenter(), 0.f); // 0.f pour annuler la translation + NzVector3f center = matrix.Transform(m_cube.GetCenter(), (applyTranslation) ? 1.f : 0.f); // Valeur multipliant la translation NzVector3f halfSize = m_cube.GetSize() * 0.5f; halfSize.Set(std::fabs(matrix(0,0))*halfSize.x + std::fabs(matrix(1,0))*halfSize.y + std::fabs(matrix(2,0))*halfSize.z, std::fabs(matrix(0,1))*halfSize.x + std::fabs(matrix(1,1))*halfSize.y + std::fabs(matrix(2,1))*halfSize.z, std::fabs(matrix(0,2))*halfSize.x + std::fabs(matrix(1,2))*halfSize.y + std::fabs(matrix(2,2))*halfSize.z); - m_cube.Set(center - halfSize, center + halfSize); }