diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index ea5b937ba..3249cdd48 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -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; diff --git a/include/Nazara/Graphics/SceneNode.hpp b/include/Nazara/Graphics/SceneNode.hpp index e5d70d10c..edfdf56e2 100644 --- a/include/Nazara/Graphics/SceneNode.hpp +++ b/include/Nazara/Graphics/SceneNode.hpp @@ -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; diff --git a/include/Nazara/Graphics/Sprite.hpp b/include/Nazara/Graphics/Sprite.hpp index a6040823c..ed4b99f20 100644 --- a/include/Nazara/Graphics/Sprite.hpp +++ b/include/Nazara/Graphics/Sprite.hpp @@ -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; diff --git a/src/Nazara/Graphics/Light.cpp b/src/Nazara/Graphics/Light.cpp index ff3d5bfdd..e3288adc2 100644 --- a/src/Nazara/Graphics/Light.cpp +++ b/src/Nazara/Graphics/Light.cpp @@ -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 diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index 54e9b964f..64e68a709 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -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(); diff --git a/src/Nazara/Graphics/SceneNode.cpp b/src/Nazara/Graphics/SceneNode.cpp index fcaf02743..d5ae7da72 100644 --- a/src/Nazara/Graphics/SceneNode.cpp +++ b/src/Nazara/Graphics/SceneNode.cpp @@ -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()); diff --git a/src/Nazara/Graphics/Sprite.cpp b/src/Nazara/Graphics/Sprite.cpp index 3d7a6d48e..24778dbd6 100644 --- a/src/Nazara/Graphics/Sprite.cpp +++ b/src/Nazara/Graphics/Sprite.cpp @@ -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();