Graphics/InstancedRenderable: Add Clone method
This commit is contained in:
parent
2f0c62df20
commit
bc2f6f67cc
|
|
@ -109,6 +109,8 @@ Nazara Engine:
|
|||
- Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such)
|
||||
- ⚠️ Replaced currentBitPos and currentByte fields by [read|write][BitPos][Byte] to handle properly bit reading/writing.
|
||||
- InstancedRenderable::SetMaterial methods are now public.
|
||||
- Fixed Model copy constructor not copying materials
|
||||
- ⚠️ Added InstancedRenderable::Clone() method
|
||||
|
||||
Nazara Development Kit:
|
||||
- Added ImageWidget (#139)
|
||||
|
|
|
|||
|
|
@ -70,6 +70,11 @@ namespace Ndk
|
|||
|
||||
renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect);
|
||||
}
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
class OBBDebugRenderable : public DebugRenderable
|
||||
|
|
@ -94,6 +99,11 @@ namespace Ndk
|
|||
|
||||
renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect);
|
||||
}
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ namespace Nz
|
|||
|
||||
void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override;
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
|
||||
inline const Color& GetColor() const;
|
||||
inline float GetRotation() const;
|
||||
inline const Vector2f& GetSize() const;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ namespace Nz
|
|||
|
||||
virtual void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const = 0;
|
||||
|
||||
virtual std::unique_ptr<InstancedRenderable> Clone() const = 0;
|
||||
|
||||
virtual bool Cull(const Frustumf& frustum, const InstanceData& instanceData) const;
|
||||
|
||||
inline void EnsureBoundingVolumeUpdated() const;
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ namespace Nz
|
|||
void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override;
|
||||
inline void AddToRenderQueue(AbstractRenderQueue* renderQueue, const Matrix4f& transformMatrix, int renderOrder = 0, const Recti& scissorRect = Recti(-1, -1, -1, -1)) const;
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
|
||||
using InstancedRenderable::GetMaterial;
|
||||
const MaterialRef& GetMaterial(const String& subMeshName) const;
|
||||
const MaterialRef& GetMaterial(std::size_t skinIndex, const String& subMeshName) const;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,8 @@ namespace Nz
|
|||
*
|
||||
* \param model Model to copy
|
||||
*/
|
||||
inline Model::Model(const Model& model)
|
||||
inline Model::Model(const Model& model) :
|
||||
InstancedRenderable(model)
|
||||
{
|
||||
SetMesh(model.m_mesh);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ namespace Nz
|
|||
void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override;
|
||||
void AdvanceAnimation(float elapsedTime);
|
||||
|
||||
SkeletalModel* Clone() const;
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
SkeletalModel* Create() const;
|
||||
|
||||
void EnableAnimation(bool animation);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ namespace Nz
|
|||
|
||||
void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override;
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
|
||||
inline const Color& GetColor() const;
|
||||
inline const Color& GetCornerColor(RectCorner corner) const;
|
||||
inline const Vector3f& GetOrigin() const;
|
||||
|
|
|
|||
|
|
@ -34,11 +34,14 @@ namespace Nz
|
|||
|
||||
inline void Clear();
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
|
||||
inline const Color& GetColor() const;
|
||||
inline float GetScale() const;
|
||||
|
||||
inline void SetColor(const Color& color);
|
||||
inline void SetDefaultMaterial();
|
||||
using InstancedRenderable::SetMaterial;
|
||||
inline void SetMaterial(MaterialRef material);
|
||||
inline void SetMaterial(std::size_t skinIndex, MaterialRef material);
|
||||
inline void SetScale(float scale);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ namespace Nz
|
|||
|
||||
void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override;
|
||||
|
||||
std::unique_ptr<InstancedRenderable> Clone() const override;
|
||||
|
||||
inline void DisableTile(const Vector2ui& tilePos);
|
||||
inline void DisableTiles();
|
||||
inline void DisableTiles(const Vector2ui* tilesPos, std::size_t tileCount);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,14 @@ namespace Nz
|
|||
renderQueue->AddBillboards(instanceData.renderOrder, GetMaterial(), 1, scissorRect, &position, &m_size, &m_sinCos, &m_color);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Clones this billboard
|
||||
*/
|
||||
std::unique_ptr<InstancedRenderable> Billboard::Clone() const
|
||||
{
|
||||
return std::make_unique<Billboard>(*this);
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Makes the bounding volume of this billboard
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ namespace Nz
|
|||
* \param renderQueue Queue to be added
|
||||
* \param instanceData Data used for this instance
|
||||
*/
|
||||
|
||||
void Model::AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const
|
||||
{
|
||||
unsigned int submeshCount = m_mesh->GetSubMeshCount();
|
||||
|
|
@ -69,6 +68,14 @@ namespace Nz
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Clones this model
|
||||
*/
|
||||
std::unique_ptr<InstancedRenderable> Model::Clone() const
|
||||
{
|
||||
return std::make_unique<Model>(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Gets the material of the named submesh
|
||||
* \return Pointer to the current material
|
||||
|
|
|
|||
|
|
@ -126,10 +126,9 @@ namespace Nz
|
|||
* \brief Clones this skeletal model
|
||||
* \return Pointer to newly allocated SkeletalModel
|
||||
*/
|
||||
|
||||
SkeletalModel* SkeletalModel::Clone() const
|
||||
std::unique_ptr<InstancedRenderable> SkeletalModel::Clone() const
|
||||
{
|
||||
return new SkeletalModel(*this);
|
||||
return std::make_unique<SkeletalModel>(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -21,17 +21,23 @@ namespace Nz
|
|||
* \param renderQueue Queue to be added
|
||||
* \param instanceData Data for the instance
|
||||
*/
|
||||
|
||||
void Sprite::AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const
|
||||
{
|
||||
const VertexStruct_XYZ_Color_UV* vertices = reinterpret_cast<const VertexStruct_XYZ_Color_UV*>(instanceData.data.data());
|
||||
renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(), vertices, 1, scissorRect);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Clones this sprite
|
||||
*/
|
||||
std::unique_ptr<InstancedRenderable> Sprite::Clone() const
|
||||
{
|
||||
return std::make_unique<Sprite>(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Makes the bounding volume of this text
|
||||
*/
|
||||
|
||||
void Sprite::MakeBoundingVolume() const
|
||||
{
|
||||
Vector3f origin(m_origin.x, -m_origin.y, m_origin.z);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,14 @@ namespace Nz
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Clones this text sprite
|
||||
*/
|
||||
std::unique_ptr<InstancedRenderable> TextSprite::Clone() const
|
||||
{
|
||||
return std::make_unique<TextSprite>(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Updates the text
|
||||
*
|
||||
|
|
|
|||
|
|
@ -37,6 +37,14 @@ namespace Nz
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Clones this tilemap
|
||||
*/
|
||||
std::unique_ptr<InstancedRenderable> TileMap::Clone() const
|
||||
{
|
||||
return std::make_unique<TileMap>(*this);
|
||||
}
|
||||
|
||||
void TileMap::MakeBoundingVolume() const
|
||||
{
|
||||
Nz::Vector2f size = GetSize();
|
||||
|
|
|
|||
Loading…
Reference in New Issue