22 Node(
const std::string& name);
27 Node& operator=(
const Node&) =
delete;
30 virtual ~
Node() =
default;
32 void setParent(
Node *parent);
33 Node* getParent()
const;
35 const std::string& getName()
const;
37 Node* getNode(
const std::string& name);
38 const Node* getNode(
const std::string& name)
const;
40 const Math::Vec3f& getAbsolutePosition();
42 const Math::Vec3f& getAbsoluteScale();
44 const Math::Mat4x4f& getTransform();
46 const std::vector<Node*>& getChildren()
const;
48 void attachChild(
Node& child);
55 void setPosition(
const Math::Vec3f& position,
TransformSpace space = TransformSpace::Local);
56 void setRotation(
float angle,
const Math::Vec3f& axis,
TransformSpace space = TransformSpace::Local);
67 void setDirection(
const Math::Vec3f& spaceTargetDirection,
const Math::Vec3f& localDirectionVector,
const Math::Vec3f& localUpVector,
TransformSpace space = TransformSpace::Local);
77 void lookAt(
const Math::Vec3f& targetPosition,
const Math::Vec3f& localDirectionVector,
const Math::Vec3f& localUpVector,
TransformSpace space = TransformSpace::Local);
79 virtual void needUpdate();
90 Math::Vec3f _position{Math::Vec3f(0.0f)};
92 Math::Vec3f _scale{Math::Vec3f(1.0f)};
94 Math::Vec3f _absolutePosition{Math::Vec3f(0.0f)};
96 Math::Vec3f _absoluteScale{Math::Vec3f(1.0f)};
98 Math::Mat4x4f _transform{Math::Mat4x4f::identity()};
100 bool _needUpdate{
true};
std::vector< Node * > _children
Quaternion< float > Quatf