Murl::Graph::IProcessLogicTracker Interface Referenceabstract

The tracker used for logic processing traversals. More...

#include "murl_graph_i_process_logic_tracker.h"

Inherited by Murl::Core::GraphProcessLogicTracker.

Public Member Functions

virtual Bool Init ()=0
 Initialize the tracker. More...
 
virtual Bool DeInit ()=0
 Deinitialize the tracker. More...
 
virtual ITrackerGetTrackerInterface ()=0
 Get the tracker base class interface. More...
 
virtual Bool BeginFrame ()=0
 Begin a traversal frame. More...
 
virtual Bool EndFrame ()=0
 End a traversal frame. More...
 
virtual Bool BeginLogicTick ()=0
 Begin a traversal logic tick. More...
 
virtual Bool EndLogicTick ()=0
 End a traversal logic tick. More...
 
virtual UInt32 GetCurrentLogicTickNumber () const =0
 Get the current logic tick number. More...
 
virtual Double GetCurrentLogicTickTime () const =0
 Get the current absolute logic tick time. More...
 
virtual Double GetCurrentLogicTickDuration () const =0
 Get the current logic tick duration. More...
 
virtual Physics::ISimulatorGetPhysicsSimulator () const =0
 Get the physics simulator used to submit physics objects. More...
 
virtual const Resource::ICollectionGetResourceCollection () const =0
 Get the engine's main resource collection. More...
 
virtual IHandleGetCurrentHandle ()=0
 Obtain a handle for the current node. More...
 
virtual IHandleInstanceGetCurrentHandleInstance ()=0
 Obtain a handle instance for the current node. More...
 
virtual void SetCurrentAnchor (const IAnchor *anchor, SInt32 slot)=0
 Bind a transform anchor to a specific slot. More...
 
virtual const IAnchorGetCurrentAnchor (SInt32 slot) const =0
 Get a transform anchor bound to a specific slot. More...
 
virtual void ClearCurrentAnchors ()=0
 Clear the current transform anchor binding.
 
virtual void SaveCurrentAnchors ()=0
 Save the current transform anchor binding.
 
virtual void RestoreCurrentAnchors ()=0
 Restore the previous transform anchor binding.
 
virtual void SetCurrentSurface (const ISurface *surface, SInt32 slot)=0
 Bind a collision surface to a specific slot. More...
 
virtual const ISurfaceGetCurrentSurface (SInt32 slot) const =0
 Get a collision surface bound to a specific slot. More...
 
virtual void ClearCurrentSurfaces ()=0
 Clear the current collision surface binding.
 
virtual void SaveCurrentSurfaces ()=0
 Save the current collision surface binding.
 
virtual void RestoreCurrentSurfaces ()=0
 Restore the previous collision surface binding.
 
virtual void SetCurrentIsland (const IIsland *island, SInt32 slot)=0
 Bind a collision island to a specific slot. More...
 
virtual const IIslandGetCurrentIsland (SInt32 slot) const =0
 Get a collision island bound to a specific slot. More...
 
virtual void ClearCurrentIslands ()=0
 Clear the current collision island binding.
 
virtual void SaveCurrentIslands ()=0
 Save the current collision island binding.
 
virtual void RestoreCurrentIslands ()=0
 Restore the previous collision island binding.
 
virtual void SetCurrentTimeline (const ITimeline *timeline, UInt32 unit)=0
 Bind a timeline to a specific unit. More...
 
virtual const ITimelineGetCurrentTimeline (UInt32 unit) const =0
 Get a timeline bound to a specific unit. More...
 
virtual void ClearCurrentTimelines ()=0
 Clear the current timeline binding.
 
virtual void SaveCurrentTimelines ()=0
 Save the current timeline binding.
 
virtual void RestoreCurrentTimelines ()=0
 Restore the previous timeline binding.
 
virtual void SetCurrentSkeleton (const ISkeleton *skeleton)=0
 Set the current skeletom. More...
 
virtual const ISkeletonGetCurrentSkeleton () const =0
 Get the current skeleton. More...
 
virtual void ClearCurrentSkeleton ()=0
 Clear the current skeleton state.
 
virtual void SaveCurrentSkeleton ()=0
 Save the current skeleton state.
 
virtual void RestoreCurrentSkeleton ()=0
 Restore the previous skeleton state.
 
virtual void SetCurrentBone (const IBone *bone, UInt32 unit)=0
 Bind a bone to a specific unit. More...
 
virtual const IBoneGetCurrentBone (UInt32 unit) const =0
 Get a bone bound to a specific unit. More...
 
virtual void ClearCurrentBones ()=0
 Clear the current bone binding.
 
virtual void SaveCurrentBones ()=0
 Save the current bone binding.
 
virtual void RestoreCurrentBones ()=0
 Restore the previous bone binding.
 
virtual void PushWorldTransform (const Matrix &transform)=0
 Push a world transform matrix to the matrix stack. More...
 
virtual void PushLocalTransform (const Matrix &transform)=0
 Push a local transform matrix to the matrix stack. More...
 
virtual void PopTransform ()=0
 Pop the topmost transform matrix off the matrix stack.
 
virtual MatrixGetRecentWorldTransform () const =0
 Get the most recent world transform matrix from the matrix stack. More...
 
virtual void PushWorldScaleFactor (const Vector &scaleFactor)=0
 Push a world scale factor vector to the scale factor stack. More...
 
virtual void PushLocalScaleFactor (const Vector &scaleFactor)=0
 Push a local scale factor vector to the scale factor stack. More...
 
virtual void PopScaleFactor ()=0
 Pop the topmost scale factor vector off the scale factor stack.
 
virtual VectorGetRecentWorldScaleFactor () const =0
 Get the most recent world scale factor vector from the scale factor stack. More...
 
virtual void PushWorldDepthOrder (SInt32 depthOrder)=0
 Push a world depth order to the depth order stack. More...
 
virtual void PushLocalDepthOrder (SInt32 depthOrder)=0
 Push a local depth order to the depth order stack. More...
 
virtual void PopDepthOrder ()=0
 Pop the topmost depth order off the depth order stack.
 
virtual SInt32 GetRecentWorldDepthOrder () const =0
 Get the most recent world depth order from the depth order stack. More...
 
virtual void PushReference (IReference *node)=0
 Push a reference node to the reference stack. More...
 
virtual void PopReference ()=0
 Pop the topmost reference node off the reference stack.
 
virtual IReferenceGetRecentReference () const =0
 Get the most recent reference node from the reference stack. More...
 
virtual void PushNodeFlags (UInt32 nodeFlags)=0
 Push the current node flags to the node flag stack. More...
 
virtual void PopNodeFlags ()=0
 Pop the topmost node flags off the node flag stack.
 
virtual UInt32 GetRecentNodeFlags () const =0
 Get the most recent node flags from the node flag stack. More...
 
virtual void PushTargetBoundingVolume (IBoundingVolume *boundingVolume)=0
 Push the current target bounding volume to the BV stack. More...
 
virtual void PopTargetBoundingVolume ()=0
 Pop the topmost target bounding volume off the BV stack.
 
virtual IBoundingVolumeGetRecentTargetBoundingVolume () const =0
 Get the most recent target bounding volume from the BV stack. More...
 
virtual void PushNodeToFinishLogic (INode *node)=0
 Queue up a node to have its FinishLogic() method called after traversal. More...
 
virtual Bool ApplyCurrentPhysicsTransform () const =0
 Apply the current world transform in the physics simulator. More...
 
virtual Bool ApplyCurrentPhysicsIsland (SInt32 islandSlot)=0
 Apply the current physics island in the simulator. More...
 
virtual Bool ApplyCurrentPhysicsSurfaces (UInt32 numSlots, SInt32 *surfaceSlots) const =0
 Apply the current collision surfaces in the physics simulator. More...
 
virtual UInt32 ProcessCurrentBoundingVolume (IBoundingVolume *boundingVolume)=0
 Process the current node's bounding volume. More...
 
virtual Bool WasTraversedInCurrentLogicTick (UInt32 &tickCount) const =0
 Check if the current node was already traversed in the current logic tick. More...
 
virtual Array< INode * > & GetNodesToFinish ()=0
 Get a reference to the array of nodes that need their FinishLogic() method called. More...
 
virtual UInt32 SetTriggers (UInt32 mask)=0
 Replace the currently set traversal triggers. More...
 
virtual UInt32 AddTriggers (UInt32 mask)=0
 Add given triggers to the currently set traversal triggers. More...
 
virtual UInt32 RemoveTriggers (UInt32 mask)=0
 Remove given triggers from the currently set traversal triggers. More...
 
virtual UInt32 GetResponse (UInt32 mask) const =0
 Check the traversal response for a given set of triggers. More...
 

Detailed Description

The tracker used for logic processing traversals.

This interface represents a graph state tracker used during Graph::INode::ProcessLogic traversals, as well as the respective methods in Graph::IController, Graph::IGenericNodeTarget and Graph::IGenericResourceTarget.

Member Function Documentation

◆ Init()

virtual Bool Murl::Graph::IProcessLogicTracker::Init ( )
pure virtual

Initialize the tracker.

Called by the engine.

Returns
true if successful.

◆ DeInit()

virtual Bool Murl::Graph::IProcessLogicTracker::DeInit ( )
pure virtual

Deinitialize the tracker.

Called by the engine.

Returns
true if successful.

◆ GetTrackerInterface()

virtual ITracker* Murl::Graph::IProcessLogicTracker::GetTrackerInterface ( )
pure virtual

Get the tracker base class interface.

Returns
The tracker base class interface.

◆ BeginFrame()

virtual Bool Murl::Graph::IProcessLogicTracker::BeginFrame ( )
pure virtual

Begin a traversal frame.

Called by the engine.

Returns
true if successful.

◆ EndFrame()

virtual Bool Murl::Graph::IProcessLogicTracker::EndFrame ( )
pure virtual

End a traversal frame.

Called by the engine.

Returns
true if successful.

◆ BeginLogicTick()

virtual Bool Murl::Graph::IProcessLogicTracker::BeginLogicTick ( )
pure virtual

Begin a traversal logic tick.

Called by the engine.

Returns
true if successful.

◆ EndLogicTick()

virtual Bool Murl::Graph::IProcessLogicTracker::EndLogicTick ( )
pure virtual

End a traversal logic tick.

Called by the engine.

Returns
true if successful.

◆ GetCurrentLogicTickNumber()

virtual UInt32 Murl::Graph::IProcessLogicTracker::GetCurrentLogicTickNumber ( ) const
pure virtual

Get the current logic tick number.

Returns
The current logic tick number.

◆ GetCurrentLogicTickTime()

virtual Double Murl::Graph::IProcessLogicTracker::GetCurrentLogicTickTime ( ) const
pure virtual

Get the current absolute logic tick time.

Returns
The current logic tick time in seconds.

◆ GetCurrentLogicTickDuration()

virtual Double Murl::Graph::IProcessLogicTracker::GetCurrentLogicTickDuration ( ) const
pure virtual

Get the current logic tick duration.

Returns
The current logic tick duration in seconds.

◆ GetPhysicsSimulator()

virtual Physics::ISimulator* Murl::Graph::IProcessLogicTracker::GetPhysicsSimulator ( ) const
pure virtual

Get the physics simulator used to submit physics objects.

Returns
The physics simulator.

◆ GetResourceCollection()

virtual const Resource::ICollection* Murl::Graph::IProcessLogicTracker::GetResourceCollection ( ) const
pure virtual

Get the engine's main resource collection.

Returns
The resource collection.

◆ GetCurrentHandle()

virtual IHandle* Murl::Graph::IProcessLogicTracker::GetCurrentHandle ( )
pure virtual

Obtain a handle for the current node.

Returns
The current node handle.

◆ GetCurrentHandleInstance()

virtual IHandleInstance* Murl::Graph::IProcessLogicTracker::GetCurrentHandleInstance ( )
pure virtual

Obtain a handle instance for the current node.

Returns
The current node handle instance.

◆ SetCurrentAnchor()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentAnchor ( const IAnchor anchor,
SInt32  slot 
)
pure virtual

Bind a transform anchor to a specific slot.

Parameters
anchorThe anchor to bind.
slotThe slot to use, from 0 to IEnums::NUM_ANCHOR_SLOTS-1.

◆ GetCurrentAnchor()

virtual const IAnchor* Murl::Graph::IProcessLogicTracker::GetCurrentAnchor ( SInt32  slot) const
pure virtual

Get a transform anchor bound to a specific slot.

Parameters
slotThe slot to query, from 0 to IEnums::NUM_ANCHOR_SLOTS-1.
Returns
The anchor at the given slot, or null if none is bound.

◆ SetCurrentSurface()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentSurface ( const ISurface surface,
SInt32  slot 
)
pure virtual

Bind a collision surface to a specific slot.

Parameters
surfaceThe collision surface to bind.
slotThe slot to use, from 0 to IEnums::NUM_SURFACE_SLOTS-1.

◆ GetCurrentSurface()

virtual const ISurface* Murl::Graph::IProcessLogicTracker::GetCurrentSurface ( SInt32  slot) const
pure virtual

Get a collision surface bound to a specific slot.

Parameters
slotThe slot to query, from 0 to IEnums::NUM_SURFACE_SLOTS-1.
Returns
The collision surface at the given slot, or null if none is bound.

◆ SetCurrentIsland()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentIsland ( const IIsland island,
SInt32  slot 
)
pure virtual

Bind a collision island to a specific slot.

Parameters
islandThe collision island to bind.
slotThe slot to use, from 0 to IEnums::NUM_ISLAND_SLOTS-1.

◆ GetCurrentIsland()

virtual const IIsland* Murl::Graph::IProcessLogicTracker::GetCurrentIsland ( SInt32  slot) const
pure virtual

Get a collision island bound to a specific slot.

Parameters
slotThe slot to query, from 0 to IEnums::NUM_ISLAND_SLOTS-1.
Returns
The collision island at the given slot, or null if none is bound.

◆ SetCurrentTimeline()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentTimeline ( const ITimeline timeline,
UInt32  unit 
)
pure virtual

Bind a timeline to a specific unit.

Parameters
timelineThe timeline to bind.
unitThe unit to use, from 0 to IEnums::NUM_TIMELINE_UNITS-1.

◆ GetCurrentTimeline()

virtual const ITimeline* Murl::Graph::IProcessLogicTracker::GetCurrentTimeline ( UInt32  unit) const
pure virtual

Get a timeline bound to a specific unit.

Parameters
unitThe unit to query, from 0 to IEnums::NUM_TIMELINE_UNITS-1.
Returns
The timeline at the given unit, or null if none is bound.

◆ SetCurrentSkeleton()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentSkeleton ( const ISkeleton skeleton)
pure virtual

Set the current skeletom.

Parameters
skeletonThe skeleton.

◆ GetCurrentSkeleton()

virtual const ISkeleton* Murl::Graph::IProcessLogicTracker::GetCurrentSkeleton ( ) const
pure virtual

Get the current skeleton.

Returns
The skeleton.

◆ SetCurrentBone()

virtual void Murl::Graph::IProcessLogicTracker::SetCurrentBone ( const IBone bone,
UInt32  unit 
)
pure virtual

Bind a bone to a specific unit.

Parameters
boneThe bone to bind.
unitThe unit to use, from 0 to IEnums::NUM_BONE_UNITS-1.

◆ GetCurrentBone()

virtual const IBone* Murl::Graph::IProcessLogicTracker::GetCurrentBone ( UInt32  unit) const
pure virtual

Get a bone bound to a specific unit.

Parameters
unitThe unit to query, from 0 to IEnums::NUM_BONE_UNITS-1.
Returns
The bone at the given unit, or null if none is bound.

◆ PushWorldTransform()

virtual void Murl::Graph::IProcessLogicTracker::PushWorldTransform ( const Matrix transform)
pure virtual

Push a world transform matrix to the matrix stack.

Parameters
transformThe world transform.

◆ PushLocalTransform()

virtual void Murl::Graph::IProcessLogicTracker::PushLocalTransform ( const Matrix transform)
pure virtual

Push a local transform matrix to the matrix stack.

Parameters
transformThe local transform.

◆ GetRecentWorldTransform()

virtual Matrix& Murl::Graph::IProcessLogicTracker::GetRecentWorldTransform ( ) const
pure virtual

Get the most recent world transform matrix from the matrix stack.

Returns
The (possibly calculated) world transform.

◆ PushWorldScaleFactor()

virtual void Murl::Graph::IProcessLogicTracker::PushWorldScaleFactor ( const Vector scaleFactor)
pure virtual

Push a world scale factor vector to the scale factor stack.

Parameters
scaleFactorThe world scale factor.

◆ PushLocalScaleFactor()

virtual void Murl::Graph::IProcessLogicTracker::PushLocalScaleFactor ( const Vector scaleFactor)
pure virtual

Push a local scale factor vector to the scale factor stack.

Parameters
scaleFactorThe local scale factor.

◆ GetRecentWorldScaleFactor()

virtual Vector& Murl::Graph::IProcessLogicTracker::GetRecentWorldScaleFactor ( ) const
pure virtual

Get the most recent world scale factor vector from the scale factor stack.

Returns
The (possibly calculated) world scale factor.

◆ PushWorldDepthOrder()

virtual void Murl::Graph::IProcessLogicTracker::PushWorldDepthOrder ( SInt32  depthOrder)
pure virtual

Push a world depth order to the depth order stack.

Parameters
depthOrderThe world depth order.

◆ PushLocalDepthOrder()

virtual void Murl::Graph::IProcessLogicTracker::PushLocalDepthOrder ( SInt32  depthOrder)
pure virtual

Push a local depth order to the depth order stack.

Parameters
depthOrderThe local depth order.

◆ GetRecentWorldDepthOrder()

virtual SInt32 Murl::Graph::IProcessLogicTracker::GetRecentWorldDepthOrder ( ) const
pure virtual

Get the most recent world depth order from the depth order stack.

Returns
The (possibly calculated) world depth order.

◆ PushReference()

virtual void Murl::Graph::IProcessLogicTracker::PushReference ( IReference node)
pure virtual

Push a reference node to the reference stack.

Parameters
nodeThe node to push.

◆ GetRecentReference()

virtual IReference* Murl::Graph::IProcessLogicTracker::GetRecentReference ( ) const
pure virtual

Get the most recent reference node from the reference stack.

Returns
The reference node.

◆ PushNodeFlags()

virtual void Murl::Graph::IProcessLogicTracker::PushNodeFlags ( UInt32  nodeFlags)
pure virtual

Push the current node flags to the node flag stack.

Parameters
nodeFlagsThe node flags to push.

◆ GetRecentNodeFlags()

virtual UInt32 Murl::Graph::IProcessLogicTracker::GetRecentNodeFlags ( ) const
pure virtual

Get the most recent node flags from the node flag stack.

Returns
The node flags.

◆ PushTargetBoundingVolume()

virtual void Murl::Graph::IProcessLogicTracker::PushTargetBoundingVolume ( IBoundingVolume boundingVolume)
pure virtual

Push the current target bounding volume to the BV stack.

Parameters
boundingVolumeThe bounding volume to push.

◆ GetRecentTargetBoundingVolume()

virtual IBoundingVolume* Murl::Graph::IProcessLogicTracker::GetRecentTargetBoundingVolume ( ) const
pure virtual

Get the most recent target bounding volume from the BV stack.

Returns
The bounding volume.

◆ PushNodeToFinishLogic()

virtual void Murl::Graph::IProcessLogicTracker::PushNodeToFinishLogic ( INode node)
pure virtual

Queue up a node to have its FinishLogic() method called after traversal.

Parameters
nodeThe node to queue up.

◆ ApplyCurrentPhysicsTransform()

virtual Bool Murl::Graph::IProcessLogicTracker::ApplyCurrentPhysicsTransform ( ) const
pure virtual

Apply the current world transform in the physics simulator.

Returns
true if successful.

◆ ApplyCurrentPhysicsIsland()

virtual Bool Murl::Graph::IProcessLogicTracker::ApplyCurrentPhysicsIsland ( SInt32  islandSlot)
pure virtual

Apply the current physics island in the simulator.

Parameters
islandSlotThe slot of the bound island to apply.
Returns
true if an island is present at the given slot, false otherwise.

◆ ApplyCurrentPhysicsSurfaces()

virtual Bool Murl::Graph::IProcessLogicTracker::ApplyCurrentPhysicsSurfaces ( UInt32  numSlots,
SInt32 surfaceSlots 
) const
pure virtual

Apply the current collision surfaces in the physics simulator.

Parameters
numSlotsThe number of surface slot indices to apply.
surfaceSlotsAn array of slot indices to apply.
Returns
true if successful.

◆ ProcessCurrentBoundingVolume()

virtual UInt32 Murl::Graph::IProcessLogicTracker::ProcessCurrentBoundingVolume ( IBoundingVolume boundingVolume)
pure virtual

Process the current node's bounding volume.

Parameters
boundingVolumeThe node's bounding volume.
Returns
The number of bounding volumes processed;

◆ WasTraversedInCurrentLogicTick()

virtual Bool Murl::Graph::IProcessLogicTracker::WasTraversedInCurrentLogicTick ( UInt32 tickCount) const
pure virtual

Check if the current node was already traversed in the current logic tick.

Parameters
tickCountThe tick count variable to update.
Returns
true if the node was previously traversed within the current tick.

◆ GetNodesToFinish()

virtual Array<INode*>& Murl::Graph::IProcessLogicTracker::GetNodesToFinish ( )
pure virtual

Get a reference to the array of nodes that need their FinishLogic() method called.

Returns
The array of nodes to finish.

◆ SetTriggers()

virtual UInt32 Murl::Graph::IProcessLogicTracker::SetTriggers ( UInt32  mask)
pure virtual

Replace the currently set traversal triggers.

Parameters
maskA bit mask of individual triggers, from the Graph::INode::ProcessLogicTriggers enumeration.
Returns
The previous triggers' bit mask.

◆ AddTriggers()

virtual UInt32 Murl::Graph::IProcessLogicTracker::AddTriggers ( UInt32  mask)
pure virtual

Add given triggers to the currently set traversal triggers.

Parameters
maskA bit mask of individual triggers, from the Graph::INode::ProcessLogicTriggers enumeration.
Returns
The previous triggers' bit mask.

◆ RemoveTriggers()

virtual UInt32 Murl::Graph::IProcessLogicTracker::RemoveTriggers ( UInt32  mask)
pure virtual

Remove given triggers from the currently set traversal triggers.

Parameters
maskA bit mask of individual triggers, from the Graph::INode::ProcessLogicTriggers enumeration.
Returns
The previous triggers' bit mask.

◆ GetResponse()

virtual UInt32 Murl::Graph::IProcessLogicTracker::GetResponse ( UInt32  mask) const
pure virtual

Check the traversal response for a given set of triggers.

Parameters
maskA bit mask of individual triggers to query for, from the Graph::INode::ProcessLogicTriggers enumeration.
Returns
A bit mask of affected triggers.

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


Copyright © 2011-2024 Spraylight GmbH.