Controlling the Graph State

When a node is created using dabfg::register_node(), a handle object is returned that must be used to control the lifetime of this node. As soon as the handle is destroyed, the node is removed from the graph.

The recommended approach for managing handles is to use feature specific daECS entities. The idea is to encapsulate all of the “settings” required for creating a node for a feature as well as a handle for that node inside a single entity and automatically re-create the node when the settings change using ECS tracking capabilities. When the feature is disabled, the entity is destroyed and the node is removed from the graph automagically.

Note also that the handles are generational, so it is safe to simply assign a new node handle to a component without explicitly resetting the old node handle.

class NodeHandle

Holds ownership over a node’s lifetime. As soon as a handle to a node destroyed, the node is unregistered, but only if it was not re-registered since the time that this handle was acquired.

Note that this is a move-only type.

Public Functions

NodeHandle() = default

Constructs an invalid handle.

inline NodeHandle(NodeHandle &&other)

Move constructor.

inline NodeHandle &operator=(NodeHandle &&other)

Move assignment operator.

inline bool valid() const

Returns true if the handle is valid.

inline explicit operator bool() const

Returns true if the handle is valid.