diff --git a/ChangeLog.md b/ChangeLog.md index cca98be26..32e5a9225 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -83,6 +83,7 @@ Nazara Engine: - Add support for emissive and normal maps in .mtl loader using custom keywords ([map_]emissive and [map_]normal) - Music, Sound and SoundEmitter are now movable - Fixed Sound copy which was not copying looping state +- Fixed Billboard bounding volume Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Graphics/Billboard.cpp b/src/Nazara/Graphics/Billboard.cpp index e228a2a59..3896cce49 100644 --- a/src/Nazara/Graphics/Billboard.cpp +++ b/src/Nazara/Graphics/Billboard.cpp @@ -33,9 +33,12 @@ namespace Nz void Billboard::MakeBoundingVolume() const { - constexpr float sqrt2 = float(M_SQRT2); + // As billboard always face the screen, we must take its maximum size in account on every axis + float maxSize = float(M_SQRT2) * std::max(m_size.x, m_size.y); - m_boundingVolume.Set(Vector3f(0.f), sqrt2 * m_size.x * Vector3f::Right() + sqrt2 * m_size.y * Vector3f::Down()); + Nz::Vector3f halfSize = (maxSize * Vector3f::Right() + maxSize * Vector3f::Down() + maxSize * Vector3f::Forward()) / 2.f; + + m_boundingVolume.Set(-halfSize, halfSize); } BillboardLibrary::LibraryMap Billboard::s_library;