(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
{
public:
NzLight(nzLightType type);
NzLight(nzLightType type = nzLightType_Point);
NzLight(const NzLight& light);
~NzLight() = default;
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
NzLight* Clone() const;
NzLight* Create() const;
void Enable(const NzShader* shader, const NzLightUniforms& uniforms, int offset = 0) const;
float GetAmbientFactor() const;

View File

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

View File

@ -28,6 +28,10 @@ class NAZARA_API NzSceneNode : public NzNode
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);
NzVector3f GetBackward() const;

View File

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

View File

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

View File

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

View File

@ -47,6 +47,16 @@ void NzLight::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
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
{
/*

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
{
#if NAZARA_GRAPHICS_SAFE

View File

@ -30,6 +30,18 @@ bool NzSceneRoot::IsDrawable() const
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
{
m_boundingVolume.MakeInfinite();

View File

@ -48,6 +48,16 @@ void NzSprite::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
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
{
return m_color;

View File

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