The IReference graph node interface. More...

#include "murl_graph_i_reference.h"

Inheritance diagram for Murl::Graph::IReference:

Public Member Functions

virtual INodeGetNodeInterface ()=0
 Get the mutable Graph::INode interface. More...
 
virtual const INodeGetNodeInterface () const =0
 Get the constant Graph::INode interface. More...
 
virtual ITransformGetTransformInterface ()=0
 Get the mutable Graph::ITransform interface. More...
 
virtual const ITransformGetTransformInterface () const =0
 Get the constant Graph::ITransform interface. More...
 
virtual IScaleGetScaleInterface ()=0
 Get the mutable Graph::IScale interface. More...
 
virtual const IScaleGetScaleInterface () const =0
 Get the constant Graph::IScale interface. More...
 
virtual INodeTargetGetNodeTarget ()=0
 Get the mutable Graph::INodeTarget container. More...
 
virtual const INodeTargetGetNodeTarget () const =0
 Get the constant Graph::INodeTarget container. More...
 

Detailed Description

The IReference graph node interface.

Reference nodes can be used to directly reference to any other (previously defined) node in the scene graph, without actually duplicating that node and its children (in contrast to Graph::IInstance nodes, which actually create new sub-graphs).

Scene graph traversal is carried out on the referenced node and its children as if they were regular children of this node. In other words, multiple traversals may be carried out on the same node more than once per tick and/or frame, depending on its active and/or visible state, respectively. If some animated node is referenced, all references to this node reflect the same animation state during that frame. It is not possible to e.g. reference a single animated Graph::IPlaneSequenceGeometry multiple times and show different animation frames: all references are in sync regarding animation state. In such a case, e.g. a Graph::IInstance must be used instead, to create distinct animated objects.

The interface exposes two GetTransformInterface() methods that can be used to access a node's optionally present Graph::ITransform interface, which allows to define an additional transform applied to the referenced node. Note, that simple references need not implement this interface and return null on both methods.

Member Function Documentation

◆ GetNodeInterface() [1/2]

virtual INode* Murl::Graph::IReference::GetNodeInterface ( )
pure virtual

Get the mutable Graph::INode interface.

This method returns a mutable pointer to the node's Graph::INode interface, to be able to query or modify common node properties such as active state, visibility or ID.

Returns
The mutable Graph::INode interface, or null if not available

Referenced by Murl::Logic::GraphObservableNode< NodeType >::TrackReference().

◆ GetNodeInterface() [2/2]

virtual const INode* Murl::Graph::IReference::GetNodeInterface ( ) const
pure virtual

Get the constant Graph::INode interface.

This method returns a constant pointer to the node's Graph::INode interface, to be able to query common node properties such as active state, visibility or ID.

Returns
The constant Graph::INode interface, or null if not available

◆ GetTransformInterface() [1/2]

virtual ITransform* Murl::Graph::IReference::GetTransformInterface ( )
pure virtual

Get the mutable Graph::ITransform interface.

This method returns a mutable pointer to the node's optional Graph::ITransform interface, to be able to query or modify the node's transformation matrix and depth order.

Returns
The mutable Graph::ITransform interface, or null if not available

◆ GetTransformInterface() [2/2]

virtual const ITransform* Murl::Graph::IReference::GetTransformInterface ( ) const
pure virtual

Get the constant Graph::ITransform interface.

This method returns a constant pointer to the node's optional Graph::ITransform interface, to be able to query the node's transformation matrix and depth order.

Returns
The constant Graph::ITransform interface, or null if not available

◆ GetScaleInterface() [1/2]

virtual IScale* Murl::Graph::IReference::GetScaleInterface ( )
pure virtual

Get the mutable Graph::IScale interface.

This method returns a mutable pointer to the node's optional Graph::IScale interface, to be able to query or modify the node's scale factor.

Returns
The mutable Graph::IScale interface, or null if not available

◆ GetScaleInterface() [2/2]

virtual const IScale* Murl::Graph::IReference::GetScaleInterface ( ) const
pure virtual

Get the constant Graph::IScale interface.

This method returns a constant pointer to the node's optional Graph::IScale interface, to be able to query the node's scale factor.

Returns
The constant Graph::IScale interface, or null if not available

◆ GetNodeTarget() [1/2]

virtual INodeTarget* Murl::Graph::IReference::GetNodeTarget ( )
pure virtual

Get the mutable Graph::INodeTarget container.

This method returns a mutable pointer to the node's Graph::INodeTarget container, which allows to set or query the referenced node.

Returns
The mutable Graph::INodeTarget container, or null if not available.

Referenced by Murl::Logic::GraphObservableNode< NodeType >::TrackReference().

◆ GetNodeTarget() [2/2]

virtual const INodeTarget* Murl::Graph::IReference::GetNodeTarget ( ) const
pure virtual

Get the constant Graph::INodeTarget container.

This method returns a constant pointer to the node's Graph::INodeTarget container, which allows to query the referenced node.

Returns
The mutable Graph::INodeTarget container, or null if not available.

The documentation for this interface was generated from the following file:
  • murl_graph_i_reference.h


Copyright © 2011-2024 Spraylight GmbH.