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*() {