Made SceneNodes non-movable
Fixed SceneNodes copy constructor not parenting the right object Former-commit-id: 21a08e3bb0931af426d97399dab86dda9acdf172
This commit is contained in:
parent
6d3228477f
commit
fdb722ef14
|
|
@ -36,7 +36,6 @@ class NAZARA_API NzModel : public NzSceneNode
|
|||
public:
|
||||
NzModel();
|
||||
NzModel(const NzModel& model);
|
||||
NzModel(NzModel&& model);
|
||||
virtual ~NzModel();
|
||||
|
||||
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
|
||||
|
|
@ -83,7 +82,6 @@ class NAZARA_API NzModel : public NzSceneNode
|
|||
void SetSkinCount(unsigned int skinCount);
|
||||
|
||||
NzModel& operator=(const NzModel& node);
|
||||
NzModel& operator=(NzModel&& node);
|
||||
|
||||
protected:
|
||||
void InvalidateNode() override;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ class NAZARA_API NzSceneNode : public NzNode
|
|||
public:
|
||||
NzSceneNode();
|
||||
NzSceneNode(const NzSceneNode& sceneNode);
|
||||
NzSceneNode(NzSceneNode& sceneNode) = delete;
|
||||
virtual ~NzSceneNode();
|
||||
|
||||
virtual void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const = 0;
|
||||
|
|
@ -43,7 +44,7 @@ class NAZARA_API NzSceneNode : public NzNode
|
|||
bool IsVisible() const;
|
||||
|
||||
NzSceneNode& operator=(const NzSceneNode& sceneNode);
|
||||
NzSceneNode& operator=(NzSceneNode&& sceneNode);
|
||||
NzSceneNode& operator=(NzSceneNode&& sceneNode) = delete;
|
||||
|
||||
protected:
|
||||
virtual bool FrustumCull(const NzFrustumf& frustum) const;
|
||||
|
|
|
|||
|
|
@ -18,8 +18,7 @@ class NAZARA_API NzSprite : public NzSceneNode
|
|||
NzSprite();
|
||||
NzSprite(NzTexture* texture);
|
||||
NzSprite(const NzSprite& sprite);
|
||||
NzSprite(NzSprite&& sprite);
|
||||
~NzSprite();
|
||||
~NzSprite() = default;
|
||||
|
||||
void AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const override;
|
||||
|
||||
|
|
@ -40,6 +39,8 @@ class NAZARA_API NzSprite : public NzSceneNode
|
|||
void SetTextureCoords(const NzRectf& coords);
|
||||
void SetTextureRect(const NzRectui& rect);
|
||||
|
||||
NzSprite& operator=(const NzSprite& sprite);
|
||||
|
||||
private:
|
||||
void InvalidateNode() override;
|
||||
void Register() override;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ m_innerAngle(light.m_innerAngle),
|
|||
m_outerAngle(light.m_outerAngle),
|
||||
m_radius(light.m_radius)
|
||||
{
|
||||
SetParent(light);
|
||||
SetParent(light.GetParent());
|
||||
}
|
||||
|
||||
void NzLight::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
|
||||
|
|
|
|||
|
|
@ -35,20 +35,14 @@ m_skinCount(1)
|
|||
NzModel::NzModel(const NzModel& model) :
|
||||
NzSceneNode(model),
|
||||
m_materials(model.m_materials),
|
||||
m_mesh(model.m_mesh),
|
||||
m_boundingVolume(model.m_boundingVolume),
|
||||
m_boundingVolumeUpdated(model.m_boundingVolumeUpdated),
|
||||
m_matCount(model.m_matCount),
|
||||
m_skin(model.m_skin),
|
||||
m_skinCount(model.m_skinCount)
|
||||
{
|
||||
if (model.m_mesh)
|
||||
{
|
||||
// Nous n'avons des matériaux que si nous avons un mesh
|
||||
m_mesh = model.m_mesh;
|
||||
m_materials = model.m_materials;
|
||||
}
|
||||
|
||||
SetParent(model);
|
||||
SetParent(model.GetParent());
|
||||
}
|
||||
|
||||
NzModel::~NzModel()
|
||||
|
|
@ -420,24 +414,6 @@ NzModel& NzModel::operator=(const NzModel& node)
|
|||
return *this;
|
||||
}
|
||||
|
||||
NzModel& NzModel::operator=(NzModel&& node)
|
||||
{
|
||||
NzSceneNode::operator=(node);
|
||||
|
||||
// Ressources
|
||||
m_mesh = std::move(node.m_mesh);
|
||||
m_materials = std::move(node.m_materials);
|
||||
|
||||
// Paramètres
|
||||
m_boundingVolume = node.m_boundingVolume;
|
||||
m_boundingVolumeUpdated = node.m_boundingVolumeUpdated;
|
||||
m_matCount = node.m_matCount;
|
||||
m_skin = node.m_skin;
|
||||
m_skinCount = node.m_skinCount;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void NzModel::InvalidateNode()
|
||||
{
|
||||
NzSceneNode::InvalidateNode();
|
||||
|
|
|
|||
|
|
@ -140,17 +140,6 @@ NzSceneNode& NzSceneNode::operator=(const NzSceneNode& sceneNode)
|
|||
return *this;
|
||||
}
|
||||
|
||||
NzSceneNode& NzSceneNode::operator=(NzSceneNode&& sceneNode)
|
||||
{
|
||||
NzNode::operator=(sceneNode);
|
||||
|
||||
// La scène est affectée via le parenting du node
|
||||
m_drawingEnabled = sceneNode.m_drawingEnabled;
|
||||
m_visible = sceneNode.m_visible;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool NzSceneNode::FrustumCull(const NzFrustumf& frustum) const
|
||||
{
|
||||
return frustum.Contains(GetBoundingVolume());
|
||||
|
|
|
|||
|
|
@ -53,23 +53,9 @@ m_vertices(sprite.m_vertices),
|
|||
m_boundingVolumeUpdated(sprite.m_boundingVolumeUpdated),
|
||||
m_verticesUpdated(sprite.m_verticesUpdated)
|
||||
{
|
||||
SetParent(sprite);
|
||||
SetParent(sprite.GetParent());
|
||||
}
|
||||
|
||||
NzSprite::NzSprite(NzSprite&& sprite) :
|
||||
NzSceneNode(sprite),
|
||||
m_boundingVolume(sprite.m_boundingVolume),
|
||||
m_material(std::move(sprite.m_material)),
|
||||
m_textureCoords(sprite.m_textureCoords),
|
||||
m_size(sprite.m_size),
|
||||
m_vertices(sprite.m_vertices),
|
||||
m_boundingVolumeUpdated(sprite.m_boundingVolumeUpdated),
|
||||
m_verticesUpdated(sprite.m_verticesUpdated)
|
||||
{
|
||||
}
|
||||
|
||||
NzSprite::~NzSprite() = default;
|
||||
|
||||
void NzSprite::AddToRenderQueue(NzAbstractRenderQueue* renderQueue) const
|
||||
{
|
||||
if (!m_verticesUpdated)
|
||||
|
|
@ -189,6 +175,22 @@ void NzSprite::SetTextureRect(const NzRectui& rect)
|
|||
SetTextureCoords(NzRectf(invWidth*rect.x, invHeight*rect.y, invWidth*rect.width, invHeight*rect.height));
|
||||
}
|
||||
|
||||
NzSprite& NzSprite::operator=(const NzSprite& sprite)
|
||||
{
|
||||
NzSceneNode::operator=(sprite);
|
||||
|
||||
m_color = sprite.m_color;
|
||||
m_material = sprite.m_material;
|
||||
m_textureCoords = sprite.m_textureCoords;
|
||||
m_size = sprite.m_size;
|
||||
|
||||
// On ne copie pas les sommets finaux car il est très probable que nos paramètres soient modifiés et qu'ils doivent être régénérés de toute façon
|
||||
m_boundingVolumeUpdated = false;
|
||||
m_verticesUpdated = false;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void NzSprite::InvalidateNode()
|
||||
{
|
||||
NzSceneNode::InvalidateNode();
|
||||
|
|
|
|||
Loading…
Reference in New Issue