The base class of all scene graph nodes. More...

#include "murl_graph_node.h"

Inheritance diagram for Murl::Graph::Node:

Additional Inherited Members

- Public Types inherited from Murl::IFactoryObject< INode >
using ClassInfoArray = Array< const ClassInfo * >
 Definition of an array of ClassInfo objects.
 
- Public Member Functions inherited from Murl::IFactoryObject< INode >
 ~IFactoryObject () override
 The destructor.
 
virtual const ClassInfo * GetObjectClassInfo () const=0
 Get the object instance's class info, if present. More...
 
virtual void ResetObjectProperties ()=0
 Reset the object instance's properties to their default values.
 
- Static Public Member Functions inherited from Murl::IFactoryObject< INode >
static const PropertyInfoGetPropertyInfo ()
 Get the class' property info struct. More...
 
static const AttributeInfoGetAttributeInfo ()
 Get the class' attribute info struct. More...
 
static void ResetProperties (IFactoryObject< INode > *object)
 Reset an object instance's properties to their default values. More...
 

Detailed Description

The base class of all scene graph nodes.

This class represents the internal base class of all different nodes that are implemented in the framework's core library. Custom nodes may derive from this class, make use of the default method implementations, and override any of these methods if desired.

The following example shows how to create a simple scene graph made up from individual nodes, via an XML scene graph description:

<Node>
<MaterialState materialId="/main_materials/mat_1"/>
<TextureState textureId="/main_materials/tex_2" unit="0"/>
<Timeline startTime="0.0" endTime="10.0" numberOfLoops="-1" startOnActivate="yes">
<Transform controller.animationResourceId="main:walk_anim">
<ResourceMeshGeometry meshResourceId="main:model_0"/>
</Transform>
</Timeline>
</Node>

To find out the actual XML tag and available attribute names for all of the different graph nodes derived from Murl::Graph::Node, see the "XML Graph Resource Tag" and "XML Graph Resource Attributes" sections in the respective node's class reference.

It is possible to attach exactly one Murl::Graph::IController to a node, which is then responsible for manipulating one or more properties of the node, depending on the actual node class and controller purpose. The following example creates a Murl::Graph::PlaneSequenceGeometry node and attaches an animation controller referencing the "Anim1" animation resource within the "Main" package, at 75% speed:

<PlaneSequenceGeometry
controller="AnimationTimeController"
controller.timeScale="0.75"
controller.animationResourceId="Main:Anim1"
/>

Here, the "controller" attribute specifies which type of controller to attach; if this attribute is not specified, a Murl::Graph::AnimationTimeController will be created by default. In this example, "timeScale" is a common parameter for the Murl::Graph::TimeController base class, and "animationResourceId" is specific to Murl::Graph::AnimationTimeController.

Custom nodes might allow more than one controller to be attached, in this case the different controller properties must be prefixed with a unique attribute identifier similar to "controller." in the example, to uniquely define the parameters for each attached controller.

See the "XML Animation Resource Tags" section in a specific node class reference to find out which types of animation key frames are accepted by that node.

XML Elements

XML Graph Node Tag:

<Node>

XML Graph Node Attributes:

id="" [String]

The node ID. This must be unique within the current namespace. See Murl::Graph::INode::SetId().

active="true" [Bool]

If true, logic traversals will be carried out on this node. See Murl::Graph::INode::SetActive().

visible="true" [Bool]

If true, output traversals will be carried out on this node. See Murl::Graph::INode::SetVisible().

activeAndVisible="true" [Bool]

If true, both logic and output traversals will be carried out on this node. See Murl::Graph::INode::SetActiveAndVisible().

controller="" [String]

Specifies the type of the optional controller for this node (see above). If the controller is not specified but a "controller.animationResourceId" is given, a Murl::Graph::AnimationTimeController will be created by default. See also Murl::Graph::TimeController.

swapped="false" [Bool]

If true, The node is initially in the swapped state. See Murl::Graph::INode::SetSwapped().

enableAutomaticSwapping="false" [Bool]

If true, auto-swapping is enabled for this node. See Murl::Graph::INode::SetAutomaticSwappingEnabled().

enableManualSwapping="false" [Bool]

If true, manual swapping is enabled for this node. See Murl::Graph::INode::SetManualSwappingEnabled().

includeForLanguages="" [String]

A list of comma-separated language identifier strings from the Murl::IEnums::Language enumeration. If specified, the node is only created when the current app language matches one of the given identifiers.

includeForTargetClasses="" [String]

A list of comma-separated target class identifier strings from the Murl::IEnums::TargetClass enumeration. If specified, the node is only created when the actual platform target class matches one of the given identifiers.

includeForTargetDevices="" [String]

A list of comma-separated target device identifier strings from the Murl::IEnums::TargetDevice enumeration. If specified, the node is only created when the actual platform target device matches one of the given identifiers.

includeForTargetHosts="" [String]

A list of comma-separated target host identifier strings from the Murl::IEnums::TargetHost enumeration. If specified, the node is only created when the actual platform target host matches one of the given identifiers.

includeForOperatingSystems="" [String]

A list of comma-separated operating system identifier strings from the Murl::IEnums::OperatingSystem enumeration. If specified, the node is only created when the platform OS matches one of the given identifiers.

includeForGpus="" [String]

A list of comma-separated GPU identifier strings from the Murl::IEnums::Gpu enumeration. If specified, the node is only created when the platform GPU matches one of the given identifiers.

includeForVideoApis="" [String]

A list of comma-separated video API identifier strings from the Murl::IEnums::VideoApi enumeration. If specified, the node is only created when the chosen video API matches one of the given identifiers.

includeForAudioApis="" [String]

A list of comma-separated audio API identifier strings from the Murl::IEnums::AudioApi enumeration. If specified, the node is only created when the chosen audio API matches one of the given identifiers.

includeForPrescaleFactors="" [String]

A list of comma-separated integer values for possible textures prescale factors. If specified, the node is only created when the actually used prescale factor matches one of the given values.

includeForFeatures="" [String]

A list of comma-separated feature identifier strings from the Murl::IEnums::Feature enumeration. If specified, the node is only created when ALL of the given engine features are available.

includeForCondition="TRUE" [Bool]

A bool value to specify if this node/subtree should be created or not. Usually used in combination with the expression evaluator.

includeForUserConfigurations="" [String]

A comma-separated list of user configuration strings. If specified, the node/subtree is only created if at least one value evaluates to TRUE in the method Murl::IApp::IsUserConfigurationMatching method. Override this method in your Murl::App::AppBase class to use user configurations.

excludeForLanguages="" [String]

A list of comma-separated language identifier strings from the Murl::IEnums::Language enumeration. If specified, the node is only created when the current app language does not match any of the given identifiers.

excludeForTargetClasses="" [String]

A list of comma-separated target class identifier strings from the Murl::IEnums::TargetClass enumeration. If specified, the node is only created when the actual platform target class does not match any of the given identifiers.

excludeForTargetDevices="" [String]

A list of comma-separated target device identifier strings from the Murl::IEnums::TargetDevice enumeration. If specified, the node is only created when the actual platform target device does not match any of the given identifiers.

excludeForTargetHosts="" [String]

A list of comma-separated target host identifier strings from the Murl::IEnums::TargetHost enumeration. If specified, the node is only created when the actual platform target host does not match any of the given identifiers.

excludeForOperatingSystems="" [String]

A list of comma-separated operating system identifier strings from the Murl::IEnums::OperatingSystem enumeration. If specified, the node is only created when the platform OS does not match any of the given identifiers.

excludeForGpus="" [String]

A list of comma-separated GPU identifier strings from the Murl::IEnums::Gpu enumeration. If specified, the node is only created when the platform GPU does not match any of the given identifiers.

excludeForVideoApis="" [String]

A list of comma-separated video API identifier strings from the Murl::IEnums::VideoApi enumeration. If specified, the node is only created when the chosen video API does not match any of the given identifiers.

excludeForAudioApis="" [String]

A list of comma-separated audio API identifier strings from the Murl::IEnums::AudioApi enumeration. If specified, the node is only created when the chosen audio API does not match any of the given identifiers.

excludeForPrescaleFactors="" [String]

A list of comma-separated integer values for possible textures prescale factors. If specified, the node is only created when the actually used prescale factor does not match any of the given values.

excludeForFeatures="" [String]

A list of comma-separated feature identifier strings from the Murl::IEnums::Feature enumeration. If specified, the node is only created when at least one of the given engine features is not available.

excludeForCondition="TRUE" [Bool]

A bool value to specify if this node/subtree should be created or not. Usually used in combination with the expression evaluator.

excludeForUserConfigurations="" [String]

A comma-separated list of user configuration strings. If specified, the node/subtree is not created if any value evaluates to TRUE in the method Murl::IApp::IsUserConfigurationMatching method. Override this method in your Murl::App::AppBase class to use user configurations.

XML Animation Resource Tags:

<ActiveKey interpolation="CONSTANT"> [BoolKey]

The animation key acting on Murl::Graph::ITraversable::SetActive().

<VisibleKey interpolation="CONSTANT"> [BoolKey]

The animation key acting on Murl::Graph::ITraversable::SetVisible().


The documentation for this class was generated from the following file:
  • murl_graph_node.h


Copyright © 2011-2024 Spraylight GmbH.