Node Class
In terms of Unigine, all of the objects added into the scene are called nodes. Nodes can be of different types, determining their visual representation and behavior.
The node is created and stored in the world. All changes are saved into the .world file.
The node can be also saved into an external .node file and then imported into the world when necessary. Also it is possible to create a reference to the exported node.
You can associate any string data (written directly into a *.node or a *.world file) or an arbitrary user variable with a node.
See Also
- How to handle ownership
- How to work with the node's matrix transformations
Node Class
Members
vec3 getAngularVelocity()
Returns the angular velocity of the node's physical body in the local space.Return value
Angular velocity in the local space.BoundBox getBoundBox()
Returns the bounding box of the node.Return value
The bounding box.BoundSphere getBoundSphere()
Returns the bounding sphere of the node.Return value
The bounding sphere.Node getChild(int num)
Returns a given child of the node.Arguments
- int num - ID number of the child.
Return value
Child node.int isChild(Node n)
Checks if a given node is a child of the current node.Arguments
- Node n - Node to check.
Return value
1 if the node in question is a child; otherwise, 0.void setClutter(int clutter)
Updates a value indicating if the node represents a clutter object.Arguments
- int clutter - Positive number to mark the node as a clutter object, 0 otherwise.
int isClutter()
Returns a value indicating if the node is a clutter object.Return value
1 if the node is a clutter object; otherwise, 0.void setCollider(int collider)
Updates a value indicating if collision test enabled for the node.Arguments
- int collider - Positive number to enable collision test, 0 to disable.
int isCollider()
Returns a value indicating if collision test is enabled for the node.Return value
1 if collision test is enabled for the node ; otherwise, 0.void setData(string data)
Updates user data associated with the node.- If the node was loaded from the *.node file, data is saved directly into the data tag of this file.
- If the node is loaded from the *.world file, data is saved into the Node data tag of the *.world file.
- If the node is loaded from the *.world file as a NodeReference, data will be saved to the NodeReference data tag of the *.world file.
Arguments
- string data - New user data. Data can contain an XML formatted string.
string getData()
Returns user string data associated with the node.- If the node was loaded from the *.node file, data from the data tag of this file is returned.
- If the node is loaded from the *.world file, data from the Node data tag of the *.world file is returned.
- If the node is loaded from the *.world file as a NodeReference, data from the NodeReference data tag of the *.world file is returned.
You can also use setVariable()to associate an arbitrary user variable with a node.
Return value
User string data. Data can contain an XML formatted string.int isDecal()
Returns a value indicating if the node is a decal (its type is NODE_DECAL_*).Return value
1 if the node is a decal; otherwise, 0.void setNodeDirection(vec3 dir, vec3 up)
Updates the direction vector of the node. By default, a direction vector points along -Z axis. This function changes its direction and reorients the node.Arguments
- vec3 dir - New direction vector in the local space. The direction vector always has unit length.
- vec3 up - New up vector in the local space.
vec3 getNodeDirection()
Returns the normalized direction vector of the node. By default, a direction vector points along the mesh local -Z axis. It always has an unit length.Return value
Normalized direction vector in the local space.void setEnabled(int enabled)
Enables or disables the node.Arguments
- int enabled - Positive number to enable the node, 0 to disable.
int isEnabled()
Returns a value indicating if the node and its parent nodes are enabled.Return value
1 if the node and its parent nodes are enabled; otherwise, 0.int isEnabledSelf()
Returns a value indicating if the node is enabled.Return value
1 if the node is enabled; otherwise, 0.isExtern()
int isField()
void setFolded(int folded)
Shows or minimizes node children in the node tree hierarchy.Arguments
- int folded - Positive number to minimize node children, 0 to expand node hierarchy.
int isFolded()
Returns a value indicating if node children are displayed or minimized in the node tree hierarchy.Return value
Positive number if node children are hidden in the node tree; otherwise, 0.int isGeodetic()
Return value
1 if the node is a geodetic-related; otherwise, 0.void setHandled(int handled)
Disables or shows the node handle. This option is valid only for invisible nodes, such as light and sound sources, particle systems and world-managing nodes (WorldSector, WorldPortal, WorldOccluder, triggers, expressions, etc.)Arguments
- int handled - Positive number to show the handle, 0 to hide it.
int isHandled()
Returns a value indicating if the node handle is displayed. This option is valid only for invisible nodes, such as light and sound sources, particle systems and world-managing nodes (WorldSector, WorldPortal, WorldOccluder, triggers, expressions, etc.)Return value
1 if the handle is shown; otherwise, 0.int setID(int id)
Sets the unique ID for the node.Arguments
- int id - Unique ID.
Return value
1 if the ID is set successfully; otherwise, 0.int getID()
Returns the unique ID of the node.See also engine.world.getNode() function.
Return value
Unique ID.Mat4 getIWorldTransform()
Returns the inverse transformation matrix of the node for transformations in the world coordinates.Return value
Inverse transformation matrix.void setLatest(int latest)
Sets a flag that forces a node to be updated the last of all, after states of all other nodes were updated. For example, a post update flag is useful to draw nodes strictly in front of the camera (after a Player has updated its transformations).Arguments
- int latest - Positive value to update a node last of all; otherwise, 0.
int isLatest()
Checks if a node is forced to be updated the last of all, after states of all other nodes were updated. For example, a post update flag is useful to draw nodes strictly in front of the camera (after a Player has updated its transformations).Return value
1 if the node is updated last of all; otherwise, 0int isLight()
Returns a value indicating if the node is a light source (its type is NODE_LIGHT_*).Return value
1 if the node is a light source; otherwise, 0.vec3 getLinearVelocity()
Returns the linear velocity of the node's physical body in the local space.Return value
Linear velocity in the local space.void setName(string name)
Updates the name of the node.Arguments
- string name - New name of the node.
string getName()
Returns the name of the node.Return value
Name of the node.int isNavigation()
Returns a value indicating if a given node is a navigation node.Return value
Returns 1 if the given node is a navigation node; otherwise, 0.Node getNode()
Returns a node pointer.Return value
Node pointer.Node getNode(int id)
Returns a node pointer.Arguments
- int id - Node identifier.
Return value
Node pointer.int isNode(Node node)
Check the node pointer.Arguments
- Node node - Node pointer.
Return value
Returns 1 if the node is valid; otherwise, 0.int isNode(int id)
Check the node pointer.Arguments
- int id - Node pointer.
Return value
Returns 1 if the node is valid; otherwise, 0.int getNumChildren()
Returns the number of children of the node.Return value
Number of child nodes.int isObject()
Returns a value indicating if the node is an object node (its type is NODE_OBJECT_*).Return value
1 if the node is an object node; otherwise, 0.Body getObjectBody()
BodyRigid getObjectBodyRigid()
int isObstacle()
Returns a value indicating if a given node is an obstacle node.Return value
Returns 1 if the given node is an obstacle node; otherwise, 0.void setParent(Node parent)
Updates the parent for the node. Transformations of the current node will be done in the coordinates of the parent.Arguments
- Node parent - New parent node.
Node getParent()
Returns the parent of the node.Return value
Parent node or NULL (0), if the node has no parent.int isPhysical()
Returns a value indicating if the node is a physical force node (its type is NODE_PHYSICAL_FORCE).Return value
1 if the node is a physical force node; otherwise, 0.int isPlayer()
Returns a value indicating if the node is a player (its type is NODE_PLAYER_*).Return value
1 if the node is a player; otherwise, 0.void setNodePosition(Vec3 pos)
Updates the node position.Arguments
- Vec3 pos - New position in the local space.
Vec3 getNodePosition()
Returns the node position.Return value
The node position in the local space.Node getPossessor()
Returns NodeReference, WorldCluster or WorldClutter if they are a container of the current node. This function can only be applied to a root node inside a node reference.Return value
Container of the node.int setProperty(string name)
Associates a given property with the whole node.Arguments
- string name - Property name.
Return value
1 if the property is set correctly; otherwise - 0.Property getProperty()
Returns a property associated with the node.Return value
Property defined for the whole node.string getPropertyName()
Returns the name of a property associated with the node.Return value
Property name.void setQuery(int query)
Updates a value indicating if occlusion query is used for the node.Arguments
- int query - Positive number to use occlusion query, 0 not to use.
int isQuery()
Returns a value indicating if occlusion query is used for the node.Return value
1 if occlusion query is used; otherwise, 0.Node getRootNode()
void setNodeRotation(quat rot, int identity = 0)
Updates the node rotation.Arguments
- quat rot - New rotation in the local space.
- int identity - 1 to enable scaling of the node, 0 to disable it.
quat getNodeRotation()
Returns the node rotation.Return value
The node rotation in the local space.void setNodeScale(vec3 s)
Updates the node scale.Arguments
- vec3 s - New scale in the local space.
vec3 getNodeScale()
Returns scale of the node.Return value
Scale in the local space.int isShadow()
Returns a value indicating if the node was a shadow caster in the previous frame and, therefore, is updated.Return value
1 if the node was a shadow caster; otherwise, 0.int isSound()
Returns a value indicating if the node is a sound node (its type is NODE_SOUND_*).Return value
1 if the node is a sound node; otherwise, 0.void setSpatial(int spatial)
Updates a value indicating if sectors and portals are used for node visibility determination.Arguments
- int spatial - Positive value to consider sectors and portals; otherwise, 0.
int isSpatial()
Returns a value indicating if sectors and portals are used for node visibility determination.Return value
1 if sectors and portals are considered; otherwise, 0.void setTransform(Mat4 transform)
Updates the transformation matrix of the node.Arguments
- Mat4 transform - New transformation matrix.
Mat4 getTransform()
Returns the transformation matrix of the node.Return value
Transformation matrix.int getType()
Returns the type of the node.Return value
One of the NODE_* pre-defined variables.int getTypeId(string type)
Arguments
- string type
string getTypeName()
Returns a name of the node type.Return value
Type name.string getTypeName(int type)
Arguments
- int type
void setVariable(string name, Variable v)
Arguments
- string name
- Variable v
void setVariable(Variable v)
Arguments
- Variable v
Variable getVariable(string name)
Arguments
- string name
Variable getVariable()
int isVisible()
Returns a value indicating if the node was shown in the viewport in the previous frame and, therefore, is updated.Return value
1 if the node was visible; otherwise, 0.int isWorld()
Returns a value indicating if the node is a part of the world (its type is NODE_WORLD_*).Return value
1 if the node is an occluder or a sector or a portal; otherwise, 0.vec3 getWorldBack()
WorldBoundBox getWorldBoundBox()
Returns the world bounding box of the node.If the double precision build is used, the function will return an instance of the WorldBoundBox class.
Return value
World bounding box.WorldBoundSphere getWorldBoundSphere()
Returns the world bounding sphere of the node.If the double precision build is used, the function will return an instance of the WorldBoundSphere class.
Return value
The bounding sphere.void setNodeWorldDirection(vec3 dir, vec3 up)
Updates the direction vector of the node. By default, a direction vector points along -Z axis. This function changes its direction and reorients the node.Arguments
- vec3 dir - New direction vector in the world space. The direction vector always has unit length.
- vec3 up - New up vector in the world space.
vec3 getNodeWorldDirection()
Returns the normalized direction vector of the node. By default, a direction vector points along the mesh local -Z axis and is returned in world space coordinates. It always has the unit length.Return value
Normalized direction vector in the world space.vec3 getWorldDown()
vec3 getWorldForward()
vec3 getWorldLeft()
void setWorldParent(Node n)
Updates the parent for the node. Transformations of the current node will be done in the world coordinates.Arguments
- Node n - New parent node.
void setNodeWorldPosition(Vec3 pos)
Updates the node position.Arguments
- Vec3 pos - New position in the world space.
Vec3 getNodeWorldPosition()
Returns the node position.Return value
The node position in the world space.vec3 getWorldRight()
void setNodeWorldRotation(quat rot, int identity = 0)
Updates the node rotation.Arguments
- quat rot - New rotation in the world space.
- int identity - 1 to enable scaling of the node, 0 to disable it.
quat getNodeWorldRotation()
Returns the node rotation.Return value
The node rotation in the local space.void setNodeWorldScale(vec3 s)
Arguments
- vec3 s
vec3 getNodeWorldScale()
Returns scale of the node.Return value
Scale in the local space.WorldSector getWorldSector()
Returns a sector, in which the node is located.Return value
World sector.void setWorldTransform(Mat4 transform)
Updates the transformation matrix of the node for transformations in the world coordinates.Arguments
- Mat4 transform - New transformation matrix.
Mat4 getWorldTransform()
Returns the transformation matrix of the node for transformations in the world coordinates.Return value
Transformation matrix.vec3 getWorldUp()
vec3 getWorldVelocity(Vec3 point)
Returns linear velocity of a point of the node's physical body in the world space.Arguments
- Vec3 point - Target point.
Return value
Linear velocity in the world space.void addChild(Node n)
Adds a child to the node. Transformations of the new child will be done in the coordinates of the parent.Arguments
- Node n - New child node.
void addWorldChild(Node n)
Adds a child to the node. Transformations of the new child will be done in the world coordinates.Arguments
- Node n - New child node.
Node clone()
Clones the node.Return value
Copy of the node or NULL (0), if an error occurred.int findChild(string name)
Searches for a child node with a given name among all children of the current node.Arguments
- string name - Name of the child node.
Return value
Number of the child, if it is found; otherwise, -1.Node findNode(string name, int recursive = 0)
Arguments
- string name
- int recursive
int hasVariable(string name)
Arguments
- string name
int hasVariable()
int loadWorld(Xml xml)
Loads a node state from the Xml.Arguments
- Xml xml - Xml smart pointer.
Return value
1 if the node state is loaded successfully; otherwise, 0.void removeChild(Node n)
Removes a child node (added by the addChild()method) from the list of children.Arguments
- Node n - Child node to remove.
int removeVariable(string name)
Arguments
- string name
void removeWorldChild(Node n)
Removes a child node (added by the addWorldChild()method) from the list of children.Arguments
- Node n - Child node to remove.
void renderVisualizer()
Renders a bounding box / sphere of the object.You should enable the engine visualizer by the show_visualizer 1 console command.
int restoreState(Stream stream)
Restores the state of a given node from a binary stream.- If a node is a parent for other nodes, states of these child nodes need to be restored manually.
- To save the state into a buffer, file or a message from a socket, make sure the stream is opened. If necessary, you can set a position for writing for buffers and files.
Arguments
- Stream stream - Stream with saved node state data.
Return value
1 if node state is successfully restored; otherwise, 0.void rotate(quat r)
Arguments
- quat r
int saveState(Stream stream)
Saves the state of a given node into a binary stream.- If a node is a parent for other nodes, states of these child nodes need to be saved manually.
- To save the state from a buffer, file or a message from a socket, make sure the stream is opened. For buffers and files, you also need to set the proper position for reading.
Arguments
- Stream stream - Stream to save node state data.
Return value
1 if node state is successfully saved; otherwise, 0.int saveWorld(Xml xml)
Saves a node state into the Xml.Arguments
- Xml xml - Xml smart pointer.
Return value
1 if the node state is saved successfully; otherwise, 0.void scale(vec3 s)
Arguments
- vec3 s
void swap(Node n)
Swaps the nodes saving the pointers.Arguments
- Node n - Node to swap.
vec3 toLocal(Vec3 p)
Arguments
- Vec3 p
Vec3 toWorld(vec3 p)
Arguments
- vec3 p
void translate(Vec3 t)
Arguments
- Vec3 t
void worldRotate(quat r)
Arguments
- quat r
void worldScale(vec3 s)
Arguments
- vec3 s
void worldTranslate(Vec3 t)
Arguments
- Vec3 t
int NODE_DECAL_BEGIN
int NODE_DECAL_END
int NODE_DECAL_MESH
Description
Mesh decal.int NODE_DECAL_ORTHO
Description
Orthographic decal.int NODE_DECAL_PROJ
Description
Projected decal.int NODE_DUMMY
Description
Dummy node.int NODE_EXTERN
Description
Extern node.int NODE_FIELD_ANIMATION
Description
Field Animation node.int NODE_FIELD_BEGIN
int NODE_FIELD_END
int NODE_FIELD_HEIGHT
int NODE_FIELD_SHORELINE
int NODE_FIELD_SPACER
Description
Field Spacer node.int NODE_GEODETIC_BEGIN
int NODE_GEODETIC_END
int NODE_GEODETIC_PIVOT
int NODE_LAYER
Description
Node layer containing parent layer and all its child nodes. See the NodeLayer class.int NODE_LIGHT_BEGIN
int NODE_LIGHT_END
int NODE_LIGHT_ENVIRONMENT_PROBE
Description
Environment probe. See the LightEnvironmentProbe class.int NODE_LIGHT_OMNI
Description
Omni-directional light source. See the LightOmni class.int NODE_LIGHT_PROJ
Description
Projected light source. See the LightProj class.int NODE_LIGHT_WORLD
Description
World light source. See the LightWorld class.int NODE_NAVIGATION_BEGIN
int NODE_NAVIGATION_END
int NODE_NAVIGATION_MESH
Description
Mesh-based navigation area across which pathfinding is performed.int NODE_NAVIGATION_SECTOR
Description
Sector within which pathfinding is performed.int NODE_NODE_DUMMY
int NODE_NODE_EXTERN
int NODE_NODE_LAYER
int NODE_NODE_PIVOT
int NODE_NODE_REFERENCE
int NODE_NODE_TRIGGER
int NODE_NUM_DECALS
int NODE_NUM_FIELDS
int NODE_NUM_GEODETICS
int NODE_NUM_LIGHTS
int NODE_NUM_NAVIGATIONS
int NODE_NUM_NODES
int NODE_NUM_OBJECTS
int NODE_NUM_OBSTACLES
int NODE_NUM_PHYSICALS
int NODE_NUM_PLAYERS
int NODE_NUM_SOUNDS
int NODE_NUM_WORLDS
int NODE_OBJECT_BEGIN
int NODE_OBJECT_BILLBOARDS
Description
Billboards object for rendering a high number of billboards. See the ObjectBillboard class.int NODE_OBJECT_DUMMY
Description
Dummy object. See the ObjectDummy class.int NODE_OBJECT_DYNAMIC
Description
Dynamic object. See the ObjectDynamic class.int NODE_OBJECT_END
int NODE_OBJECT_EXTERN
Description
Extern object. See the ObjectExtern class.int NODE_OBJECT_GRASS
Description
Grass.int NODE_OBJECT_GUI
Description
GUI object. See the ObjectGui class.int NODE_OBJECT_GUI_MESH
Description
GUI mesh object. See the ObjectGuiMesh class.int NODE_OBJECT_MESH_CLUSTER
Description
Mesh Cluster object. See the ObjectMeshCluster class.int NODE_OBJECT_MESH_CLUTTER
Description
Mesh Clutter object. See the ObjectMeshClutter class.int NODE_OBJECT_MESH_DYNAMIC
Description
Dynamic mesh object. See the ObjectMeshDynamic class.int NODE_OBJECT_MESH_SKINNED
Description
Skinned mesh object. See the ObjectMeshSkinned class.int NODE_OBJECT_MESH_STATIC
Description
Static mesh object. See the ObjectMeshStatic class.int NODE_OBJECT_PARTICLES
Description
Particles object. See the ObjectParticles class.int NODE_OBJECT_SKY
Description
Sky object. See the ObjectSky class.int NODE_OBJECT_TERRAIN
Description
Terrain object. See the ObjectTerrain class.int NODE_OBJECT_TEXT
Description
Text object. See the ObjectText class.int NODE_OBJECT_VOLUME_BOX
Description
Volume box object. See the ObjectVolumeBox class.int NODE_OBJECT_VOLUME_OMNI
Description
Volume omni light object. See the ObjectVolumeOmni class.int NODE_OBJECT_VOLUME_PROJ
Description
Volume projected light object. See the ObjectVolumeProj class.int NODE_OBJECT_VOLUME_SPHERE
Description
Volume sphere object. See the ObjectVolumeSphere class.int NODE_OBJECT_WATER_GLOBAL
int NODE_OBJECT_WATER_MESH
Description
Water mesh object. See the ObjectWaterMesh class.int NODE_OBSTACLE_BEGIN
int NODE_OBSTACLE_BOX
Description
Obstacle in the shape of a box avoided by pathfinding.int NODE_OBSTACLE_CAPSULE
Description
Obstacle in the shape of a capsule avoided by pathfinding.int NODE_OBSTACLE_END
int NODE_OBSTACLE_SPHERE
Description
Obstacle in the shape of a sphere avoided by pathfinding.int NODE_PHYSICAL_BEGIN
int NODE_PHYSICAL_END
int NODE_PHYSICAL_FORCE
Description
Physical force node that allows to simulate point forces applied to dynamic objects. See the PhysicalForce class.int NODE_PHYSICAL_NOISE
Description
Physical noise node that allows to simulate force field.int NODE_PHYSICAL_TRIGGER
Description
Physical trigger. See the PhysicalTrigger class.int NODE_PHYSICAL_WATER
Description
Physical water object that has no visual representation. See the PhysicalWater class.int NODE_PHYSICAL_WIND
Description
Physical wind object. See the PhysicalWind class.int NODE_PIVOT
Description
Node that helps to control rotation and transformation of its children.int NODE_PLAYER_ACTOR
Description
Acting player. See the PlayerActor class.int NODE_PLAYER_BEGIN
int NODE_PLAYER_DUMMY
Description
Dummy player. See the PlayerDummy class.int NODE_PLAYER_END
int NODE_PLAYER_PERSECUTOR
Description
Persecuting player. See the PlayerPersecutor class.int NODE_PLAYER_SPECTATOR
Description
Observing player. See the PlayerSpectator class.int NODE_REFERENCE
Description
Node that references an external NODE file. See the NodeReference class.int NODE_SOUND_BEGIN
int NODE_SOUND_END
int NODE_SOUND_REVERB
Description
Sound reverberation zone. See the SoundReverb class.int NODE_SOUND_SOURCE
Description
Sound source. See the SoundSource class.int NODE_TRIGGER
Description
Dummy node that can fire callbacks on its enabling/disabling or repositioning. See the NodeTrigger class.int NODE_WORLD_BEGIN
int NODE_WORLD_CLUSTER
Description
Node cluster. See the WorldCluster class.int NODE_WORLD_CLUTTER
Description
World clutter. See the WorldClutter class.int NODE_WORLD_END
int NODE_WORLD_EXPRESSION
Description
Node which allows to execute arbitrary expression. See the WorldExpression class.int NODE_WORLD_EXTERN
Description
External world. See the WorldExtern class.int NODE_WORLD_LAYER
Description
World layer. See the WorldLayer class.int NODE_WORLD_OCCLUDER
Description
World occluder. See the WorldOccluder class.int NODE_WORLD_OCCLUDER_MESH
Description
World mesh occluder. See the WorldOccluderMesh class.int NODE_WORLD_OCCLUDER_TERRAIN
Description
World terrain occluder. See the WorldOccluderMesh class.int NODE_WORLD_PORTAL
Description
World portal. See the WorldPortal class.int NODE_WORLD_SECTOR
Description
World sector. See the WorldSector class.int NODE_WORLD_SWITCHER
Description
Node switcher (to switch off parts of the world). See the WorldSwitcher class.int NODE_WORLD_TRANSFORM_BONE
Description
Bone defined transformer. See the WorldTransformBone class.int NODE_WORLD_TRANSFORM_PATH
Description
Path defined transformer. See the WorldTransformPathint NODE_WORLD_TRIGGER
Description
World trigger. See the WorldTrigger class.Last update: 2017-07-03
Help improve this article
Was this article helpful?
(or select a word/phrase and press Ctrl+Enter)