Graphics/Billboard: Fix bounding volume

This commit is contained in:
Lynix 2018-04-09 20:33:40 +02:00
parent 1e88f5ddf8
commit 42a263ed6a
2 changed files with 6 additions and 2 deletions

View File

@ -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)

View File

@ -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;