From 7540fbf09c52207489036eac3a3f9a6ff1bfe89a Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 2 Mar 2013 00:23:49 +0100 Subject: [PATCH] Improved Node interface Former-commit-id: fdeb313d5e59e5b2f92f347370ee6b08572069b9 --- include/Nazara/Utility/Node.hpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/include/Nazara/Utility/Node.hpp b/include/Nazara/Utility/Node.hpp index 0418d22d0..efc8e0668 100644 --- a/include/Nazara/Utility/Node.hpp +++ b/include/Nazara/Utility/Node.hpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include class NAZARA_API NzNode { @@ -21,18 +21,25 @@ class NAZARA_API NzNode NzNode(const NzNode& node); virtual ~NzNode(); + void EnsureDerivedUpdate() const; + void EnsureTransformMatrixUpdate() const; + + const std::vector& GetChilds() const; bool GetInheritPosition() const; bool GetInheritRotation() const; bool GetInheritScale() const; NzVector3f GetInitialPosition() const; NzQuaternionf GetInitialRotation() const; NzVector3f GetInitialScale() const; + virtual nzNodeType GetNodeType() const; const NzNode* GetParent() const; NzVector3f GetPosition(nzCoordSys coordSys = nzCoordSys_Global) const; NzQuaternionf GetRotation(nzCoordSys coordSys = nzCoordSys_Global) const; NzVector3f GetScale(nzCoordSys coordSys = nzCoordSys_Global) const; const NzMatrix4f& GetTransformMatrix() const; + bool HasChilds() const; + NzNode& Interpolate(const NzNode& nodeA, const NzNode& nodeB, float interpolation); NzNode& Move(const NzVector3f& movement, nzCoordSys coordSys = nzCoordSys_Local); @@ -66,12 +73,13 @@ class NAZARA_API NzNode protected: void AddChild(NzNode* node) const; - void Invalidate(); + virtual void Invalidate(); + virtual void OnParenting(const NzNode* parent); void RemoveChild(NzNode* node) const; void UpdateDerived() const; - virtual void UpdateMatrix() const; + virtual void UpdateTransformMatrix() const; - mutable std::set m_childs; + mutable std::vector m_childs; mutable NzMatrix4f m_transformMatrix; mutable NzQuaternionf m_derivedRotation; NzQuaternionf m_initialRotation; @@ -88,7 +96,7 @@ class NAZARA_API NzNode bool m_inheritPosition; bool m_inheritRotation; bool m_inheritScale; - mutable bool m_matrixUpdated; + mutable bool m_transformMatrixUpdated; }; #endif // NAZARA_NODE_HPP