Scene node that may contain components and child nodes. More...

#include <Urho3D/Scene/Node.h>

Inheritance diagram for Urho3D::Node:
[legend]
Collaboration diagram for Urho3D::Node:
[legend]

Public Member Functions

 Node (Context *context)
 Construct.
 
 ~Node () override
 Destruct. Any child nodes are detached.
 
bool Load (Deserializer &source) override
 Load from binary data. Return true if successful.
 
bool LoadXML (const XMLElement &source) override
 Load from XML data. Return true if successful.
 
bool LoadJSON (const JSONValue &source) override
 Load from JSON data. Return true if successful.
 
bool Save (Serializer &dest) const override
 Save as binary data. Return true if successful.
 
bool SaveXML (XMLElement &dest) const override
 Save as XML data. Return true if successful.
 
bool SaveJSON (JSONValue &dest) const override
 Save as JSON data. Return true if successful.
 
void ApplyAttributes () override
 Apply attribute changes that can not be applied immediately recursively to child nodes and components.
 
bool SaveDefaultAttributes () const override
 Return whether should save default-valued attributes into XML. Always save node transforms for readability, even if identity.
 
void MarkNetworkUpdate () override
 Mark for attribute check on the next network update.
 
virtual void AddReplicationState (NodeReplicationState *state)
 Add a replication state that is tracking this node.
 
bool SaveXML (Serializer &dest, const String &indentation="\t") const
 Save to an XML file. Return true if successful.
 
bool SaveJSON (Serializer &dest, const String &indentation="\t") const
 Save to a JSON file. Return true if successful.
 
void SetName (const String &name)
 
void SetTags (const StringVector &tags)
 Set tags. Old tags are overwritten.
 
void AddTag (const String &tag)
 Add a tag.
 
void AddTags (const String &tags, char separator=';')
 Add tags with the specified separator (; by default).
 
void AddTags (const StringVector &tags)
 Add tags.
 
bool RemoveTag (const String &tag)
 Remove tag. Return true if existed.
 
void RemoveAllTags ()
 Remove all tags.
 
void SetPosition (const Vector3 &position)
 
void SetPosition2D (const Vector2 &position)
 
void SetPosition2D (float x, float y)
 Set position in parent space (for Urho2D).
 
void SetRotation (const Quaternion &rotation)
 
void SetRotation2D (float rotation)
 
void SetDirection (const Vector3 &direction)
 
void SetScale (float scale)
 Set uniform scale in parent space.
 
void SetScale (const Vector3 &scale)
 
void SetScale2D (const Vector2 &scale)
 
void SetScale2D (float x, float y)
 Set scale in parent space (for Urho2D).
 
void SetTransform (const Vector3 &position, const Quaternion &rotation)
 Set both position and rotation in parent space as an atomic operation. This is faster than setting position and rotation separately.
 
void SetTransform (const Vector3 &position, const Quaternion &rotation, float scale)
 Set position, rotation, and uniform scale in parent space as an atomic operation.
 
void SetTransform (const Vector3 &position, const Quaternion &rotation, const Vector3 &scale)
 Set position, rotation, and scale in parent space as an atomic operation.
 
void SetTransform (const Matrix3x4 &matrix)
 Set node transformation in parent space as an atomic operation.
 
void SetTransform2D (const Vector2 &position, float rotation)
 Set both position and rotation in parent space as an atomic operation (for Urho2D).
 
void SetTransform2D (const Vector2 &position, float rotation, float scale)
 Set position, rotation, and uniform scale in parent space as an atomic operation (for Urho2D).
 
void SetTransform2D (const Vector2 &position, float rotation, const Vector2 &scale)
 Set position, rotation, and scale in parent space as an atomic operation (for Urho2D).
 
void SetWorldPosition (const Vector3 &position)
 
void SetWorldPosition2D (const Vector2 &position)
 
void SetWorldPosition2D (float x, float y)
 Set position in world space (for Urho2D).
 
void SetWorldRotation (const Quaternion &rotation)
 
void SetWorldRotation2D (float rotation)
 
void SetWorldDirection (const Vector3 &direction)
 
void SetWorldScale (float scale)
 Set uniform scale in world space.
 
void SetWorldScale (const Vector3 &scale)
 
void SetWorldScale2D (const Vector2 &scale)
 
void SetWorldScale2D (float x, float y)
 Set scale in world space (for Urho2D).
 
void SetWorldTransform (const Vector3 &position, const Quaternion &rotation)
 Set both position and rotation in world space as an atomic operation.
 
void SetWorldTransform (const Vector3 &position, const Quaternion &rotation, float scale)
 Set position, rotation, and uniform scale in world space as an atomic operation.
 
void SetWorldTransform (const Vector3 &position, const Quaternion &rotation, const Vector3 &scale)
 Set position, rotation, and scale in world space as an atomic opration.
 
void SetWorldTransform (const Matrix3x4 &worldTransform)
 Set position, rotation, and scale in world space as an atomic operation from a transformation matrix.
 
void SetWorldTransform2D (const Vector2 &position, float rotation)
 Set both position and rotation in world space as an atomic operation (for Urho2D).
 
void SetWorldTransform2D (const Vector2 &position, float rotation, float scale)
 Set position, rotation, and uniform scale in world space as an atomic operation (for Urho2D).
 
void SetWorldTransform2D (const Vector2 &position, float rotation, const Vector2 &scale)
 Set position, rotation, and scale in world space as an atomic opration (for Urho2D).
 
void Translate (const Vector3 &delta, TransformSpace space=TS_LOCAL)
 Move the scene node in the chosen transform space.
 
void Translate2D (const Vector2 &delta, TransformSpace space=TS_LOCAL)
 Move the scene node in the chosen transform space (for Urho2D).
 
void Rotate (const Quaternion &delta, TransformSpace space=TS_LOCAL)
 Rotate the scene node in the chosen transform space.
 
void Rotate2D (float delta, TransformSpace space=TS_LOCAL)
 Rotate the scene node in the chosen transform space (for Urho2D).
 
void RotateAround (const Vector3 &point, const Quaternion &delta, TransformSpace space=TS_LOCAL)
 Rotate around a point in the chosen transform space.
 
void RotateAround2D (const Vector2 &point, float delta, TransformSpace space=TS_LOCAL)
 Rotate around a point in the chosen transform space (for Urho2D).
 
void Pitch (float angle, TransformSpace space=TS_LOCAL)
 Rotate around the X axis.
 
void Yaw (float angle, TransformSpace space=TS_LOCAL)
 Rotate around the Y axis.
 
void Roll (float angle, TransformSpace space=TS_LOCAL)
 Rotate around the Z axis.
 
bool LookAt (const Vector3 &target, const Vector3 &up=Vector3::UP, TransformSpace space=TS_WORLD)
 Look at a target position in the chosen transform space. Note that the up vector is always specified in world space. Return true if successful, or false if resulted in an illegal rotation, in which case the current rotation remains.
 
void Scale (float scale)
 Modify scale in parent space uniformly.
 
void Scale (const Vector3 &scale)
 Modify scale in parent space.
 
void Scale2D (const Vector2 &scale)
 Modify scale in parent space (for Urho2D).
 
void SetEnabled (bool enable)
 
void SetDeepEnabled (bool enable)
 Set enabled state on self and child nodes. Nodes' own enabled state is remembered (IsEnabledSelf) and can be restored.
 
void ResetDeepEnabled ()
 Reset enabled state to the node's remembered state prior to calling SetDeepEnabled.
 
void SetEnabledRecursive (bool enable)
 Set enabled state on self and child nodes. Unlike SetDeepEnabled this does not remember the nodes' own enabled state, but overwrites it.
 
void SetOwner (Connection *owner)
 
void MarkDirty ()
 Mark node and child nodes to need world transform recalculation. Notify listener components.
 
NodeCreateChild (const String &name=String::EMPTY, CreateMode mode=REPLICATED, unsigned id=0, bool temporary=false)
 Create a child scene node (with specified ID if provided).
 
NodeCreateTemporaryChild (const String &name=String::EMPTY, CreateMode mode=REPLICATED, unsigned id=0)
 Create a temporary child scene node (with specified ID if provided).
 
void AddChild (Node *node, unsigned index=M_MAX_UNSIGNED)
 Add a child scene node at a specific index. If index is not explicitly specified or is greater than current children size, append the new child at the end.
 
void RemoveChild (Node *node)
 Remove a child scene node.
 
void RemoveAllChildren ()
 Remove all child scene nodes.
 
void RemoveChildren (bool removeReplicated, bool removeLocal, bool recursive)
 Remove child scene nodes that match criteria.
 
ComponentCreateComponent (StringHash type, CreateMode mode=REPLICATED, unsigned id=0)
 Create a component to this node (with specified ID if provided).
 
ComponentGetOrCreateComponent (StringHash type, CreateMode mode=REPLICATED, unsigned id=0)
 Create a component to this node if it does not exist already.
 
ComponentCloneComponent (Component *component, unsigned id=0)
 Clone a component from another node using its create mode. Return the clone if successful or null on failure.
 
ComponentCloneComponent (Component *component, CreateMode mode, unsigned id=0)
 Clone a component from another node and specify the create mode. Return the clone if successful or null on failure.
 
void RemoveComponent (Component *component)
 Remove a component from this node.
 
void RemoveComponent (StringHash type)
 Remove the first component of specific type from this node.
 
void RemoveComponents (bool removeReplicated, bool removeLocal)
 Remove components that match criteria.
 
void RemoveComponents (StringHash type)
 Remove all components of specific type.
 
void RemoveAllComponents ()
 Remove all components from this node.
 
void ReorderComponent (Component *component, unsigned index)
 Adjust index order of an existing component in this node.
 
NodeClone (CreateMode mode=REPLICATED)
 Clone scene node, components and child nodes. Return the clone.
 
void Remove ()
 Remove from the parent node. If no other shared pointer references exist, causes immediate deletion.
 
void SetParent (Node *parent)
 
void SetVar (StringHash key, const Variant &value)
 Set a user variable.
 
void AddListener (Component *component)
 Add listener component that is notified of node being dirtied. Can either be in the same node or another.
 
void RemoveListener (Component *component)
 Remove listener component.
 
template<class T >
T * CreateComponent (CreateMode mode=REPLICATED, unsigned id=0)
 Template version of creating a component.
 
template<class T >
T * GetOrCreateComponent (CreateMode mode=REPLICATED, unsigned id=0)
 Template version of getting or creating a component.
 
template<class T >
void RemoveComponent ()
 Template version of removing a component.
 
template<class T >
void RemoveComponents ()
 Template version of removing all components of specific type.
 
unsigned GetID () const
 
bool IsReplicated () const
 
const StringGetName () const
 
StringHash GetNameHash () const
 Return name hash.
 
const StringVectorGetTags () const
 
bool HasTag (const String &tag) const
 Return whether has a specific tag.
 
NodeGetParent () const
 
SceneGetScene () const
 
bool IsChildOf (Node *node) const
 Return whether is a direct or indirect child of specified node.
 
bool IsEnabled () const
 
bool IsEnabledSelf () const
 
ConnectionGetOwner () const
 
const Vector3GetPosition () const
 
Vector2 GetPosition2D () const
 
const QuaternionGetRotation () const
 
float GetRotation2D () const
 
Vector3 GetDirection () const
 
Vector3 GetUp () const
 
Vector3 GetRight () const
 
const Vector3GetScale () const
 
Vector2 GetScale2D () const
 
Matrix3x4 GetTransform () const
 
Vector3 GetWorldPosition () const
 
Vector2 GetWorldPosition2D () const
 
Quaternion GetWorldRotation () const
 
float GetWorldRotation2D () const
 
Vector3 GetWorldDirection () const
 
Vector3 GetWorldUp () const
 
Vector3 GetWorldRight () const
 
Vector3 GetWorldScale () const
 
Vector3 GetSignedWorldScale () const
 
Vector2 GetWorldScale2D () const
 
const Matrix3x4GetWorldTransform () const
 
Vector3 LocalToWorld (const Vector3 &position) const
 Convert a local space position to world space.
 
Vector3 LocalToWorld (const Vector4 &vector) const
 Convert a local space position or rotation to world space.
 
Vector2 LocalToWorld2D (const Vector2 &vector) const
 Convert a local space position or rotation to world space (for Urho2D).
 
Vector3 WorldToLocal (const Vector3 &position) const
 Convert a world space position to local space.
 
Vector3 WorldToLocal (const Vector4 &vector) const
 Convert a world space position or rotation to local space.
 
Vector2 WorldToLocal2D (const Vector2 &vector) const
 Convert a world space position or rotation to local space (for Urho2D).
 
bool IsDirty () const
 Return whether transform has changed and world transform needs recalculation.
 
unsigned GetNumChildren (bool recursive=false) const
 Return number of child scene nodes.
 
const Vector< SharedPtr< Node > > & GetChildren () const
 Return immediate child scene nodes.
 
void GetChildren (PODVector< Node * > &dest, bool recursive=false) const
 Return child scene nodes, optionally recursive.
 
PODVector< Node * > GetChildren (bool recursive) const
 Return child scene nodes, optionally recursive.
 
void GetChildrenWithComponent (PODVector< Node * > &dest, StringHash type, bool recursive=false) const
 Return child scene nodes with a specific component.
 
PODVector< Node * > GetChildrenWithComponent (StringHash type, bool recursive=false) const
 Return child scene nodes with a specific component.
 
void GetChildrenWithTag (PODVector< Node * > &dest, const String &tag, bool recursive=false) const
 Return child scene nodes with a specific tag.
 
PODVector< Node * > GetChildrenWithTag (const String &tag, bool recursive=false) const
 Return child scene nodes with a specific tag.
 
NodeGetChild (unsigned index) const
 Return child scene node by index.
 
NodeGetChild (const String &name, bool recursive=false) const
 Return child scene node by name.
 
NodeGetChild (const char *name, bool recursive=false) const
 Return child scene node by name.
 
NodeGetChild (StringHash nameHash, bool recursive=false) const
 Return child scene node by name hash.
 
unsigned GetNumComponents () const
 
unsigned GetNumNetworkComponents () const
 Return number of non-local components.
 
const Vector< SharedPtr< Component > > & GetComponents () const
 Return all components.
 
void GetComponents (PODVector< Component * > &dest, StringHash type, bool recursive=false) const
 Return all components of type. Optionally recursive.
 
ComponentGetComponent (StringHash type, bool recursive=false) const
 Return component by type. If there are several, returns the first.
 
ComponentGetParentComponent (StringHash type, bool fullTraversal=false) const
 Return component in parent node. If there are several, returns the first. May optional traverse up to the root node.
 
bool HasComponent (StringHash type) const
 Return whether has a specific component.
 
const Vector< WeakPtr< Component > > GetListeners () const
 Return listener components.
 
const VariantGetVar (StringHash key) const
 Return a user variable.
 
const VariantMapGetVars () const
 Return all user variables.
 
template<class T >
T * GetDerivedComponent (bool recursive=false) const
 Return first component derived from class.
 
template<class T >
T * GetParentDerivedComponent (bool fullTraversal=false) const
 Return first component derived from class in the parent node, or if fully traversing then the first node up the tree with one.
 
template<class T >
void GetDerivedComponents (PODVector< T * > &dest, bool recursive=false, bool clearVector=true) const
 Return components derived from class.
 
template<class T >
void GetChildrenWithComponent (PODVector< Node * > &dest, bool recursive=false) const
 Template version of returning child nodes with a specific component.
 
template<class T >
T * GetComponent (bool recursive=false) const
 Template version of returning a component by type.
 
template<class T >
T * GetParentComponent (bool fullTraversal=false) const
 Template version of returning a parent's component by type.
 
template<class T >
void GetComponents (PODVector< T * > &dest, bool recursive=false) const
 Template version of returning all components of type.
 
template<class T >
bool HasComponent () const
 Template version of checking whether has a specific component.
 
void SetID (unsigned id)
 
void SetScene (Scene *scene)
 Set scene. Called by Scene.
 
void ResetScene ()
 Reset scene, ID and owner. Called by Scene.
 
void SetNetPositionAttr (const Vector3 &value)
 Set network position attribute.
 
void SetNetRotationAttr (const PODVector< unsigned char > &value)
 Set network rotation attribute.
 
void SetNetParentAttr (const PODVector< unsigned char > &value)
 Set network parent attribute.
 
const Vector3GetNetPositionAttr () const
 Return network position attribute.
 
const PODVector< unsigned char > & GetNetRotationAttr () const
 Return network rotation attribute.
 
const PODVector< unsigned char > & GetNetParentAttr () const
 Return network parent attribute.
 
bool Load (Deserializer &source, SceneResolver &resolver, bool loadChildren=true, bool rewriteIDs=false, CreateMode mode=REPLICATED)
 Load components and optionally load child nodes.
 
bool LoadXML (const XMLElement &source, SceneResolver &resolver, bool loadChildren=true, bool rewriteIDs=false, CreateMode mode=REPLICATED)
 Load components from XML data and optionally load child nodes.
 
bool LoadJSON (const JSONValue &source, SceneResolver &resolver, bool loadChildren=true, bool rewriteIDs=false, CreateMode mode=REPLICATED)
 Load components from XML data and optionally load child nodes.
 
const PODVector< Node * > & GetDependencyNodes () const
 Return the depended on nodes to order network updates.
 
void PrepareNetworkUpdate ()
 Prepare network update by comparing attributes and marking replication states dirty as necessary.
 
void CleanupConnection (Connection *connection)
 Clean up all references to a network connection that is about to be removed.
 
void MarkReplicationDirty ()
 Mark node dirty in scene replication states.
 
NodeCreateChild (unsigned id, CreateMode mode, bool temporary=false)
 Create a child node with specific ID.
 
void AddComponent (Component *component, unsigned id, CreateMode mode)
 Add a pre-created component. Using this function from application code is discouraged, as component operation without an owner node may not be well-defined in all cases. Prefer CreateComponent() instead.
 
unsigned GetNumPersistentChildren () const
 Calculate number of non-temporary child nodes.
 
unsigned GetNumPersistentComponents () const
 Calculate number of non-temporary components.
 
void SetPositionSilent (const Vector3 &position)
 Set position in parent space silently without marking the node & child nodes dirty. Used by animation code.
 
void SetRotationSilent (const Quaternion &rotation)
 Set position in parent space silently without marking the node & child nodes dirty. Used by animation code.
 
void SetScaleSilent (const Vector3 &scale)
 Set scale in parent space silently without marking the node & child nodes dirty. Used by animation code.
 
void SetTransformSilent (const Vector3 &position, const Quaternion &rotation, const Vector3 &scale)
 Set local transform silently without marking the node & child nodes dirty. Used by animation code.
 
- Public Member Functions inherited from Urho3D::Animatable
 Animatable (Context *context)
 Construct.
 
 ~Animatable () override
 Destruct.
 
void SetAnimationEnabled (bool enable)
 
void SetAnimationTime (float time)
 Set time position of all attribute animations or an object animation manually. Automatic update should be disabled in this case.
 
void SetObjectAnimation (ObjectAnimation *objectAnimation)
 
void SetAttributeAnimation (const String &name, ValueAnimation *attributeAnimation, WrapMode wrapMode=WM_LOOP, float speed=1.0f)
 Set attribute animation.
 
void SetAttributeAnimationWrapMode (const String &name, WrapMode wrapMode)
 Set attribute animation wrap mode.
 
void SetAttributeAnimationSpeed (const String &name, float speed)
 Set attribute animation speed.
 
void SetAttributeAnimationTime (const String &name, float time)
 Set attribute animation time position manually. Automatic update should be disabled in this case.
 
void RemoveObjectAnimation ()
 Remove object animation. Same as calling SetObjectAnimation with a null pointer.
 
void RemoveAttributeAnimation (const String &name)
 Remove attribute animation. Same as calling SetAttributeAnimation with a null pointer.
 
bool GetAnimationEnabled () const
 
ObjectAnimationGetObjectAnimation () const
 
ValueAnimationGetAttributeAnimation (const String &name) const
 Return attribute animation.
 
WrapMode GetAttributeAnimationWrapMode (const String &name) const
 Return attribute animation wrap mode.
 
float GetAttributeAnimationSpeed (const String &name) const
 Return attribute animation speed.
 
float GetAttributeAnimationTime (const String &name) const
 Return attribute animation time position.
 
void SetObjectAnimationAttr (const ResourceRef &value)
 Set object animation attribute.
 
ResourceRef GetObjectAnimationAttr () const
 Return object animation attribute.
 
- Public Member Functions inherited from Urho3D::Serializable
 Serializable (Context *context)
 Construct.
 
 ~Serializable () override
 Destruct.
 
virtual void OnSetAttribute (const AttributeInfo &attr, const Variant &src)
 Handle attribute write access. Default implementation writes to the variable at offset, or invokes the set accessor.
 
virtual void OnGetAttribute (const AttributeInfo &attr, Variant &dest) const
 Handle attribute read access. Default implementation reads the variable at offset, or invokes the get accessor.
 
virtual const Vector< AttributeInfo > * GetAttributes () const
 Return attribute descriptions, or null if none defined.
 
virtual const Vector< AttributeInfo > * GetNetworkAttributes () const
 Return network replication attribute descriptions, or null if none defined.
 
bool SetAttribute (unsigned index, const Variant &value)
 
bool SetAttribute (const String &name, const Variant &value)
 Set attribute by name. Return true if successfully set.
 
void SetInstanceDefault (bool enable)
 Set instance-level default flag.
 
void ResetToDefault ()
 Reset all editable attributes to their default values.
 
void RemoveInstanceDefault ()
 Remove instance's default values if they are set previously.
 
void SetTemporary (bool enable)
 
void SetInterceptNetworkUpdate (const String &attributeName, bool enable)
 Enable interception of an attribute from network updates. Intercepted attributes are sent as events instead of applying directly. This can be used to implement client side prediction.
 
void AllocateNetworkState ()
 Allocate network attribute state.
 
void WriteInitialDeltaUpdate (Serializer &dest, unsigned char timeStamp)
 Write initial delta network update.
 
void WriteDeltaUpdate (Serializer &dest, const DirtyBits &attributeBits, unsigned char timeStamp)
 Write a delta network update according to dirty attribute bits.
 
void WriteLatestDataUpdate (Serializer &dest, unsigned char timeStamp)
 Write a latest data network update.
 
bool ReadDeltaUpdate (Deserializer &source)
 Read and apply a network delta update. Return true if attributes were changed.
 
bool ReadLatestDataUpdate (Deserializer &source)
 Read and apply a network latest data update. Return true if attributes were changed.
 
Variant GetAttribute (unsigned index) const
 
Variant GetAttribute (const String &name) const
 Return attribute value by name. Return empty if not found.
 
Variant GetAttributeDefault (unsigned index) const
 
Variant GetAttributeDefault (const String &name) const
 Return attribute default value by name. Return empty if not found.
 
unsigned GetNumAttributes () const
 
unsigned GetNumNetworkAttributes () const
 Return number of network replication attributes.
 
bool IsTemporary () const
 
bool GetInterceptNetworkUpdate (const String &attributeName) const
 Return whether an attribute's network updates are being intercepted.
 
NetworkStateGetNetworkState () const
 Return the network attribute state, if allocated.
 
- Public Member Functions inherited from Urho3D::Object
 Object (Context *context)
 Construct.
 
 ~Object () override
 Destruct. Clean up self from event sender & receiver structures.
 
virtual StringHash GetType () const =0
 
virtual const StringGetTypeName () const =0
 
virtual const TypeInfoGetTypeInfo () const =0
 Return type info.
 
virtual void OnEvent (Object *sender, StringHash eventType, VariantMap &eventData)
 Handle event.
 
bool IsInstanceOf (StringHash type) const
 Check current instance is type of specified type.
 
bool IsInstanceOf (const TypeInfo *typeInfo) const
 Check current instance is type of specified type.
 
template<typename T >
bool IsInstanceOf () const
 Check current instance is type of specified class.
 
template<typename T >
T * Cast ()
 Cast the object to specified most derived class.
 
template<typename T >
const T * Cast () const
 Cast the object to specified most derived class.
 
void SubscribeToEvent (StringHash eventType, EventHandler *handler)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, EventHandler *handler)
 Subscribe to a specific sender's event.
 
void SubscribeToEvent (StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to an event that can be sent by any sender.
 
void SubscribeToEvent (Object *sender, StringHash eventType, const std::function< void(StringHash, VariantMap &)> &function, void *userData=nullptr)
 Subscribe to a specific sender's event.
 
void UnsubscribeFromEvent (StringHash eventType)
 Unsubscribe from an event.
 
void UnsubscribeFromEvent (Object *sender, StringHash eventType)
 Unsubscribe from a specific sender's event.
 
void UnsubscribeFromEvents (Object *sender)
 Unsubscribe from a specific sender's events.
 
void UnsubscribeFromAllEvents ()
 Unsubscribe from all events.
 
void UnsubscribeFromAllEventsExcept (const PODVector< StringHash > &exceptions, bool onlyUserData)
 Unsubscribe from all events except those listed, and optionally only those with userdata (script registered events).
 
void SendEvent (StringHash eventType)
 Send event to all subscribers.
 
void SendEvent (StringHash eventType, VariantMap &eventData)
 Send event with parameters to all subscribers.
 
VariantMapGetEventDataMap () const
 Return a preallocated map for event data. Used for optimization to avoid constant re-allocation of event data maps.
 
template<typename... Args>
void SendEvent (StringHash eventType, Args... args)
 Send event with variadic parameter pairs to all subscribers. The parameter pairs is a list of paramID and paramValue separated by comma, one pair after another.
 
ContextGetContext () const
 Return execution context.
 
const VariantGetGlobalVar (StringHash key) const
 
const VariantMapGetGlobalVars () const
 
void SetGlobalVar (StringHash key, const Variant &value)
 
ObjectGetSubsystem (StringHash type) const
 Return subsystem by type.
 
ObjectGetEventSender () const
 Return active event sender. Null outside event handling.
 
EventHandlerGetEventHandler () const
 Return active event handler. Null outside event handling.
 
bool HasSubscribedToEvent (StringHash eventType) const
 Return whether has subscribed to an event without specific sender.
 
bool HasSubscribedToEvent (Object *sender, StringHash eventType) const
 Return whether has subscribed to a specific sender's event.
 
bool HasEventHandlers () const
 Return whether has subscribed to any event.
 
template<class T >
T * GetSubsystem () const
 Template version of returning a subsystem.
 
const StringGetCategory () const
 
void SetBlockEvents (bool block)
 Block object from sending and receiving events.
 
bool GetBlockEvents () const
 Return sending and receiving events blocking status.
 
- Public Member Functions inherited from Urho3D::RefCounted
 RefCounted ()
 Construct. Allocate the reference count structure and set an initial self weak reference.
 
virtual ~RefCounted ()
 Destruct. Mark as expired and also delete the reference count structure if no outside weak references exist.
 
 RefCounted (const RefCounted &rhs)=delete
 Prevent copy construction.
 
RefCountedoperator= (const RefCounted &rhs)=delete
 Prevent assignment.
 
void AddRef ()
 Increment reference count. Can also be called outside of a SharedPtr for traditional reference counting.
 
void ReleaseRef ()
 Decrement reference count and delete self if no more references. Can also be called outside of a SharedPtr for traditional reference counting.
 
int Refs () const
 
int WeakRefs () const
 
RefCountRefCountPtr ()
 Return pointer to the reference count structure.
 

Static Public Member Functions

static void RegisterObject (Context *context)
 Register object factory.
 
- Static Public Member Functions inherited from Urho3D::Animatable
static void RegisterObject (Context *context)
 Register object factory.
 
- Static Public Member Functions inherited from Urho3D::Object
static const TypeInfoGetTypeInfoStatic ()
 Return type info static.
 

Protected Member Functions

void OnAttributeAnimationAdded () override
 Handle attribute animation added.
 
void OnAttributeAnimationRemoved () override
 Handle attribute animation removed.
 
AnimatableFindAttributeAnimationTarget (const String &name, String &outName) override
 Find target of an attribute animation from object hierarchy by name.
 
- Protected Member Functions inherited from Urho3D::Animatable
void SetObjectAttributeAnimation (const String &name, ValueAnimation *attributeAnimation, WrapMode wrapMode, float speed)
 Set object attribute animation internal.
 
void OnObjectAnimationAdded (ObjectAnimation *objectAnimation)
 Handle object animation added.
 
void OnObjectAnimationRemoved (ObjectAnimation *objectAnimation)
 Handle object animation removed.
 
void UpdateAttributeAnimations (float timeStep)
 Update attribute animations.
 
bool IsAnimatedNetworkAttribute (const AttributeInfo &attrInfo) const
 Is animated network attribute.
 
AttributeAnimationInfoGetAttributeAnimationInfo (const String &name) const
 Return attribute animation info.
 
void HandleAttributeAnimationAdded (StringHash eventType, VariantMap &eventData)
 Handle attribute animation added.
 
void HandleAttributeAnimationRemoved (StringHash eventType, VariantMap &eventData)
 Handle attribute animation removed.
 

Protected Attributes

bool networkUpdate_
 Network update queued flag.
 
VariantMap vars_
 User variables.
 
- Protected Attributes inherited from Urho3D::Animatable
bool animationEnabled_
 Animation enabled.
 
SharedPtr< ObjectAnimationobjectAnimation_
 Animation.
 
HashSet< const AttributeInfo * > animatedNetworkAttributes_
 Animated network attribute set.
 
HashMap< String, SharedPtr< AttributeAnimationInfo > > attributeAnimationInfos_
 Attribute animation infos.
 
- Protected Attributes inherited from Urho3D::Serializable
UniquePtr< NetworkStatenetworkState_
 Network attribute state.
 
- Protected Attributes inherited from Urho3D::Object
Contextcontext_
 Execution context.
 

Private Member Functions

 URHO3D_OBJECT (Node, Animatable)
 
void SetEnabled (bool enable, bool recursive, bool storeSelf)
 Set enabled/disabled state with optional recursion. Optionally affect the remembered enable state.
 
ComponentSafeCreateComponent (const String &typeName, StringHash type, CreateMode mode, unsigned id)
 Create component, allowing UnknownComponent if actual type is not supported. Leave typeName empty if not known.
 
void UpdateWorldTransform () const
 Recalculate the world transform.
 
void RemoveChild (Vector< SharedPtr< Node > >::Iterator i)
 Remove child node by iterator.
 
void GetChildrenRecursive (PODVector< Node * > &dest) const
 Return child nodes recursively.
 
void GetChildrenWithComponentRecursive (PODVector< Node * > &dest, StringHash type) const
 Return child nodes with a specific component recursively.
 
void GetChildrenWithTagRecursive (PODVector< Node * > &dest, const String &tag) const
 Return child nodes with a specific tag recursively.
 
void GetComponentsRecursive (PODVector< Component * > &dest, StringHash type) const
 Return specific components recursively.
 
NodeCloneRecursive (Node *parent, SceneResolver &resolver, CreateMode mode)
 Clone node recursively.
 
void RemoveComponent (Vector< SharedPtr< Component > >::Iterator i)
 Remove a component from this node with the specified iterator.
 
void HandleAttributeAnimationUpdate (StringHash eventType, VariantMap &eventData)
 Handle attribute animation update event.
 

Private Attributes

Matrix3x4 worldTransform_
 World-space transform matrix.
 
bool dirty_
 World transform needs update flag.
 
bool enabled_
 Enabled flag.
 
bool enabledPrev_
 Last SetEnabled flag before any SetDeepEnabled.
 
Nodeparent_
 Parent scene node.
 
Scenescene_
 Scene (root node).
 
unsigned id_
 Unique ID within the scene.
 
Vector3 position_
 Position.
 
Quaternion rotation_
 Rotation.
 
Vector3 scale_
 Scale.
 
Quaternion worldRotation_
 World-space rotation.
 
Vector< SharedPtr< Component > > components_
 Components.
 
Vector< SharedPtr< Node > > children_
 Child scene nodes.
 
Vector< WeakPtr< Component > > listeners_
 Node listeners.
 
UniquePtr< NodeImplimpl_
 Pointer to implementation.
 

Friends

class Connection
 

Detailed Description

Scene node that may contain components and child nodes.

Member Function Documentation

◆ GetDirection()

Vector3 Urho3D::Node::GetDirection ( ) const
inline

Return forward direction in parent space. Positive Z axis equals identity rotation.

◆ GetID()

unsigned Urho3D::Node::GetID ( ) const
inline

Return ID.

Here is the caller graph for this function:

◆ GetName()

const String& Urho3D::Node::GetName ( ) const
inline

Return name.

Here is the caller graph for this function:

◆ GetNumComponents()

unsigned Urho3D::Node::GetNumComponents ( ) const
inline

Return number of components.

◆ GetOwner()

Connection* Urho3D::Node::GetOwner ( ) const
inline

Return owner connection in networking.

Here is the caller graph for this function:

◆ GetParent()

Node* Urho3D::Node::GetParent ( ) const
inline

Return parent scene node.

Here is the caller graph for this function:

◆ GetPosition()

const Vector3& Urho3D::Node::GetPosition ( ) const
inline

Return position in parent space.

Here is the caller graph for this function:

◆ GetPosition2D()

Vector2 Urho3D::Node::GetPosition2D ( ) const
inline

Return position in parent space (for Urho2D).

◆ GetRight()

Vector3 Urho3D::Node::GetRight ( ) const
inline

Return right direction in parent space. Positive X axis equals identity rotation.

◆ GetRotation()

const Quaternion& Urho3D::Node::GetRotation ( ) const
inline

Return rotation in parent space.

Here is the caller graph for this function:

◆ GetRotation2D()

float Urho3D::Node::GetRotation2D ( ) const
inline

Return rotation in parent space (for Urho2D).

◆ GetScale()

const Vector3& Urho3D::Node::GetScale ( ) const
inline

Return scale in parent space.

Here is the caller graph for this function:

◆ GetScale2D()

Vector2 Urho3D::Node::GetScale2D ( ) const
inline

Return scale in parent space (for Urho2D).

◆ GetScene()

Scene* Urho3D::Node::GetScene ( ) const
inline

Return scene.

Here is the caller graph for this function:

◆ GetSignedWorldScale()

Vector3 Urho3D::Node::GetSignedWorldScale ( ) const

Return signed scale in world space. Utilized for Urho2D physics.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetTags()

const StringVector& Urho3D::Node::GetTags ( ) const
inline

Return all tags.

Here is the caller graph for this function:

◆ GetTransform()

Matrix3x4 Urho3D::Node::GetTransform ( ) const
inline

Return parent space transform matrix.

Here is the caller graph for this function:

◆ GetUp()

Vector3 Urho3D::Node::GetUp ( ) const
inline

Return up direction in parent space. Positive Y axis equals identity rotation.

◆ GetWorldDirection()

Vector3 Urho3D::Node::GetWorldDirection ( ) const
inline

Return direction in world space.

Here is the caller graph for this function:

◆ GetWorldPosition()

Vector3 Urho3D::Node::GetWorldPosition ( ) const
inline

Return position in world space.

◆ GetWorldPosition2D()

Vector2 Urho3D::Node::GetWorldPosition2D ( ) const
inline

Return position in world space (for Urho2D).

◆ GetWorldRight()

Vector3 Urho3D::Node::GetWorldRight ( ) const
inline

Return node's right vector in world space.

◆ GetWorldRotation()

Quaternion Urho3D::Node::GetWorldRotation ( ) const
inline

Return rotation in world space.

Here is the caller graph for this function:

◆ GetWorldRotation2D()

float Urho3D::Node::GetWorldRotation2D ( ) const
inline

Return rotation in world space (for Urho2D).

◆ GetWorldScale()

Vector3 Urho3D::Node::GetWorldScale ( ) const
inline

Return scale in world space.

Here is the caller graph for this function:

◆ GetWorldScale2D()

Vector2 Urho3D::Node::GetWorldScale2D ( ) const
inline

Return scale in world space (for Urho2D).

◆ GetWorldTransform()

const Matrix3x4& Urho3D::Node::GetWorldTransform ( ) const
inline

Return world space transform matrix.

◆ GetWorldUp()

Vector3 Urho3D::Node::GetWorldUp ( ) const
inline

Return node's up vector in world space.

◆ IsEnabled()

bool Urho3D::Node::IsEnabled ( ) const
inline

Return whether is enabled. Disables nodes effectively disable all their components.

Here is the caller graph for this function:

◆ IsEnabledSelf()

bool Urho3D::Node::IsEnabledSelf ( ) const
inline

Return the node's last own enabled state. May be different than the value returned by IsEnabled when SetDeepEnabled has been used.

◆ IsReplicated()

bool Urho3D::Node::IsReplicated ( ) const

Return whether the node is replicated or local to a scene.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDirection()

void Urho3D::Node::SetDirection ( const Vector3 direction)

Set forward direction in parent space. Positive Z axis equals identity rotation.

Here is the call graph for this function:

◆ SetEnabled()

void Urho3D::Node::SetEnabled ( bool  enable)

Set enabled/disabled state without recursion. Components in a disabled node become effectively disabled regardless of their own enable/disable state.

Here is the caller graph for this function:

◆ SetID()

void Urho3D::Node::SetID ( unsigned  id)

Set ID. Called by Scene.

Here is the caller graph for this function:

◆ SetName()

void Urho3D::Node::SetName ( const String name)

Set name of the scene node. Names are not required to be unique.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetOwner()

void Urho3D::Node::SetOwner ( Connection owner)

Set owner connection for networking.

Here is the caller graph for this function:

◆ SetParent()

void Urho3D::Node::SetParent ( Node parent)

Assign to a new parent scene node. Retains the world transform.

Here is the call graph for this function:

◆ SetPosition()

void Urho3D::Node::SetPosition ( const Vector3 position)

Set position in parent space. If the scene node is on the root level (is child of the scene itself), this is same as world space.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetPosition2D()

void Urho3D::Node::SetPosition2D ( const Vector2 position)
inline

Set position in parent space (for Urho2D).

◆ SetRotation()

void Urho3D::Node::SetRotation ( const Quaternion rotation)

Set rotation in parent space.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetRotation2D()

void Urho3D::Node::SetRotation2D ( float  rotation)
inline

Set rotation in parent space (for Urho2D).

◆ SetScale()

void Urho3D::Node::SetScale ( const Vector3 scale)

Set scale in parent space.

◆ SetScale2D()

void Urho3D::Node::SetScale2D ( const Vector2 scale)
inline

Set scale in parent space (for Urho2D).

◆ SetWorldDirection()

void Urho3D::Node::SetWorldDirection ( const Vector3 direction)

Set forward direction in world space.

Here is the call graph for this function:

◆ SetWorldPosition()

void Urho3D::Node::SetWorldPosition ( const Vector3 position)

Set position in world space.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWorldPosition2D()

void Urho3D::Node::SetWorldPosition2D ( const Vector2 position)
inline

Set position in world space (for Urho2D).

◆ SetWorldRotation()

void Urho3D::Node::SetWorldRotation ( const Quaternion rotation)

Set rotation in world space.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWorldRotation2D()

void Urho3D::Node::SetWorldRotation2D ( float  rotation)
inline

Set rotation in world space (for Urho2D).

◆ SetWorldScale()

void Urho3D::Node::SetWorldScale ( const Vector3 scale)

Set scale in world space.

Here is the call graph for this function:

◆ SetWorldScale2D()

void Urho3D::Node::SetWorldScale2D ( const Vector2 scale)
inline

Set scale in world space (for Urho2D).


The documentation for this class was generated from the following files:
  • Source/Urho3D/Scene/Node.h
  • Source/Urho3D/Scene/Node.cpp