AGX Dynamics 2.42.1.1
Loading...
Searching...
No Matches
agxSensor::SystemNode Class Referenceabstract

System node is a separate step/operation in an execution tree representing a sensor (or such) in a sensor simulation environment. More...

#include <SystemNode.h>

+ Inheritance diagram for agxSensor::SystemNode:

Classes

struct  CallbackData
 

Public Member Functions

 SystemNode (const SystemNode &)=delete
 Disallow direct copying of nodes.
 
virtual ~SystemNode ()=default
 
bool addChild (SystemNode *child)
 Add unique child to this node.
 
virtual bool addNotification ()
 Called when this system node has been added to a sensor environment.
 
bool appendChild (SystemNode *child)
 Append child to vector of children, silently.
 
virtual void cleanup ()=0
 The sensor environment is being put down, clean everything.
 
virtual void complete ()
 Complete the execution of this system, finishing the integration forward in time.
 
bool detachChild (SystemNode *child)
 Detach/erase child from vector of children, silently.
 
virtual bool eraseAndConnect ()
 Erase this node from the tree and connect its children to the current parent of this node.
 
virtual void execute (const CallbackData &data)
 Execute this system, integrating it data.dt forward in time.
 
template<typename T >
T * findChild (bool recurse=true) const
 Find child of given type.
 
template<typename PredicateT >
SystemNodefindChild (PredicateT pred, bool recurse=true) const
 Find child given predicate pred.
 
template<typename T >
T * findParent () const
 
template<typename PredicateT >
SystemNodefindParent (PredicateT pred) const
 Find parent given predicate.
 
template<typename T >
T * getChild () const
 Searches children for a node of given type.
 
SystemNodegetChild (size_t index) const
 
bool getEnable () const
 
EnvironmentgetEnvironment () const
 
const agx::NamegetName () const
 
size_t getNumChildren () const
 
SystemNodegetParent () const
 
SystemNodegetRoot () const
 
bool hasChild (const SystemNode *child, bool recurse=true) const
 
virtual bool insertParent (SystemNode &parent)
 Inserts new parent to this node.
 
virtual bool onAdd (agx::Referenced &instance)
 Called when an object has been added to the sensor environment.
 
virtual void onChildAdded (SystemNode &child)
 Called when child has been added to this parent.
 
virtual void onChildRemoved (SystemNode &child)
 Called when child has been removed from this parent.
 
virtual bool onRemove (agx::Referenced &instance)
 Called when an object has been removed from the sensor environment.
 
bool removeChild (SystemNode *child)
 Remove child from this node.
 
virtual void removeNotification ()
 Called when this system node is being removed from a sensor environment.
 
virtual void result (const CallbackData &data)
 If necessary assemble, and fetch results related to this system node after a step by data.dt has been completed.
 
void setEnable (bool enable)
 Enable/disable this node.
 
void setName (const agx::Name &name)
 Assign name to this node.
 
virtual void synchronize (const CallbackData &data)
 Synchronization from the main thread.
 
virtual void synchronizeGraphics (const agxRender::RenderManager &renderManager)
 At the very end of a step, synchronize any graphics related aspects of the system node.
 
template<typename VisitorT >
SystemNodevisitBf (VisitorT visitor) const
 Visit the tree from, including, this node until callback returns true - using breadth first traversal.
 
template<typename VisitorT >
void visitChildren (VisitorT visitor, bool recurse=true) const
 Visit all children with func as void( const SystemNode& child ).
 
template<typename VisitorT >
SystemNodevisitChildrenBf (VisitorT visitor) const
 Visit the tree from the children of this node until callback returns true - using breadth first traversal.
 
template<typename VisitorT >
SystemNodevisitChildrenDf (VisitorT visitor) const
 Visit the tree from the children of this node until callback returns true - using depth first traversal.
 
template<typename T , typename VisitorT >
void visitChildrenOfType (VisitorT visitor, bool recurse=true) const
 Visit all children with func as void( const T& child ).
 
template<typename VisitorT >
SystemNodevisitDf (VisitorT visitor) const
 Visit the tree from, including, this node until callback returns true - using depth first traversal.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Additional Inherited Members

- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

System node is a separate step/operation in an execution tree representing a sensor (or such) in a sensor simulation environment.

Definition at line 43 of file SystemNode.h.

Constructor & Destructor Documentation

◆ SystemNode()

agxSensor::SystemNode::SystemNode ( const SystemNode )
delete

Disallow direct copying of nodes.

◆ ~SystemNode()

virtual agxSensor::SystemNode::~SystemNode ( )
virtualdefault

Member Function Documentation

◆ addChild()

bool agxSensor::SystemNode::addChild ( SystemNode child)

Add unique child to this node.

Parameters
child- child to add
Returns
true if added successfully, false if nullptr or already a child

◆ addNotification()

virtual bool agxSensor::SystemNode::addNotification ( )
virtual

Called when this system node has been added to a sensor environment.

Returns
true if successful and is ready to receive runtime calls

Reimplemented in agxSensor::RtSystemNode.

◆ appendChild()

bool agxSensor::SystemNode::appendChild ( SystemNode child)

Append child to vector of children, silently.

This method will just check so that child hasn't already been added and set its parent (and push_back in vector) if not.

Parameters
child- child to add
Returns
true if added, false if nullptr or already added

◆ cleanup()

virtual void agxSensor::SystemNode::cleanup ( )
pure virtual

The sensor environment is being put down, clean everything.

Implemented in agxSensor::RtSystemNode, and agxSensor::SensorGroupStepStride.

◆ complete()

virtual void agxSensor::SystemNode::complete ( )
virtual

Complete the execution of this system, finishing the integration forward in time.

This call is made from a thread separate from the main/simulation thread so it's not valid to read data from the objects being simulated.

◆ detachChild()

bool agxSensor::SystemNode::detachChild ( SystemNode child)

Detach/erase child from vector of children, silently.

This method will just check so that child is a child and has this node as parent.

Parameters
child- child to erase
Returns
true if erased, false if nullptr or not child to this node

◆ eraseAndConnect()

virtual bool agxSensor::SystemNode::eraseAndConnect ( )
virtual

Erase this node from the tree and connect its children to the current parent of this node.

Fails if this node doesn't have any children.

Note
This node may be destructed if no references are held to this node.
Returns
true if successfully erased

◆ execute()

virtual void agxSensor::SystemNode::execute ( const CallbackData data)
virtual

Execute this system, integrating it data.dt forward in time.

This call is made from a thread separate from the main/simulation thread so it's not valid to read data from the objects being simulated.

Parameters
data- runtime step data

◆ findChild() [1/2]

template<typename T >
T * agxSensor::SystemNode::findChild ( bool  recurse = true) const

Find child of given type.

If recurse is true, the search continues to the leafs.

Parameters
recurse- true to continue search to the leafs, false to only search this parents children
Returns
first child of given type, nullptr if not found

Definition at line 524 of file SystemNode.h.

◆ findChild() [2/2]

template<typename PredicateT >
SystemNode * agxSensor::SystemNode::findChild ( PredicateT  pred,
bool  recurse = true 
) const

Find child given predicate pred.

If recurse is true, the search continues to the leafs.

Parameters
pred- predicate bool( const SystemNode& child ) returning true if a child is a match, otherwise false
recurse- true to continue search to the leafs, false to only search this parents children
Returns
child matching pred, otherwise nullptr for no match

Definition at line 502 of file SystemNode.h.

◆ findParent() [1/2]

template<typename T >
T * agxSensor::SystemNode::findParent
Returns
first parent of given type, nullptr if not found

Definition at line 561 of file SystemNode.h.

◆ findParent() [2/2]

template<typename PredicateT >
SystemNode * agxSensor::SystemNode::findParent ( PredicateT  pred) const

Find parent given predicate.

Parameters
pred- predicate bool( const SystemNode& parent ) returning true if parent is a match, otherwise false
Returns
parent matching pred, otherwise nullptr for no match

Definition at line 551 of file SystemNode.h.

◆ getChild() [1/2]

template<typename T >
T * agxSensor::SystemNode::getChild

Searches children for a node of given type.

Note that it's only the children of which this node is parent that is searched.

Returns
child with type T if found, otherwise nullptr
See also
findChild

Definition at line 496 of file SystemNode.h.

◆ getChild() [2/2]

SystemNode * agxSensor::SystemNode::getChild ( size_t  index) const
Parameters
index- index of child
Returns
child with index index

◆ getEnable()

bool agxSensor::SystemNode::getEnable ( ) const
Returns
true if this node is enabled, false if disabled

◆ getEnvironment()

Environment * agxSensor::SystemNode::getEnvironment ( ) const
Returns
the sensor environment this node is part of

◆ getName()

const agx::Name & agxSensor::SystemNode::getName ( ) const
Returns
the name of this node

◆ getNumChildren()

size_t agxSensor::SystemNode::getNumChildren ( ) const
Returns
the number of children of this node

◆ getParent()

SystemNode * agxSensor::SystemNode::getParent ( ) const
Returns
parent of this node, nullptr if this is the root node

◆ getRoot()

SystemNode * agxSensor::SystemNode::getRoot ( ) const
Returns
the node with nullptr parent

◆ hasChild()

bool agxSensor::SystemNode::hasChild ( const SystemNode child,
bool  recurse = true 
) const
Parameters
child- possible child node
recurse- true to continue search to the leafs, false to only search this parents children
Returns
the if child is child to this node, otherwise false

◆ insertParent()

virtual bool agxSensor::SystemNode::insertParent ( SystemNode parent)
virtual

Inserts new parent to this node.

The previous parent to this node will get parent as child.

Parameters
parent- new parent to this node
Returns
true if successful, false if initialization of RtNode of parent failed

◆ onAdd()

virtual bool agxSensor::SystemNode::onAdd ( agx::Referenced instance)
virtual

Called when an object has been added to the sensor environment.

Parameters
instance- object that was added to the sensor environment
Returns
true if the object is consumed by the system, false if this system node doesn't handle/support this object.

◆ onChildAdded()

virtual void agxSensor::SystemNode::onChildAdded ( SystemNode child)
virtual

Called when child has been added to this parent.

Parameters
child- child that has been added

Reimplemented in agxSensor::RtSystemNode.

◆ onChildRemoved()

virtual void agxSensor::SystemNode::onChildRemoved ( SystemNode child)
virtual

Called when child has been removed from this parent.

Parameters
child- child that has been removed

Reimplemented in agxSensor::RtSystemNode.

◆ onRemove()

virtual bool agxSensor::SystemNode::onRemove ( agx::Referenced instance)
virtual

Called when an object has been removed from the sensor environment.

Parameters
instance- object that was removed from the sensor environment
Returns
true if the object is consumed by the system, false if this system node doesn't handle/support this object.

◆ removeChild()

bool agxSensor::SystemNode::removeChild ( SystemNode child)

Remove child from this node.

Parameters
child- child to remove
Returns
true if removed successfully, false if nullptr or not child to this node

◆ removeNotification()

virtual void agxSensor::SystemNode::removeNotification ( )
virtual

Called when this system node is being removed from a sensor environment.

◆ result()

virtual void agxSensor::SystemNode::result ( const CallbackData data)
virtual

If necessary assemble, and fetch results related to this system node after a step by data.dt has been completed.

This call is made from the main thread, post-step, and thus allows the latest possible data from objects/simulation to be read and processed.

Parameters
data- runtime step data

◆ setEnable()

void agxSensor::SystemNode::setEnable ( bool  enable)

Enable/disable this node.

Default enabled.

Parameters
enable- true (default) to enable, false to disable this node

◆ setName()

void agxSensor::SystemNode::setName ( const agx::Name name)

Assign name to this node.

Parameters
name- new name of this node

◆ synchronize()

virtual void agxSensor::SystemNode::synchronize ( const CallbackData data)
virtual

Synchronization from the main thread.

Read data from objects/simulation should be done here before execute/stepping is made separate from the main thread.

Parameters
data- runtime step data

◆ synchronizeGraphics()

virtual void agxSensor::SystemNode::synchronizeGraphics ( const agxRender::RenderManager renderManager)
virtual

At the very end of a step, synchronize any graphics related aspects of the system node.

Parameters
renderManager- simulation render manager

◆ visitBf()

template<typename VisitorT >
SystemNode * agxSensor::SystemNode::visitBf ( VisitorT  visitor) const

Visit the tree from, including, this node until callback returns true - using breadth first traversal.

Template Parameters
VisitorT- implicit visitor type bool(SystemNode&) or similar
Parameters
visitor- node visitor returning true if match, return false to continue to the next node
Returns
node when visitor returns true, nullptr if no match

Definition at line 427 of file SystemNode.h.

◆ visitChildren()

template<typename VisitorT >
void agxSensor::SystemNode::visitChildren ( VisitorT  visitor,
bool  recurse = true 
) const

Visit all children with func as void( const SystemNode& child ).

Parameters
visitor- function to call for each child, void( SystemNode& child )
recurse- true to continue the traverse to the leafs, false to only traverse this parents children

Definition at line 535 of file SystemNode.h.

◆ visitChildrenBf()

template<typename VisitorT >
SystemNode * agxSensor::SystemNode::visitChildrenBf ( VisitorT  visitor) const

Visit the tree from the children of this node until callback returns true - using breadth first traversal.

Template Parameters
VisitorT- implicit visitor type bool(SystemNode&) or similar
Parameters
visitor- node visitor returning true if match, return false to continue to the next node
Returns
node when visitor returns true, nullptr if no match

Definition at line 437 of file SystemNode.h.

◆ visitChildrenDf()

template<typename VisitorT >
SystemNode * agxSensor::SystemNode::visitChildrenDf ( VisitorT  visitor) const

Visit the tree from the children of this node until callback returns true - using depth first traversal.

Template Parameters
VisitorT- implicit visitor type bool(SystemNode&) or similar
Parameters
visitor- node visitor returning true if match, return false to continue to the next node
Returns
node when visitor returns true, nullptr if no match

Definition at line 471 of file SystemNode.h.

◆ visitChildrenOfType()

template<typename T , typename VisitorT >
void agxSensor::SystemNode::visitChildrenOfType ( VisitorT  visitor,
bool  recurse = true 
) const

Visit all children with func as void( const T& child ).

Parameters
visitor- function to call for each child, void( T& child )
recurse- true to continue the traverse to the leafs, false to only traverse this parents children

Definition at line 571 of file SystemNode.h.

◆ visitDf()

template<typename VisitorT >
SystemNode * agxSensor::SystemNode::visitDf ( VisitorT  visitor) const

Visit the tree from, including, this node until callback returns true - using depth first traversal.

Template Parameters
VisitorT- implicit visitor type bool(SystemNode&) or similar
Parameters
visitor- node visitor returning true if match, return false to continue to the next node
Returns
node when visitor returns true, nullptr if no match

Definition at line 461 of file SystemNode.h.


The documentation for this class was generated from the following file: