(SceneNode) Added virtual constructor idiom

(Light) Added default constructor


Former-commit-id: 591e6a8435d2cea6238e70c0058d381b8d547f3e
This commit is contained in:
Lynix 2015-01-23 21:04:29 +01:00
parent 1f043b61df
commit cf12552358
11 changed files with 72 additions and 1 deletions

View File

@ -18,12 +18,15 @@ struct NzLightUniforms;
class NAZARA_API NzLight : public NzSceneNode class NAZARA_API NzLight : public NzSceneNode
{ {
public: public:
NzLight(nzLightType type); NzLight(nzLightType type = nzLightType_Point);
NzLight(const NzLight& light); NzLight(const NzLight& light);
~NzLight() = default; ~NzLight() = default;
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override; void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
NzLight* Clone() const;
NzLight* Create() const;
void Enable(const NzShader* shader, const NzLightUniforms& uniforms, int offset = 0) const; void Enable(const NzShader* shader, const NzLightUniforms& uniforms, int offset = 0) const;
float GetAmbientFactor() const; float GetAmbientFactor() const;

View File

@ -41,6 +41,9 @@ class NAZARA_API NzModel : public NzSceneNode
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override; void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
void AdvanceAnimation(float elapsedTime); void AdvanceAnimation(float elapsedTime);
NzModel* Clone() const;
NzModel* Create() const;
void EnableAnimation(bool animation); void EnableAnimation(bool animation);
NzAnimation* GetAnimation() const; NzAnimation* GetAnimation() const;

View File

@ -28,6 +28,10 @@ class NAZARA_API NzSceneNode : public NzNode
virtual void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const = 0; virtual void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const = 0;
// Idiôme "virtual constructor"
virtual NzSceneNode* Clone() const = 0;
virtual NzSceneNode* Create() const = 0;
void EnableDrawing(bool drawingEnabled); void EnableDrawing(bool drawingEnabled);
NzVector3f GetBackward() const; NzVector3f GetBackward() const;

View File

@ -27,6 +27,9 @@ class NAZARA_API NzSceneRoot : public NzSceneNode
NzSceneRoot(NzScene* scene); NzSceneRoot(NzScene* scene);
virtual ~NzSceneRoot(); virtual ~NzSceneRoot();
NzSceneRoot* Clone() const;
NzSceneRoot* Create() const;
void MakeBoundingVolume() const override; void MakeBoundingVolume() const override;
void Register(); void Register();
void Unregister(); void Unregister();

View File

@ -22,6 +22,9 @@ class NAZARA_API NzSprite : public NzSceneNode
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override; void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
NzSprite* Clone() const;
NzSprite* Create() const;
const NzColor& GetColor() const; const NzColor& GetColor() const;
NzMaterial* GetMaterial() const; NzMaterial* GetMaterial() const;
nzSceneNodeType GetSceneNodeType() const override; nzSceneNodeType GetSceneNodeType() const override;

View File

@ -28,6 +28,9 @@ class NAZARA_API NzTextSprite : public NzSceneNode, NzAbstractAtlas::Listener
void Clear(); void Clear();
NzTextSprite* Clone() const;
NzTextSprite* Create() const;
const NzColor& GetColor() const; const NzColor& GetColor() const;
NzMaterial* GetMaterial() const; NzMaterial* GetMaterial() const;
nzSceneNodeType GetSceneNodeType() const override; nzSceneNodeType GetSceneNodeType() const override;

View File

@ -47,6 +47,16 @@ void NzLight::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
renderQueue->AddLight(this); renderQueue->AddLight(this);
} }
NzLight* NzLight::Clone() const
{
return new NzLight(*this);
}
NzLight* NzLight::Create() const
{
return new NzLight;
}
void NzLight::Enable(const NzShader* shader, const NzLightUniforms& uniforms, int offset) const void NzLight::Enable(const NzShader* shader, const NzLightUniforms& uniforms, int offset) const
{ {
/* /*

View File

@ -66,6 +66,16 @@ void NzModel::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
} }
} }
NzModel* NzModel::Clone() const
{
return new NzModel(*this);
}
NzModel* NzModel::Create() const
{
return new NzModel;
}
NzMaterial* NzModel::GetMaterial(const NzString& subMeshName) const NzMaterial* NzModel::GetMaterial(const NzString& subMeshName) const
{ {
#if NAZARA_GRAPHICS_SAFE #if NAZARA_GRAPHICS_SAFE

View File

@ -30,6 +30,18 @@ bool NzSceneRoot::IsDrawable() const
return true; return true;
} }
NzSceneRoot* NzSceneRoot::Clone() const
{
NazaraInternalError("SceneNode::Clone() called on SceneRoot");
return nullptr;
}
NzSceneRoot* NzSceneRoot::Create() const
{
NazaraInternalError("SceneNode::Create() called on SceneRoot");
return nullptr;
}
void NzSceneRoot::MakeBoundingVolume() const void NzSceneRoot::MakeBoundingVolume() const
{ {
m_boundingVolume.MakeInfinite(); m_boundingVolume.MakeInfinite();

View File

@ -48,6 +48,16 @@ void NzSprite::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
renderQueue->AddSprites(m_material, m_vertices, 1); renderQueue->AddSprites(m_material, m_vertices, 1);
} }
NzSprite* NzSprite::Clone() const
{
return new NzSprite(*this);
}
NzSprite* NzSprite::Create() const
{
return new NzSprite;
}
const NzColor& NzSprite::GetColor() const const NzColor& NzSprite::GetColor() const
{ {
return m_color; return m_color;

View File

@ -65,6 +65,16 @@ void NzTextSprite::Clear()
m_vertices.clear(); m_vertices.clear();
} }
NzTextSprite* NzTextSprite::Clone() const
{
return new NzTextSprite(*this);
}
NzTextSprite* NzTextSprite::Create() const
{
return new NzTextSprite;
}
const NzColor& NzTextSprite::GetColor() const const NzColor& NzTextSprite::GetColor() const
{ {
return m_color; return m_color;