From 41afb3a3a1ef75b764024d0e4c4935e90a430e48 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 26 May 2015 00:07:48 +0200 Subject: [PATCH] Math/OrientedBox: Add Update(Vector3) overload Former-commit-id: 3d9e75d78d1242b4ee75500c2b9ef4e38b2a7453 --- include/Nazara/Math/BoundingVolume.hpp | 1 + include/Nazara/Math/BoundingVolume.inl | 10 ++++++++++ include/Nazara/Math/OrientedBox.hpp | 1 + include/Nazara/Math/OrientedBox.inl | 7 +++++++ 4 files changed, 19 insertions(+) diff --git a/include/Nazara/Math/BoundingVolume.hpp b/include/Nazara/Math/BoundingVolume.hpp index 1d0521d72..3f1a7837c 100644 --- a/include/Nazara/Math/BoundingVolume.hpp +++ b/include/Nazara/Math/BoundingVolume.hpp @@ -44,6 +44,7 @@ class NzBoundingVolume NzString ToString() const; void Update(const NzMatrix4& transformMatrix); + void Update(const NzVector3& translation); NzBoundingVolume operator*(T scalar) const; diff --git a/include/Nazara/Math/BoundingVolume.inl b/include/Nazara/Math/BoundingVolume.inl index ad8fc9415..9e2a4c21f 100644 --- a/include/Nazara/Math/BoundingVolume.inl +++ b/include/Nazara/Math/BoundingVolume.inl @@ -181,6 +181,16 @@ void NzBoundingVolume::Update(const NzMatrix4& transformMatrix) aabb.ExtendTo(obb(i)); } +template +void NzBoundingVolume::Update(const NzVector3& translation) +{ + obb.Update(translation); + + aabb.Set(obb(0), obb(1)); + for (unsigned int i = 2; i < 8; ++i) + aabb.ExtendTo(obb(i)); +} + template NzBoundingVolume NzBoundingVolume::operator*(T scalar) const { diff --git a/include/Nazara/Math/OrientedBox.hpp b/include/Nazara/Math/OrientedBox.hpp index 1631099aa..017d627f4 100644 --- a/include/Nazara/Math/OrientedBox.hpp +++ b/include/Nazara/Math/OrientedBox.hpp @@ -39,6 +39,7 @@ class NzOrientedBox NzString ToString() const; void Update(const NzMatrix4& transformMatrix); + void Update(const NzVector3& transformMatrix); operator NzVector3*(); operator const NzVector3*() const; diff --git a/include/Nazara/Math/OrientedBox.inl b/include/Nazara/Math/OrientedBox.inl index c83aee440..e037cfa0f 100644 --- a/include/Nazara/Math/OrientedBox.inl +++ b/include/Nazara/Math/OrientedBox.inl @@ -132,6 +132,13 @@ void NzOrientedBox::Update(const NzMatrix4& transformMatrix) m_corners[i] = transformMatrix.Transform(localBox.GetCorner(static_cast(i))); } +template +void NzOrientedBox::Update(const NzVector3& translation) +{ + for (unsigned int i = 0; i <= nzBoxCorner_Max; ++i) + m_corners[i] = localBox.GetCorner(static_cast(i)) + translation; +} + template NzOrientedBox::operator NzVector3*() {