OGRE-Next  2.3
Object-Oriented Graphics Rendering Engine
Ogre::Node Class Referenceabstract

Class representing a general-purpose node an articulated scene graph. More...

#include <OgreNode.h>

+ Inheritance diagram for Ogre::Node:

Classes

class  Listener
 Listener which gets called back on Node events. More...
 

Public Types

typedef ConstVectorIterator< NodeVecConstNodeVecIterator
 
typedef vector< Node * >::type NodeVec
 
typedef VectorIterator< NodeVecNodeVecIterator
 
enum  TransformSpace { TS_LOCAL , TS_PARENT , TS_WORLD }
 Enumeration denoting the spaces which a transform can be relative to. More...
 

Public Member Functions

 Node (const Transform &transformPtrs)
 Don't use this constructor unless you know what you're doing. More...
 
 Node (IdType id, NodeMemoryManager *nodeMemoryManager, Node *parent)
 Constructor, should only be called by parent, not directly. More...
 
virtual ~Node ()
 
virtual void _callMemoryChangeListeners ()=0
 Internal use, notifies all attached objects that our memory pointers (i.e. More...
 
virtual_l2 Quaternion _getDerivedOrientation () const
 Gets the orientation of the node as derived from all parents. More...
 
virtual_l2 Quaternion _getDerivedOrientationUpdated ()
 Gets the orientation of the node as derived from all parents. More...
 
virtual_l2 Vector3 _getDerivedPosition () const
 Gets the position of the node as derived from all parents. More...
 
virtual_l2 Vector3 _getDerivedPositionUpdated ()
 Gets the position of the node as derived from all parents. More...
 
virtual_l2 Vector3 _getDerivedScale () const
 Gets the scaling factor of the node as derived from all parents. More...
 
virtual_l2 Vector3 _getDerivedScaleUpdated ()
 Gets the scalling factor of the node as derived from all parents. More...
 
virtual_l2 FORCEINLINE const Matrix4_getFullTransform () const
 Gets the full transformation matrix for this node. More...
 
virtual_l2 const Matrix4_getFullTransformUpdated ()
 @See _getDerivedScaleUpdated remarks. More...
 
Transform_getTransform ()
 Returns a direct access to the Transform state. More...
 
virtual void _notifyStaticDirty () const
 Called by SceneManager when it is telling we're a static node being dirty Don't call this directly. More...
 
virtual_l2 void _setDerivedOrientation (const Quaternion &q)
 Sets the final world orientation of the node directly. More...
 
virtual_l2 void _setDerivedPosition (const Vector3 &pos)
 Sets the final world position of the node directly. More...
 
void _setNullNodeMemoryManager ()
 Manually set the mNodeMemoryManager to a null ptr. More...
 
void _updateChildren ()
 Helper method to update the Node and all children. More...
 
void addChild (Node *child)
 Adds a (precreated) child scene node to this node. More...
 
virtual_l2 Vector3 convertLocalToWorldDirection (const Vector3 &localDir, bool useScale)
 Gets the world direction of a point in the node local space useful for simple transforms that don't require a child node. More...
 
Vector3 convertLocalToWorldDirectionUpdated (const Vector3 &localDir, bool useScale)
 
virtual_l2 Quaternion convertLocalToWorldOrientation (const Quaternion &localOrientation)
 Gets the world orientation of an orientation in the node local space useful for simple transforms that don't require a child node. More...
 
Quaternion convertLocalToWorldOrientationUpdated (const Quaternion &localOrientation)
 
virtual_l2 Vector3 convertLocalToWorldPosition (const Vector3 &localPos)
 Gets the world position of a point in the node local space useful for simple transforms that don't require a child node. More...
 
Vector3 convertLocalToWorldPositionUpdated (const Vector3 &localPos)
 
virtual_l2 Vector3 convertWorldToLocalDirection (const Vector3 &worldDir, bool useScale)
 Gets the local direction, relative to this node, of the given world-space direction. More...
 
Vector3 convertWorldToLocalDirectionUpdated (const Vector3 &worldDir, bool useScale)
 
virtual_l2 Quaternion convertWorldToLocalOrientation (const Quaternion &worldOrientation)
 Gets the local orientation, relative to this node, of the given world-space orientation. More...
 
Quaternion convertWorldToLocalOrientationUpdated (const Quaternion &worldOrientation)
 
virtual_l2 Vector3 convertWorldToLocalPosition (const Vector3 &worldPos)
 Gets the local position, relative to this node, of the given world-space position. More...
 
Vector3 convertWorldToLocalPositionUpdated (const Vector3 &worldPos)
 
virtual NodecreateChild (SceneMemoryMgrTypes sceneType=SCENE_DYNAMIC, const Vector3 &translate=Vector3::ZERO, const Quaternion &rotate=Quaternion::IDENTITY)
 Creates an unnamed new Node as a child of this node. More...
 
NodegetChild (size_t index)
 Gets a pointer to a child node. More...
 
const NodegetChild (size_t index) const
 
NodeVecIterator getChildIterator ()
 Retrieves an iterator for efficiently looping through all children of this node. More...
 
ConstNodeVecIterator getChildIterator () const
 Retrieves an iterator for efficiently looping through all children of this node. More...
 
virtual NodeMemoryManagergetDefaultNodeMemoryManager (SceneMemoryMgrTypes sceneType)=0
 
uint16 getDepthLevel () const
 Returns how deep in the hierarchy we are (eg. 0 -> root node, 1 -> child of root) More...
 
IdType getId () const
 Get the unique id of this object. More...
 
bool getIndestructibleByClearScene () const
 
virtual_l2 bool getInheritOrientation () const
 Returns true if this node is affected by orientation applied to the parent node. More...
 
virtual_l2 bool getInheritScale () const
 Returns true if this node is affected by scaling factors applied to the parent node. More...
 
ListenergetListener () const
 Gets the current listener for this Node. More...
 
virtual_l2 Matrix3 getLocalAxes () const
 Gets a matrix whose columns are the local axes based on the nodes orientation relative to it's parent. More...
 
const StringgetName () const
 Returns the name of the node. More...
 
virtual_l2 Quaternion getOrientation () const
 Returns a quaternion representing the nodes orientation. More...
 
NodegetParent () const
 Gets this node's parent (NULL if this is the root). More...
 
virtual_l2 Vector3 getPosition () const
 Gets the position of the node relative to it's parent. More...
 
virtual_l2 Vector3 getScale () const
 Gets the scaling factor of this node. More...
 
virtual Real getSquaredViewDepth (const Camera *cam) const
 Helper function, get the squared view depth. More...
 
virtual OGRE_DEPRECATED const AnygetUserAny () const
 
UserObjectBindingsgetUserObjectBindings ()
 Return an instance of user objects binding associated with this class. More...
 
const UserObjectBindingsgetUserObjectBindings () const
 Return an instance of user objects binding associated with this class. More...
 
bool isStatic () const
 Checks whether this node is static. @See setStatic. More...
 
void migrateTo (NodeMemoryManager *nodeMemoryManager)
 Migrates the node and all of its children to the new memory manager, at the same depth level. More...
 
size_t numChildren () const
 Reports the number of child nodes under this one. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete (void *ptr, void *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
bool operator() (const IdObject &left, const IdObject &right)
 
bool operator() (const IdObject *left, const IdObject *right)
 
virtual_l2 void pitch (const Radian &angle, TransformSpace relativeTo=TS_LOCAL)
 Rotate the node around the X-axis. More...
 
virtual void removeAllChildren ()
 Removes all child Nodes attached to this node. More...
 
virtual void removeChild (Node *child)
 Drops the specified child from this node. More...
 
virtual_l1 void resetOrientation ()
 Resets the nodes orientation (local axes as world axes, no rotation). More...
 
virtual_l2 void roll (const Radian &angle, TransformSpace relativeTo=TS_LOCAL)
 Rotate the node around the Z-axis. More...
 
virtual_l2 void rotate (const Quaternion &q, TransformSpace relativeTo=TS_LOCAL)
 Rotate the node around an aritrary axis using a Quarternion. More...
 
virtual_l2 void rotate (const Vector3 &axis, const Radian &angle, TransformSpace relativeTo=TS_LOCAL)
 Rotate the node around an arbitrary axis. More...
 
virtual_l2 void scale (const Vector3 &scale)
 Scales the node, combining it's current scale with the passed in scaling factor. More...
 
virtual_l2 void scale (Real x, Real y, Real z)
 Scales the node, combining it's current scale with the passed in scaling factor. More...
 
void setIndestructibleByClearScene (bool indestructible)
 Calling SceneManager::clearScene won't destroy this node nor detach its objects (but may still destroy parent and children nodes if they're not indestructible) when this is true. More...
 
virtual_l2 void setInheritOrientation (bool inherit)
 Tells the node whether it should inherit orientation from it's parent node. More...
 
virtual_l2 void setInheritScale (bool inherit)
 Tells the node whether it should inherit scaling factors from it's parent node. More...
 
virtual void setListener (Listener *listener)
 Sets a listener for this Node. More...
 
void setName (const String &name)
 Sets a custom name for this node. More...
 
virtual_l1 void setOrientation (Quaternion q)
 Sets the orientation of this node via a quaternion. More...
 
virtual_l1 void setOrientation (Real w, Real x, Real y, Real z)
 Sets the orientation of this node via quaternion parameters. More...
 
virtual_l1 void setPosition (const Vector3 &pos)
 Sets the position of the node relative to it's parent. More...
 
virtual_l1 void setPosition (Real x, Real y, Real z)
 Sets the position of the node relative to it's parent. More...
 
virtual_l1 void setScale (const Vector3 &scale)
 Sets the scaling factor applied to this node. More...
 
virtual_l1 void setScale (Real x, Real y, Real z)
 Sets the scaling factor applied to this node. More...
 
virtual bool setStatic (bool bStatic)
 Turns this Node into static or dynamic. More...
 
virtual OGRE_DEPRECATED void setUserAny (const Any &anything)
 
virtual_l2 void translate (const Matrix3 &axes, const Vector3 &move, TransformSpace relativeTo=TS_PARENT)
 Moves the node along arbitrary axes. More...
 
virtual_l2 void translate (const Matrix3 &axes, Real x, Real y, Real z, TransformSpace relativeTo=TS_PARENT)
 Moves the node along arbitrary axes. More...
 
virtual_l2 void translate (const Vector3 &d, TransformSpace relativeTo=TS_PARENT)
 Moves the node along the Cartesian axes. More...
 
virtual_l2 void translate (Real x, Real y, Real z, TransformSpace relativeTo=TS_PARENT)
 Moves the node along the Cartesian axes. More...
 
virtual_l2 void yaw (const Radian &angle, TransformSpace relativeTo=TS_LOCAL)
 Rotate the node around the Y-axis. More...
 

Static Public Member Functions

static void updateAllTransforms (const size_t numNodes, Transform t)
 @See SceneManager::updateAllTransforms() More...
 

Public Attributes

size_t mGlobalIndex
 Index in the vector holding this node reference (could be our parent node, or a global array tracking all created nodes to avoid memory leaks). More...
 
size_t mParentIndex
 Index in the vector holding this node reference (could be our parent node, or a global array tracking all created nodes to avoid memory leaks). More...
 

Friends

class TagPoint
 

Detailed Description

Class representing a general-purpose node an articulated scene graph.

Remarks
A node in the scene graph is a node in a structured tree. A node contains information about the transformation which will apply to it and all of it's children. Child nodes can have transforms of their own, which are combined with their parent's transformations.
This is an abstract class - concrete classes are based on this for specific purposes, e.g. SceneNode, Bone

Member Typedef Documentation

◆ ConstNodeVecIterator

◆ NodeVec

typedef vector<Node*>::type Ogre::Node::NodeVec

◆ NodeVecIterator

Member Enumeration Documentation

◆ TransformSpace

Enumeration denoting the spaces which a transform can be relative to.

Enumerator
TS_LOCAL 

Transform is relative to the local space.

TS_PARENT 

Transform is relative to the space of the parent node.

TS_WORLD 

Transform is relative to world space.

Constructor & Destructor Documentation

◆ Node() [1/2]

Ogre::Node::Node ( IdType  id,
NodeMemoryManager nodeMemoryManager,
Node parent 
)

Constructor, should only be called by parent, not directly.

Remarks
Parent pointer can be null.

◆ Node() [2/2]

Ogre::Node::Node ( const Transform transformPtrs)

Don't use this constructor unless you know what you're doing.

@See NodeMemoryManager::mDummyNode

◆ ~Node()

virtual Ogre::Node::~Node ( )
virtual

Member Function Documentation

◆ _callMemoryChangeListeners()

virtual void Ogre::Node::_callMemoryChangeListeners ( )
pure virtual

Internal use, notifies all attached objects that our memory pointers (i.e.

Transform) may have changed (e.g. during cleanups, change of parent, etc)

Implemented in Ogre::SceneNode.

◆ _getDerivedOrientation()

virtual_l2 Quaternion Ogre::Node::_getDerivedOrientation ( ) const

Gets the orientation of the node as derived from all parents.

Remarks
Assumes the caches are already updated. Will trigger an assert otherwise. @See _getDerivedOrientationUpdated if you need the update process to be guaranteed

◆ _getDerivedOrientationUpdated()

virtual_l2 Quaternion Ogre::Node::_getDerivedOrientationUpdated ( )

Gets the orientation of the node as derived from all parents.

Remarks
Unlike _getDerivedOrientation, this function guarantees the cache stays up to date. It is strongly advised against calling this function for a large number of nodes. Refactor your queries so that they happen after SceneManager::UpdateAllTransforms() has been called

◆ _getDerivedPosition()

virtual_l2 Vector3 Ogre::Node::_getDerivedPosition ( ) const

Gets the position of the node as derived from all parents.

Remarks
Assumes the caches are already updated. Will trigger an assert otherwise. @See _getDerivedPositionUpdated if you need the update process to be guaranteed

◆ _getDerivedPositionUpdated()

virtual_l2 Vector3 Ogre::Node::_getDerivedPositionUpdated ( )

Gets the position of the node as derived from all parents.

Remarks
Unlike _getDerivedPosition, this function guarantees the cache stays up to date. It is strongly advised against calling this function for a large number of nodes. Refactor your queries so that they happen after SceneManager::UpdateAllTransforms() has been called

◆ _getDerivedScale()

virtual_l2 Vector3 Ogre::Node::_getDerivedScale ( ) const

Gets the scaling factor of the node as derived from all parents.

Remarks
Assumes the caches are already updated. Will trigger an assert otherwise. @See _getDerivedScaleUpdated if you need the update process to be guaranteed

◆ _getDerivedScaleUpdated()

virtual_l2 Vector3 Ogre::Node::_getDerivedScaleUpdated ( )

Gets the scalling factor of the node as derived from all parents.

Remarks
Unlike _getDerivedScale, this function guarantees the cache stays up to date. It is STRONGLY advised against calling this function for a large number of nodes. Refactor your queries so that they happen after SceneManager::UpdateAllTransforms() has been called

◆ _getFullTransform()

virtual_l2 FORCEINLINE const Matrix4& Ogre::Node::_getFullTransform ( ) const
inline

Gets the full transformation matrix for this node.

Remarks
This method returns the full transformation matrix for this node, including the effect of any parent node transformations, provided they have been updated using the Node::_update method. This should only be called by a SceneManager which knows the derived transforms have been updated before calling this method. Applications using Ogre should just use the relative transforms. Assumes the caches are already updated

References Ogre::Transform::mDerivedTransform, and Ogre::Transform::mIndex.

◆ _getFullTransformUpdated()

virtual_l2 const Matrix4& Ogre::Node::_getFullTransformUpdated ( )

@See _getDerivedScaleUpdated remarks.

@See _getFullTransform

◆ _getTransform()

Transform& Ogre::Node::_getTransform ( )
inline

Returns a direct access to the Transform state.

◆ _notifyStaticDirty()

virtual void Ogre::Node::_notifyStaticDirty ( ) const
virtual

Called by SceneManager when it is telling we're a static node being dirty Don't call this directly.

See also
SceneManager::notifyStaticDirty

Reimplemented in Ogre::SceneNode.

◆ _setDerivedOrientation()

virtual_l2 void Ogre::Node::_setDerivedOrientation ( const Quaternion q)

Sets the final world orientation of the node directly.

Remarks
It's advisable to use the local setOrientation if possible, this simply does the conversion for you.

◆ _setDerivedPosition()

virtual_l2 void Ogre::Node::_setDerivedPosition ( const Vector3 pos)

Sets the final world position of the node directly.

Remarks
It's advisable to use the local setPosition if possible

◆ _setNullNodeMemoryManager()

void Ogre::Node::_setNullNodeMemoryManager ( )
inline

Manually set the mNodeMemoryManager to a null ptr.

Remarks
Node doesn't follow the rule of three. This function is useful when you make multiple hard copies but only the destructor must release the mTransform only slots once.

◆ _updateChildren()

void Ogre::Node::_updateChildren ( )

Helper method to update the Node and all children.

Note
Updates this node and all children to incorporate transforms etc. Ogre never call it, preferring full update of all transforms, but there could be situations when scene modifications are known and so small that full update is inefficient.

◆ addChild()

void Ogre::Node::addChild ( Node child)

Adds a (precreated) child scene node to this node.

If it is attached to another node, it must be detached first.

Parameters
childThe Node which is to become a child node of this one

◆ convertLocalToWorldDirection()

virtual_l2 Vector3 Ogre::Node::convertLocalToWorldDirection ( const Vector3 localDir,
bool  useScale 
)

Gets the world direction of a point in the node local space useful for simple transforms that don't require a child node.

◆ convertLocalToWorldDirectionUpdated()

Vector3 Ogre::Node::convertLocalToWorldDirectionUpdated ( const Vector3 localDir,
bool  useScale 
)
inline

◆ convertLocalToWorldOrientation()

virtual_l2 Quaternion Ogre::Node::convertLocalToWorldOrientation ( const Quaternion localOrientation)

Gets the world orientation of an orientation in the node local space useful for simple transforms that don't require a child node.

◆ convertLocalToWorldOrientationUpdated()

Quaternion Ogre::Node::convertLocalToWorldOrientationUpdated ( const Quaternion localOrientation)
inline

◆ convertLocalToWorldPosition()

virtual_l2 Vector3 Ogre::Node::convertLocalToWorldPosition ( const Vector3 localPos)

Gets the world position of a point in the node local space useful for simple transforms that don't require a child node.

◆ convertLocalToWorldPositionUpdated()

Vector3 Ogre::Node::convertLocalToWorldPositionUpdated ( const Vector3 localPos)
inline

◆ convertWorldToLocalDirection()

virtual_l2 Vector3 Ogre::Node::convertWorldToLocalDirection ( const Vector3 worldDir,
bool  useScale 
)

Gets the local direction, relative to this node, of the given world-space direction.

◆ convertWorldToLocalDirectionUpdated()

Vector3 Ogre::Node::convertWorldToLocalDirectionUpdated ( const Vector3 worldDir,
bool  useScale 
)
inline

◆ convertWorldToLocalOrientation()

virtual_l2 Quaternion Ogre::Node::convertWorldToLocalOrientation ( const Quaternion worldOrientation)

Gets the local orientation, relative to this node, of the given world-space orientation.

◆ convertWorldToLocalOrientationUpdated()

Quaternion Ogre::Node::convertWorldToLocalOrientationUpdated ( const Quaternion worldOrientation)
inline

◆ convertWorldToLocalPosition()

virtual_l2 Vector3 Ogre::Node::convertWorldToLocalPosition ( const Vector3 worldPos)

Gets the local position, relative to this node, of the given world-space position.

◆ convertWorldToLocalPositionUpdated()

Vector3 Ogre::Node::convertWorldToLocalPositionUpdated ( const Vector3 worldPos)
inline

◆ createChild()

virtual Node* Ogre::Node::createChild ( SceneMemoryMgrTypes  sceneType = SCENE_DYNAMIC,
const Vector3 translate = Vector3::ZERO,
const Quaternion rotate = Quaternion::IDENTITY 
)
virtual

Creates an unnamed new Node as a child of this node.

Parameters
translateInitial translation offset of child relative to parent
rotateInitial rotation relative to parent

◆ getChild() [1/2]

Node* Ogre::Node::getChild ( size_t  index)
inline

Gets a pointer to a child node.

◆ getChild() [2/2]

const Node* Ogre::Node::getChild ( size_t  index) const
inline

◆ getChildIterator() [1/2]

NodeVecIterator Ogre::Node::getChildIterator ( )

Retrieves an iterator for efficiently looping through all children of this node.

Remarks
Using this is faster than repeatedly calling getChild if you want to go through all (or most of) the children of this node. Note that the returned iterator is only valid whilst no children are added or removed from this node. Thus you should not store this returned iterator for later use, nor should you add / remove children whilst iterating through it; store up changes for later. Note that calling methods on returned items in the iterator IS allowed and does not invalidate the iterator.

◆ getChildIterator() [2/2]

ConstNodeVecIterator Ogre::Node::getChildIterator ( ) const

Retrieves an iterator for efficiently looping through all children of this node.

Remarks
Using this is faster than repeatedly calling getChild if you want to go through all (or most of) the children of this node. Note that the returned iterator is only valid whilst no children are added or removed from this node. Thus you should not store this returned iterator for later use, nor should you add / remove children whilst iterating through it; store up changes for later. Note that calling methods on returned items in the iterator IS allowed and does not invalidate the iterator.

◆ getDefaultNodeMemoryManager()

virtual NodeMemoryManager* Ogre::Node::getDefaultNodeMemoryManager ( SceneMemoryMgrTypes  sceneType)
pure virtual

Implemented in Ogre::SceneNode.

◆ getDepthLevel()

uint16 Ogre::Node::getDepthLevel ( ) const
inline

Returns how deep in the hierarchy we are (eg. 0 -> root node, 1 -> child of root)

◆ getId()

IdType Ogre::IdObject::getId ( ) const
inlineinherited

Get the unique id of this object.

◆ getIndestructibleByClearScene()

bool Ogre::Node::getIndestructibleByClearScene ( ) const

◆ getInheritOrientation()

virtual_l2 bool Ogre::Node::getInheritOrientation ( ) const

Returns true if this node is affected by orientation applied to the parent node.

Remarks
Orientations, unlike other transforms, are not always inherited by child nodes. Whether or not orientations affect the orientation of the child nodes depends on the setInheritOrientation option of the child. In some cases you want a orientating of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative orientation based on the parent's orientation), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own orientation). The default is to inherit as with other transforms.
See setInheritOrientation for more info.

◆ getInheritScale()

virtual_l2 bool Ogre::Node::getInheritScale ( ) const

Returns true if this node is affected by scaling factors applied to the parent node.

Remarks
See setInheritScale for more info.

◆ getListener()

Listener* Ogre::Node::getListener ( ) const
inline

Gets the current listener for this Node.

◆ getLocalAxes()

virtual_l2 Matrix3 Ogre::Node::getLocalAxes ( ) const

Gets a matrix whose columns are the local axes based on the nodes orientation relative to it's parent.

◆ getName()

const String& Ogre::Node::getName ( ) const
inline

Returns the name of the node.

◆ getOrientation()

virtual_l2 Quaternion Ogre::Node::getOrientation ( ) const

Returns a quaternion representing the nodes orientation.

Remarks
Don't call this function too often, as we need to convert from SoA

◆ getParent()

Node* Ogre::Node::getParent ( ) const

Gets this node's parent (NULL if this is the root).

◆ getPosition()

virtual_l2 Vector3 Ogre::Node::getPosition ( ) const

Gets the position of the node relative to it's parent.

Remarks
Don't call this function too often, as we need to convert from SoA

◆ getScale()

virtual_l2 Vector3 Ogre::Node::getScale ( ) const

Gets the scaling factor of this node.

Remarks
Don't call this function too often, as we need to convert from SoA

◆ getSquaredViewDepth()

virtual Real Ogre::Node::getSquaredViewDepth ( const Camera cam) const
virtual

Helper function, get the squared view depth.


◆ getUserAny()

virtual OGRE_DEPRECATED const Any& Ogre::Node::getUserAny ( ) const
inlinevirtual
Deprecated:
use UserObjectBindings::getUserAny via getUserObjectBindings() instead.

Retrieves the custom user value associated with this object.

◆ getUserObjectBindings() [1/2]

UserObjectBindings& Ogre::Node::getUserObjectBindings ( )
inline

Return an instance of user objects binding associated with this class.

You can use it to associate one or more custom objects with this class instance.

See also
UserObjectBindings::setUserAny.

◆ getUserObjectBindings() [2/2]

const UserObjectBindings& Ogre::Node::getUserObjectBindings ( ) const
inline

Return an instance of user objects binding associated with this class.

You can use it to associate one or more custom objects with this class instance.

See also
UserObjectBindings::setUserAny.

◆ isStatic()

bool Ogre::Node::isStatic ( ) const

Checks whether this node is static. @See setStatic.

◆ migrateTo()

void Ogre::Node::migrateTo ( NodeMemoryManager nodeMemoryManager)

Migrates the node and all of its children to the new memory manager, at the same depth level.

Parameters
nodeMemoryManagerNew memory manager to migrate to.

◆ numChildren()

size_t Ogre::Node::numChildren ( ) const
inline

Reports the number of child nodes under this one.

◆ operator delete() [1/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

◆ operator delete() [2/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator delete() [3/3]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

◆ operator delete[]() [1/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

◆ operator delete[]() [2/2]

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

◆ operator new() [1/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

◆ operator new() [2/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

◆ operator new() [3/3]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

◆ operator new[]() [1/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

◆ operator new[]() [2/2]

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

◆ operator()() [1/2]

bool Ogre::IdObject::operator() ( const IdObject left,
const IdObject right 
)
inlineinherited

◆ operator()() [2/2]

bool Ogre::IdObject::operator() ( const IdObject left,
const IdObject right 
)
inlineinherited

◆ pitch()

virtual_l2 void Ogre::Node::pitch ( const Radian angle,
TransformSpace  relativeTo = TS_LOCAL 
)

Rotate the node around the X-axis.

◆ removeAllChildren()

virtual void Ogre::Node::removeAllChildren ( )
virtual

Removes all child Nodes attached to this node.

Does not delete the nodes, just detaches them from this parent, potentially to be reattached elsewhere.

◆ removeChild()

virtual void Ogre::Node::removeChild ( Node child)
virtual

Drops the specified child from this node.

Remarks
Does not delete the node, just detaches it from this parent, potentially to be reattached elsewhere.
Asserts if child is not one of our children.

◆ resetOrientation()

virtual_l1 void Ogre::Node::resetOrientation ( )

Resets the nodes orientation (local axes as world axes, no rotation).

Remarks
Orientations, unlike other transforms, are not always inherited by child nodes. Whether or not orientations affect the orientation of the child nodes depends on the setInheritOrientation option of the child. In some cases you want a orientating of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative orientation based on the parent's orientation), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own orientation). The default is to inherit as with other transforms.
Note that rotations are oriented around the node's origin.

◆ roll()

virtual_l2 void Ogre::Node::roll ( const Radian angle,
TransformSpace  relativeTo = TS_LOCAL 
)

Rotate the node around the Z-axis.

◆ rotate() [1/2]

virtual_l2 void Ogre::Node::rotate ( const Quaternion q,
TransformSpace  relativeTo = TS_LOCAL 
)

Rotate the node around an aritrary axis using a Quarternion.

◆ rotate() [2/2]

virtual_l2 void Ogre::Node::rotate ( const Vector3 axis,
const Radian angle,
TransformSpace  relativeTo = TS_LOCAL 
)

Rotate the node around an arbitrary axis.

◆ scale() [1/2]

virtual_l2 void Ogre::Node::scale ( const Vector3 scale)

Scales the node, combining it's current scale with the passed in scaling factor.

Remarks
This method applies an extra scaling factor to the node's existing scale, (unlike setScale which overwrites it) combining it's current scale with the new one. E.g. calling this method twice with Vector3(2,2,2) would have the same effect as setScale(Vector3(4,4,4)) if the existing scale was 1.
Note that like rotations, scalings are oriented around the node's origin.

◆ scale() [2/2]

virtual_l2 void Ogre::Node::scale ( Real  x,
Real  y,
Real  z 
)

Scales the node, combining it's current scale with the passed in scaling factor.

Remarks
This method applies an extra scaling factor to the node's existing scale, (unlike setScale which overwrites it) combining it's current scale with the new one. E.g. calling this method twice with Vector3(2,2,2) would have the same effect as setScale(Vector3(4,4,4)) if the existing scale was 1.
Note that like rotations, scalings are oriented around the node's origin.

◆ setIndestructibleByClearScene()

void Ogre::Node::setIndestructibleByClearScene ( bool  indestructible)

Calling SceneManager::clearScene won't destroy this node nor detach its objects (but may still destroy parent and children nodes if they're not indestructible) when this is true.

Remarks
This function provides trivial setter/getters rather than making mIndestructibleByClearScene public for two reasons:
  1. It's rare called
  2. There's a lot of value in debugging when a node is set to indestructible, which could happen by accident; and would thus leak.

◆ setInheritOrientation()

virtual_l2 void Ogre::Node::setInheritOrientation ( bool  inherit)

Tells the node whether it should inherit orientation from it's parent node.

Remarks
Orientations, unlike other transforms, are not always inherited by child nodes. Whether or not orientations affect the orientation of the child nodes depends on the setInheritOrientation option of the child. In some cases you want a orientating of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative orientation based on the parent's orientation), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own orientation). The default is to inherit as with other transforms.
Parameters
inheritIf true, this node's orientation will be affected by its parent's orientation. If false, it will not be affected.

◆ setInheritScale()

virtual_l2 void Ogre::Node::setInheritScale ( bool  inherit)

Tells the node whether it should inherit scaling factors from it's parent node.

Remarks
Scaling factors, unlike other transforms, are not always inherited by child nodes. Whether or not scalings affect the size of the child nodes depends on the setInheritScale option of the child. In some cases you want a scaling factor of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative size based on the parent's size), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own size). The default is to inherit as with other transforms.
Parameters
inheritIf true, this node's scale will be affected by its parent's scale. If false, it will not be affected.

◆ setListener()

virtual void Ogre::Node::setListener ( Listener listener)
inlinevirtual

Sets a listener for this Node.

Remarks
Note for size and performance reasons only one listener per node is allowed.

Reimplemented in Ogre::SceneNode.

◆ setName()

void Ogre::Node::setName ( const String name)
inline

Sets a custom name for this node.

Doesn't have to be unique

◆ setOrientation() [1/2]

virtual_l1 void Ogre::Node::setOrientation ( Quaternion  q)

Sets the orientation of this node via a quaternion.

Remarks
Orientations, unlike other transforms, are not always inherited by child nodes. Whether or not orientations affect the orientation of the child nodes depends on the setInheritOrientation option of the child. In some cases you want a orientating of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative orientation based on the parent's orientation), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own orientation). The default is to inherit as with other transforms. Don't call this function too often, as we need to convert to SoA
Note that rotations are oriented around the node's origin.

◆ setOrientation() [2/2]

virtual_l1 void Ogre::Node::setOrientation ( Real  w,
Real  x,
Real  y,
Real  z 
)

Sets the orientation of this node via quaternion parameters.

Remarks
Orientations, unlike other transforms, are not always inherited by child nodes. Whether or not orientations affect the orientation of the child nodes depends on the setInheritOrientation option of the child. In some cases you want a orientating of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative orientation based on the parent's orientation), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own orientation). The default is to inherit as with other transforms. Don't call this function too often, as we need to convert to SoA
Note that rotations are oriented around the node's origin.

◆ setPosition() [1/2]

virtual_l1 void Ogre::Node::setPosition ( const Vector3 pos)

Sets the position of the node relative to it's parent.

Remarks
Don't call this function too often, as we need to convert to SoA

◆ setPosition() [2/2]

virtual_l1 void Ogre::Node::setPosition ( Real  x,
Real  y,
Real  z 
)

Sets the position of the node relative to it's parent.

Remarks
Don't call this function too often, as we need to convert to SoA

◆ setScale() [1/2]

virtual_l1 void Ogre::Node::setScale ( const Vector3 scale)

Sets the scaling factor applied to this node.

Remarks
Scaling factors, unlike other transforms, are not always inherited by child nodes. Whether or not scalings affect the size of the child nodes depends on the setInheritScale option of the child. In some cases you want a scaling factor of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative size based on the parent's size), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own size). The default is to inherit as with other transforms. Don't call this function too often, as we need to convert to SoA
Note that like rotations, scalings are oriented around the node's origin.

◆ setScale() [2/2]

virtual_l1 void Ogre::Node::setScale ( Real  x,
Real  y,
Real  z 
)

Sets the scaling factor applied to this node.

Remarks
Scaling factors, unlike other transforms, are not always inherited by child nodes. Whether or not scalings affect the size of the child nodes depends on the setInheritScale option of the child. In some cases you want a scaling factor of a parent node to apply to a child node (e.g. where the child node is a part of the same object, so you want it to be the same relative size based on the parent's size), but not in other cases (e.g. where the child node is just for positioning another object, you want it to maintain it's own size). The default is to inherit as with other transforms. Don't call this function too often, as we need to convert to SoA
Note that like rotations, scalings are oriented around the node's origin.

◆ setStatic()

virtual bool Ogre::Node::setStatic ( bool  bStatic)
virtual

Turns this Node into static or dynamic.

Remarks
Switching between dynamic and static has some overhead and forces to update all static scene when converted to static. So don't do it frequently. Static objects are not updated every frame, only when requested explicitly. Use this feature if you plan to have this object unaltered for a very long times
Changing this attribute to a node will cause to switch the attribute to all attached entities (but not children or parent nodes; it's perfectly valid and useful to have dynamic children of a static parent; although the opposite (static children, dynamic parent) is probably a bug.
Returns
True if setStatic made an actual change. False otherwise. Can fail because the object was already static/dynamic, or because switching is not supported

Reimplemented in Ogre::SceneNode.

◆ setUserAny()

virtual OGRE_DEPRECATED void Ogre::Node::setUserAny ( const Any anything)
inlinevirtual
Deprecated:
use UserObjectBindings::setUserAny via getUserObjectBindings() instead.

Sets any kind of user value on this object.

Remarks
This method allows you to associate any user value you like with this Node. This can be a pointer back to one of your own classes for instance.

◆ translate() [1/4]

virtual_l2 void Ogre::Node::translate ( const Matrix3 axes,
const Vector3 move,
TransformSpace  relativeTo = TS_PARENT 
)

Moves the node along arbitrary axes.

Remarks
This method translates the node by a vector which is relative to a custom set of axes.
Parameters
axesA 3x3 Matrix containing 3 column vectors each representing the axes X, Y and Z respectively. In this format the standard cartesian axes would be expressed as:
    1 0 0
    0 1 0
    0 0 1
    
i.e. the identity matrix.
moveVector relative to the axes above.
relativeToThe space which this transform is relative to.

◆ translate() [2/4]

virtual_l2 void Ogre::Node::translate ( const Matrix3 axes,
Real  x,
Real  y,
Real  z,
TransformSpace  relativeTo = TS_PARENT 
)

Moves the node along arbitrary axes.

Remarks
This method translates the node by a vector which is relative to a custom set of axes.
Parameters
axesA 3x3 Matrix containing 3 column vectors each representing the axes X, Y and Z respectively. In this format the standard cartesian axes would be expressed as
    1 0 0
    0 1 0
    0 0 1
    
i.e. the identity matrix.
xThe x translation component relative to the axes above.
yThe y translation component relative to the axes above.
zThe z translation component relative to the axes above.
relativeToThe space which this transform is relative to.

◆ translate() [3/4]

virtual_l2 void Ogre::Node::translate ( const Vector3 d,
TransformSpace  relativeTo = TS_PARENT 
)

Moves the node along the Cartesian axes.

This method moves the node by the supplied vector along the world Cartesian axes, i.e. along world x,y,z
Parameters
dVector with x,y,z values representing the translation.
relativeToThe space which this transform is relative to.

◆ translate() [4/4]

virtual_l2 void Ogre::Node::translate ( Real  x,
Real  y,
Real  z,
TransformSpace  relativeTo = TS_PARENT 
)

Moves the node along the Cartesian axes.

This method moves the node by the supplied vector along the world Cartesian axes, i.e. along world x,y,z
Parameters
xReal x value representing the translation.
yReal y value representing the translation.
zReal z value representing the translation.
relativeToThe space which this transform is relative to.

◆ updateAllTransforms()

static void Ogre::Node::updateAllTransforms ( const size_t  numNodes,
Transform  t 
)
static

@See SceneManager::updateAllTransforms()

Remarks
We don't pass by reference on purpose (avoid implicit aliasing)

◆ yaw()

virtual_l2 void Ogre::Node::yaw ( const Radian angle,
TransformSpace  relativeTo = TS_LOCAL 
)

Rotate the node around the Y-axis.

Friends And Related Function Documentation

◆ TagPoint

friend class TagPoint
friend

Member Data Documentation

◆ mGlobalIndex

size_t Ogre::Node::mGlobalIndex

Index in the vector holding this node reference (could be our parent node, or a global array tracking all created nodes to avoid memory leaks).

Used for O(1) removals.

Remarks
It is the parent (or our creator) the one that sets this value, not ourselves. Do NOT modify it manually.

◆ mParentIndex

size_t Ogre::Node::mParentIndex

Index in the vector holding this node reference (could be our parent node, or a global array tracking all created nodes to avoid memory leaks).

Used for O(1) removals.

Remarks
It is the parent (or our creator) the one that sets this value, not ourselves. Do NOT modify it manually.

The documentation for this class was generated from the following file: