// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_SKELETALMESH_HPP #define NAZARA_SKELETALMESH_HPP #include #include #include #include namespace Nz { class SkeletalMesh; using SkeletalMeshConstRef = ObjectRef; using SkeletalMeshRef = ObjectRef; class NAZARA_UTILITY_API SkeletalMesh final : public SubMesh { public: SkeletalMesh(const Mesh* parent); ~SkeletalMesh(); bool Create(VertexBuffer* vertexBuffer); void Destroy(); const Boxf& GetAABB() const override; AnimationType GetAnimationType() const final; const IndexBuffer* GetIndexBuffer() const override; VertexBuffer* GetVertexBuffer(); const VertexBuffer* GetVertexBuffer() const; unsigned int GetVertexCount() const override; bool IsAnimated() const final; bool IsValid() const; void SetAABB(const Boxf& aabb); void SetIndexBuffer(const IndexBuffer* indexBuffer); template static SkeletalMeshRef New(Args&&... args); // Signals: NazaraSignal(OnSkeletalMeshDestroy, const SkeletalMesh* /*skeletalMesh*/); NazaraSignal(OnSkeletalMeshRelease, const SkeletalMesh* /*skeletalMesh*/); private: Boxf m_aabb; IndexBufferConstRef m_indexBuffer = nullptr; VertexBufferRef m_vertexBuffer = nullptr; }; } #include #endif // NAZARA_SKELETALMESH_HPP