Graphics/GraphicalMesh: Add AABB
This commit is contained in:
@@ -31,6 +31,7 @@ namespace Nz
|
||||
|
||||
inline void Clear();
|
||||
|
||||
inline const Boxf& GetAABB() const;
|
||||
inline const std::shared_ptr<RenderBuffer>& GetIndexBuffer(std::size_t subMesh) const;
|
||||
inline UInt32 GetIndexCount(std::size_t subMesh) const;
|
||||
inline IndexType GetIndexType(std::size_t subMesh) const;
|
||||
@@ -38,6 +39,7 @@ namespace Nz
|
||||
inline const std::shared_ptr<const VertexDeclaration>& GetVertexDeclaration(std::size_t subMesh) const;
|
||||
inline std::size_t GetSubMeshCount() const;
|
||||
|
||||
inline void UpdateAABB(const Boxf& aabb);
|
||||
inline void UpdateSubMeshIndexCount(std::size_t subMeshIndex, UInt32 indexCount);
|
||||
|
||||
GraphicalMesh& operator=(const GraphicalMesh&) = delete;
|
||||
@@ -52,12 +54,15 @@ namespace Nz
|
||||
UInt32 indexCount;
|
||||
};
|
||||
|
||||
static inline std::shared_ptr<GraphicalMesh> Build(const Primitive& primitive, const MeshParams& params = MeshParams());
|
||||
static inline std::shared_ptr<GraphicalMesh> Build(const PrimitiveList& primitiveList, const MeshParams& params = MeshParams());
|
||||
static std::shared_ptr<GraphicalMesh> BuildFromMesh(const Mesh& mesh);
|
||||
|
||||
NazaraSignal(OnInvalidated, GraphicalMesh* /*gfxMesh*/);
|
||||
|
||||
private:
|
||||
std::vector<SubMesh> m_subMeshes;
|
||||
Boxf m_aabb;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,11 @@ namespace Nz
|
||||
OnInvalidated(this);
|
||||
}
|
||||
|
||||
inline const Boxf& GraphicalMesh::GetAABB() const
|
||||
{
|
||||
return m_aabb;
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<RenderBuffer>& GraphicalMesh::GetIndexBuffer(std::size_t subMesh) const
|
||||
{
|
||||
assert(subMesh < m_subMeshes.size());
|
||||
@@ -60,6 +65,13 @@ namespace Nz
|
||||
return m_subMeshes.size();
|
||||
}
|
||||
|
||||
inline void GraphicalMesh::UpdateAABB(const Boxf& aabb)
|
||||
{
|
||||
m_aabb = aabb;
|
||||
|
||||
OnInvalidated(this);
|
||||
}
|
||||
|
||||
inline void GraphicalMesh::UpdateSubMeshIndexCount(std::size_t subMeshIndex, UInt32 indexCount)
|
||||
{
|
||||
NazaraAssert(subMeshIndex < m_subMeshes.size(), "invalid submesh index");
|
||||
@@ -67,6 +79,25 @@ namespace Nz
|
||||
|
||||
OnInvalidated(this);
|
||||
}
|
||||
|
||||
inline std::shared_ptr<GraphicalMesh> GraphicalMesh::Build(const Primitive& primitive, const MeshParams& params)
|
||||
{
|
||||
Mesh mesh;
|
||||
mesh.CreateStatic();
|
||||
mesh.BuildSubMesh(primitive, params);
|
||||
|
||||
return BuildFromMesh(mesh);
|
||||
}
|
||||
|
||||
inline std::shared_ptr<GraphicalMesh> GraphicalMesh::Build(const PrimitiveList& primitiveList, const MeshParams& params)
|
||||
{
|
||||
Mesh mesh;
|
||||
mesh.CreateStatic();
|
||||
mesh.BuildSubMeshes(primitiveList, params);
|
||||
|
||||
return BuildFromMesh(mesh);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#include <Nazara/Graphics/DebugOff.hpp>
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Nz
|
||||
class NAZARA_GRAPHICS_API Model : public InstancedRenderable
|
||||
{
|
||||
public:
|
||||
Model(std::shared_ptr<GraphicalMesh> graphicalMesh, const Boxf& aabb);
|
||||
Model(std::shared_ptr<GraphicalMesh> graphicalMesh);
|
||||
Model(const Model&) = delete;
|
||||
Model(Model&&) noexcept = default;
|
||||
~Model() = default;
|
||||
|
||||
Reference in New Issue
Block a user