Graphics/Model: Update to Renderable
(Note: this branch doesn't compile right now, this is normal) Former-commit-id: 8c7e823122744394dda31db9acbfe2823c6f29e2
This commit is contained in:
parent
f181d0f2df
commit
e1a25a8885
|
|
@ -11,7 +11,7 @@
|
||||||
#include <Nazara/Core/Resource.hpp>
|
#include <Nazara/Core/Resource.hpp>
|
||||||
#include <Nazara/Core/ResourceLoader.hpp>
|
#include <Nazara/Core/ResourceLoader.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/Material.hpp>
|
||||||
#include <Nazara/Graphics/SceneNode.hpp>
|
#include <Nazara/Graphics/Renderable.hpp>
|
||||||
#include <Nazara/Utility/Mesh.hpp>
|
#include <Nazara/Utility/Mesh.hpp>
|
||||||
|
|
||||||
struct NAZARA_API NzModelParameters
|
struct NAZARA_API NzModelParameters
|
||||||
|
|
@ -29,17 +29,17 @@ class NzModel;
|
||||||
|
|
||||||
using NzModelLoader = NzResourceLoader<NzModel, NzModelParameters>;
|
using NzModelLoader = NzResourceLoader<NzModel, NzModelParameters>;
|
||||||
|
|
||||||
class NAZARA_API NzModel : public NzResource, public NzSceneNode
|
class NAZARA_API NzModel : public NzRenderable, public NzResource
|
||||||
{
|
{
|
||||||
friend NzModelLoader;
|
friend NzModelLoader;
|
||||||
friend class NzScene;
|
friend class NzScene;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NzModel();
|
NzModel();
|
||||||
NzModel(const NzModel& model);
|
NzModel(const NzModel& model) = default;
|
||||||
virtual ~NzModel();
|
virtual ~NzModel();
|
||||||
|
|
||||||
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
|
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue, const NzMatrix4f& transformMatrix) const override;
|
||||||
|
|
||||||
NzModel* Clone() const;
|
NzModel* Clone() const;
|
||||||
NzModel* Create() const;
|
NzModel* Create() const;
|
||||||
|
|
@ -52,12 +52,8 @@ class NAZARA_API NzModel : public NzResource, public NzSceneNode
|
||||||
unsigned int GetSkin() const;
|
unsigned int GetSkin() const;
|
||||||
unsigned int GetSkinCount() const;
|
unsigned int GetSkinCount() const;
|
||||||
NzMesh* GetMesh() const;
|
NzMesh* GetMesh() const;
|
||||||
nzSceneNodeType GetSceneNodeType() const override;
|
|
||||||
|
|
||||||
virtual bool IsAnimated() const;
|
virtual bool IsAnimated() const;
|
||||||
bool IsDrawable() const;
|
|
||||||
|
|
||||||
void InvalidateBoundingVolume();
|
|
||||||
|
|
||||||
bool LoadFromFile(const NzString& filePath, const NzModelParameters& params = NzModelParameters());
|
bool LoadFromFile(const NzString& filePath, const NzModelParameters& params = NzModelParameters());
|
||||||
bool LoadFromMemory(const void* data, std::size_t size, const NzModelParameters& params = NzModelParameters());
|
bool LoadFromMemory(const void* data, std::size_t size, const NzModelParameters& params = NzModelParameters());
|
||||||
|
|
@ -75,7 +71,7 @@ class NAZARA_API NzModel : public NzResource, public NzSceneNode
|
||||||
void SetSkin(unsigned int skin);
|
void SetSkin(unsigned int skin);
|
||||||
void SetSkinCount(unsigned int skinCount);
|
void SetSkinCount(unsigned int skinCount);
|
||||||
|
|
||||||
NzModel& operator=(const NzModel& node);
|
NzModel& operator=(const NzModel& node) = default;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void MakeBoundingVolume() const override;
|
void MakeBoundingVolume() const override;
|
||||||
|
|
|
||||||
|
|
@ -31,27 +31,13 @@ m_skinCount(1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NzModel::NzModel(const NzModel& model) :
|
|
||||||
NzResource(model),
|
|
||||||
NzSceneNode(model),
|
|
||||||
m_materials(model.m_materials),
|
|
||||||
m_mesh(model.m_mesh),
|
|
||||||
m_matCount(model.m_matCount),
|
|
||||||
m_skin(model.m_skin),
|
|
||||||
m_skinCount(model.m_skinCount)
|
|
||||||
{
|
|
||||||
SetParent(model.GetParent());
|
|
||||||
}
|
|
||||||
|
|
||||||
NzModel::~NzModel()
|
NzModel::~NzModel()
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzModel::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
|
void NzModel::AddToRenderQueue(NzAbstractRenderQueue* renderQueue, const NzMatrix4f& transformMatrix) const
|
||||||
{
|
{
|
||||||
const NzMatrix4f& transformMatrix = GetTransformMatrix();
|
|
||||||
|
|
||||||
unsigned int submeshCount = m_mesh->GetSubMeshCount();
|
unsigned int submeshCount = m_mesh->GetSubMeshCount();
|
||||||
for (unsigned int i = 0; i < submeshCount; ++i)
|
for (unsigned int i = 0; i < submeshCount; ++i)
|
||||||
{
|
{
|
||||||
|
|
@ -173,11 +159,6 @@ NzMesh* NzModel::GetMesh() const
|
||||||
return m_mesh;
|
return m_mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
nzSceneNodeType NzModel::GetSceneNodeType() const
|
|
||||||
{
|
|
||||||
return nzSceneNodeType_Model;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned int NzModel::GetSkin() const
|
unsigned int NzModel::GetSkin() const
|
||||||
{
|
{
|
||||||
return m_skin;
|
return m_skin;
|
||||||
|
|
@ -193,17 +174,6 @@ bool NzModel::IsAnimated() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzModel::IsDrawable() const
|
|
||||||
{
|
|
||||||
return m_mesh != nullptr && m_mesh->GetSubMeshCount() >= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NzModel::InvalidateBoundingVolume()
|
|
||||||
{
|
|
||||||
m_boundingVolume.MakeNull();
|
|
||||||
m_boundingVolumeUpdated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NzModel::LoadFromFile(const NzString& filePath, const NzModelParameters& params)
|
bool NzModel::LoadFromFile(const NzString& filePath, const NzModelParameters& params)
|
||||||
{
|
{
|
||||||
return NzModelLoader::LoadFromFile(this, filePath, params);
|
return NzModelLoader::LoadFromFile(this, filePath, params);
|
||||||
|
|
@ -389,22 +359,6 @@ void NzModel::SetSkinCount(unsigned int skinCount)
|
||||||
m_skinCount = skinCount;
|
m_skinCount = skinCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
NzModel& NzModel::operator=(const NzModel& node)
|
|
||||||
{
|
|
||||||
NzResource::operator=(node);
|
|
||||||
NzSceneNode::operator=(node);
|
|
||||||
|
|
||||||
m_boundingVolume = node.m_boundingVolume;
|
|
||||||
m_boundingVolumeUpdated = node.m_boundingVolumeUpdated;
|
|
||||||
m_matCount = node.m_matCount;
|
|
||||||
m_materials = node.m_materials;
|
|
||||||
m_mesh = node.m_mesh;
|
|
||||||
m_skin = node.m_skin;
|
|
||||||
m_skinCount = node.m_skinCount;
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NzModel::MakeBoundingVolume() const
|
void NzModel::MakeBoundingVolume() const
|
||||||
{
|
{
|
||||||
if (m_mesh)
|
if (m_mesh)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue