diff --git a/include/Nazara/3D/Model.hpp b/include/Nazara/3D/Model.hpp index 14b0dc896..2dddccf25 100644 --- a/include/Nazara/3D/Model.hpp +++ b/include/Nazara/3D/Model.hpp @@ -29,6 +29,7 @@ class NAZARA_API NzModel : public NzSceneNode ~NzModel(); const NzAnimation* GetAnimation() const; + const NzAxisAlignedBox& GetAABB() const; const NzMaterial* GetMaterial(unsigned int matIndex) const; const NzMaterial* GetMaterial(unsigned int skinIndex, unsigned int matIndex) const; unsigned int GetMaterialCount() const; diff --git a/include/Nazara/3D/SceneNode.hpp b/include/Nazara/3D/SceneNode.hpp index 2d48307bd..cc531eab8 100644 --- a/include/Nazara/3D/SceneNode.hpp +++ b/include/Nazara/3D/SceneNode.hpp @@ -9,6 +9,7 @@ #include #include +#include #include class NzSceneNode : public NzNode @@ -16,6 +17,7 @@ class NzSceneNode : public NzNode public: virtual ~NzSceneNode(); + virtual const NzAxisAlignedBox& GetAABB() const = 0; virtual nzSceneNodeType GetSceneNodeType() const = 0; }; diff --git a/src/Nazara/3D/Model.cpp b/src/Nazara/3D/Model.cpp index cf8ab7a73..dd26a9f57 100644 --- a/src/Nazara/3D/Model.cpp +++ b/src/Nazara/3D/Model.cpp @@ -47,6 +47,19 @@ const NzAnimation* NzModel::GetAnimation() const return m_animation; } +const NzAxisAlignedBox& NzModel::GetAABB() const +{ + #if NAZARA_3D_SAFE + if (!m_mesh) + { + NazaraError("Model has no mesh"); + return NzAxisAlignedBox::Null; + } + #endif + + return m_mesh->GetAABB(); +} + const NzMaterial* NzModel::GetMaterial(unsigned int matIndex) const { #if NAZARA_3D_SAFE