VR-Engage  2.2
Loading...
Searching...
No Matches
makVre::DtAttributeChangeCallback Class Reference

Detailed Description

This class provides a mechanism for registering callbacks that are triggered when attributes are changed. It maintains a list of connected attributes and manages the lifecycle of these connections.

This is a type-agnostic callback. It passes to the callback function an un-typed DtAttributeHandle representing the attribute which was changed. If includeChildren is set false (default), then this will be the same attribute to which the callback was connected. If includeChildren is set true, the changed attribute may also be any child of the connected attribute.

#include <attributeCallback.h>

Inheritance diagram for makVre::DtAttributeChangeCallback:
[legend]

Public Member Functions

template<class OBJECT_T>
 DtAttributeChangeCallback (OBJECT_T *object, void(OBJECT_T::*method)(const DtAttributeHandle &))
 
 DtAttributeChangeCallback (void(*func)(const DtAttributeHandle &))
 
virtual ~DtAttributeChangeCallback () override
 
virtual void includeChildren (bool on)
 
virtual bool includesChildren () const
 
- Public Member Functions inherited from makVre::DtAttributeCallbackBase
 DtAttributeCallbackBase ()
 
virtual ~DtAttributeCallbackBase ()
 
virtual void connect (DtAttributeHandle attribute)
 
virtual void disconnect (DtAttributeHandle attribute)
 
virtual void disconnectAll ()
 
virtual bool isConnected (const DtAttributeHandle &attribute) const
 
virtual bool hasConnection () const
 
virtual unsigned int threadId () const
 
- Public Member Functions inherited from makVre::DtDelegate< void, const DtAttributeHandle & >
 DtDelegate ()=default
 
 DtDelegate (void(*func)(Args...))
 
 DtDelegate (T *object, Method method)
 
 DtDelegate (const T *object, Method method)
 
 DtDelegate (Callable &&callable)
 
 DtDelegate (const DtDelegate &other)
 
 DtDelegate (DtDelegate &&other) noexcept
 
 ~DtDelegate ()=default
 
DtDelegateoperator= (const DtDelegate &other)
 
DtDelegateoperator= (DtDelegate &&other) noexcept
 
void reset () noexcept
 
void operator() (CallArgs &&... args) const
 
void operator() (CallArgs &&... args) const
 
 operator bool () const noexcept
 
std::size_t hash () const noexcept
 
bool operator== (const DtDelegate &rhs) const noexcept
 
bool operator!= (const DtDelegate &rhs) const noexcept
 
DelegateType getType () const noexcept
 

Protected Member Functions

virtual void invoke (const DtAttributeHandle &changedAttribute) const override
 
- Protected Member Functions inherited from makVre::DtDelegate< void, const DtAttributeHandle & >
void computeHash () noexcept
 
void resetHash () const noexcept
 

Protected Attributes

bool myIncludeChildren = false
 
- Protected Attributes inherited from makVre::DtAttributeCallbackBase
AttributeList myConnections
 
unsigned int myThreadId
 
- Protected Attributes inherited from makVre::DtDelegate< void, const DtAttributeHandle & >
std::function< void(Args...)> myFunction
 
DelegateType myType
 
std::size_t myObjectHash
 
std::size_t myStaticFuncHash
 
std::size_t myMethodHash
 
std::size_t myLambdaHash
 
std::size_t myHash
 
bool myHashComputed
 

Additional Inherited Members

- Public Types inherited from makVre::DtDelegate< void, const DtAttributeHandle & >
enum  DelegateType
 
- Static Public Member Functions inherited from makVre::DtDelegate< void, const DtAttributeHandle & >
static std::size_t hashMethodPtr (const Method &method) noexcept
 
static std::size_t hashPtr (PtrType ptr) noexcept
 
static std::size_t hashLambda (const Callable &callable) noexcept
 
- Protected Types inherited from makVre::DtAttributeCallbackBase
using AttributeList = std::list<DtAttributeHandle>
 

Constructor & Destructor Documentation

◆ DtAttributeChangeCallback() [1/2]

template<class OBJECT_T>
makVre::DtAttributeChangeCallback::DtAttributeChangeCallback ( OBJECT_T * object,
void(OBJECT_T::* method )(const DtAttributeHandle &) )

Constructor for attribute callbacks using member functions.

Template Parameters
OBJECT_TType of the object containing the method
Parameters
objectPointer to the object containing the method
methodMethod pointer to be called when an attribute changes

◆ DtAttributeChangeCallback() [2/2]

makVre::DtAttributeChangeCallback::DtAttributeChangeCallback ( void(* func )(const DtAttributeHandle &))

Constructor for attribute callbacks using static function.

Parameters
funcPointer to function to be called when attribute changes

◆ ~DtAttributeChangeCallback()

virtual makVre::DtAttributeChangeCallback::~DtAttributeChangeCallback ( )
overridevirtual

Virtual destructor.

Automatically disconnects from all connected attributes

Member Function Documentation

◆ includeChildren()

virtual void makVre::DtAttributeChangeCallback::includeChildren ( bool on)
virtual

Set whether this callback should also be invoked for any change to any child attribute.

Parameters
onSet true for callbacks on change to any child. Set false for callbacks only to the connected attribute. Default is false.

Check current state with includesChildren()

◆ includesChildren()

virtual bool makVre::DtAttributeChangeCallback::includesChildren ( ) const
virtual

Get whether this callback is set to trigger on changes to child attributes.

Set state with includeChildren(bool on)

◆ invoke()

virtual void makVre::DtAttributeChangeCallback::invoke ( const DtAttributeHandle & changedAttribute) const
overrideprotectedvirtual

Member Data Documentation

◆ myIncludeChildren

bool makVre::DtAttributeChangeCallback::myIncludeChildren = false
protected

Defines whether this callback is also invoked for any changes to children of the connected attribute.


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