Added initial states to node
Former-commit-id: 2127584e3432c16841817632522ea3bb82c7a786
This commit is contained in:
parent
8376fb38cf
commit
7e533209dc
|
|
@ -27,6 +27,9 @@ class NAZARA_API NzNode
|
||||||
bool GetInheritRotation() const;
|
bool GetInheritRotation() const;
|
||||||
bool GetInheritScale() const;
|
bool GetInheritScale() const;
|
||||||
bool GetInheritTranslation() const;
|
bool GetInheritTranslation() const;
|
||||||
|
NzQuaternionf GetInitialRotation() const;
|
||||||
|
NzVector3f GetInitialScale() const;
|
||||||
|
NzVector3f GetInitialTranslation() const;
|
||||||
const NzNode* GetParent() const;
|
const NzNode* GetParent() const;
|
||||||
NzQuaternionf GetRotation() const;
|
NzQuaternionf GetRotation() const;
|
||||||
NzVector3f GetScale() const;
|
NzVector3f GetScale() const;
|
||||||
|
|
@ -47,6 +50,12 @@ class NAZARA_API NzNode
|
||||||
void SetInheritRotation(bool inheritRotation);
|
void SetInheritRotation(bool inheritRotation);
|
||||||
void SetInheritScale(bool inheritScale);
|
void SetInheritScale(bool inheritScale);
|
||||||
void SetInheritTranslation(bool inheritTranslation);
|
void SetInheritTranslation(bool inheritTranslation);
|
||||||
|
void SetInitialRotation(const NzQuaternionf& quat);
|
||||||
|
void SetInitialScale(const NzVector3f& scale);
|
||||||
|
void SetInitialScale(float scale);
|
||||||
|
void SetInitialScale(float scaleX, float scaleY, float scaleZ);
|
||||||
|
void SetInitialTranslation(const NzVector3f& translation);
|
||||||
|
void SetInitialTranslation(float translationX, float translationXY, float translationZ);
|
||||||
void SetParent(const NzNode* node = nullptr);
|
void SetParent(const NzNode* node = nullptr);
|
||||||
void SetParent(const NzNode& node);
|
void SetParent(const NzNode& node);
|
||||||
void SetRotation(const NzQuaternionf& quat, nzCoordSys coordSys = nzCoordSys_Local);
|
void SetRotation(const NzQuaternionf& quat, nzCoordSys coordSys = nzCoordSys_Local);
|
||||||
|
|
@ -68,10 +77,13 @@ class NAZARA_API NzNode
|
||||||
mutable std::set<NzNode*> m_childs;
|
mutable std::set<NzNode*> m_childs;
|
||||||
mutable NzMatrix4f m_transformMatrix;
|
mutable NzMatrix4f m_transformMatrix;
|
||||||
mutable NzQuaternionf m_derivedRotation;
|
mutable NzQuaternionf m_derivedRotation;
|
||||||
|
NzQuaternionf m_initialRotation;
|
||||||
NzQuaternionf m_rotation;
|
NzQuaternionf m_rotation;
|
||||||
NzString m_name;
|
NzString m_name;
|
||||||
mutable NzVector3f m_derivedTranslation;
|
mutable NzVector3f m_derivedTranslation;
|
||||||
mutable NzVector3f m_derivedScale;
|
mutable NzVector3f m_derivedScale;
|
||||||
|
NzVector3f m_initialScale;
|
||||||
|
NzVector3f m_initialTranslation;
|
||||||
NzVector3f m_scale;
|
NzVector3f m_scale;
|
||||||
NzVector3f m_translation;
|
NzVector3f m_translation;
|
||||||
const NzNode* m_parent;
|
const NzNode* m_parent;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@
|
||||||
#include <Nazara/Utility/Debug.hpp>
|
#include <Nazara/Utility/Debug.hpp>
|
||||||
|
|
||||||
NzNode::NzNode() :
|
NzNode::NzNode() :
|
||||||
|
m_initialRotation(NzQuaternionf::Identity()),
|
||||||
m_rotation(NzQuaternionf::Identity()),
|
m_rotation(NzQuaternionf::Identity()),
|
||||||
|
m_initialScale(NzVector3f(1.f, 1.f, 1.f)),
|
||||||
|
m_initialTranslation(NzVector3f::Zero()),
|
||||||
m_scale(NzVector3f(1.f, 1.f, 1.f)),
|
m_scale(NzVector3f(1.f, 1.f, 1.f)),
|
||||||
m_translation(NzVector3f::Zero()),
|
m_translation(NzVector3f::Zero()),
|
||||||
m_parent(nullptr),
|
m_parent(nullptr),
|
||||||
|
|
@ -19,7 +22,10 @@ m_matrixUpdated(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
NzNode::NzNode(const NzNode& node) :
|
NzNode::NzNode(const NzNode& node) :
|
||||||
|
m_initialRotation(node.m_initialRotation),
|
||||||
m_rotation(node.m_rotation),
|
m_rotation(node.m_rotation),
|
||||||
|
m_initialScale(node.m_initialScale),
|
||||||
|
m_initialTranslation(node.m_initialTranslation),
|
||||||
m_scale(node.m_scale),
|
m_scale(node.m_scale),
|
||||||
m_translation(node.m_translation),
|
m_translation(node.m_translation),
|
||||||
m_parent(node.m_parent),
|
m_parent(node.m_parent),
|
||||||
|
|
@ -81,6 +87,21 @@ bool NzNode::GetInheritTranslation() const
|
||||||
return m_inheritTranslation;
|
return m_inheritTranslation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NzQuaternionf NzNode::GetInitialRotation() const
|
||||||
|
{
|
||||||
|
return m_initialRotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzVector3f NzNode::GetInitialScale() const
|
||||||
|
{
|
||||||
|
return m_initialScale;
|
||||||
|
}
|
||||||
|
|
||||||
|
NzVector3f NzNode::GetInitialTranslation() const
|
||||||
|
{
|
||||||
|
return m_initialTranslation;
|
||||||
|
}
|
||||||
|
|
||||||
const NzNode* NzNode::GetParent() const
|
const NzNode* NzNode::GetParent() const
|
||||||
{
|
{
|
||||||
return m_parent;
|
return m_parent;
|
||||||
|
|
@ -233,6 +254,49 @@ void NzNode::SetInheritTranslation(bool inheritTranslation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialRotation(const NzQuaternionf& rotation)
|
||||||
|
{
|
||||||
|
m_initialRotation = rotation
|
||||||
|
m_initialRotation.Normalize(); // Évitons toute mauvaise surprise ...
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialScale(const NzVector3f& scale)
|
||||||
|
{
|
||||||
|
m_initialScale = scale;
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialScale(float scale)
|
||||||
|
{
|
||||||
|
m_initialScale.Set(scale);
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialScale(float scaleX, float scaleY, float scaleZ)
|
||||||
|
{
|
||||||
|
m_initialScale.Set(scaleX, scaleY, scaleZ);
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialTranslation(const NzVector3f& translation)
|
||||||
|
{
|
||||||
|
m_initialTranslation = translation;
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void NzNode::SetInitialTranslation(float translationX, float translationY, float translationZ)
|
||||||
|
{
|
||||||
|
m_initialTranslation.Set(translationX, translationY, translationZ);
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
void NzNode::SetParent(const NzNode* node)
|
void NzNode::SetParent(const NzNode* node)
|
||||||
{
|
{
|
||||||
if (m_parent == node)
|
if (m_parent == node)
|
||||||
|
|
@ -393,20 +457,20 @@ void NzNode::UpdateDerived() const
|
||||||
|
|
||||||
if (m_inheritRotation)
|
if (m_inheritRotation)
|
||||||
{
|
{
|
||||||
m_derivedRotation = m_parent->m_derivedRotation * m_rotation;
|
m_derivedRotation = m_parent->m_derivedRotation * m_initialRotation * m_rotation;
|
||||||
m_derivedRotation.Normalize();
|
m_derivedRotation.Normalize();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_derivedRotation = m_rotation;
|
m_derivedRotation = m_initialRotation * m_rotation;
|
||||||
|
|
||||||
m_derivedScale = m_scale;
|
m_derivedScale = m_initialScale * m_scale;
|
||||||
if (m_inheritScale)
|
if (m_inheritScale)
|
||||||
m_derivedScale *= m_parent->m_derivedScale;
|
m_derivedScale *= m_parent->m_derivedScale;
|
||||||
|
|
||||||
if (m_inheritTranslation)
|
if (m_inheritTranslation)
|
||||||
m_derivedTranslation = m_parent->m_derivedRotation*(m_parent->m_derivedScale * m_translation) + m_parent->m_derivedTranslation;
|
m_derivedTranslation = m_parent->m_derivedRotation*(m_parent->m_derivedScale * (m_initialTranslation + m_translation)) + m_parent->m_derivedTranslation;
|
||||||
else
|
else
|
||||||
m_derivedTranslation = m_translation;
|
m_derivedTranslation = m_initialTranslation + m_translation;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue