OMK::TriggerEmitterExtensionT< T, ModelType > Class Template Reference
[User inputs]

Extension to emit a valued event on a trigger front. More...

#include <OMKTriggerEmitterExtension.h>

Inheritance diagram for OMK::TriggerEmitterExtensionT< T, ModelType >:

Inheritance graph
[legend]
Collaboration diagram for OMK::TriggerEmitterExtensionT< T, ModelType >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~TriggerEmitterExtensionT ()

Static Public Attributes

static Name OMK_CLASS_ID
 The id for the class in a configuration.
static const bool REGISTERED_IN_EXTENSION_FACTORY
 The registration in the extension factory.

Protected Member Functions

 TriggerEmitterExtensionT (ExtensibleSimulatedObject *owner, const Name &id, bool registerExtension)
 Constructor.
virtual bool loadExtensionParameters (const ConfigurationParameterDescriptor *node)
 Configuration parameters loader of Extension.
virtual void postComputeParameters ()
 The overwritten method.

Protected Attributes

IAttributeBaseT< bool > * _trigger

Friends

class OMK::ExtensionCreatorT< TriggerEmitterExtensionT< T, ModelType > >
 The creator is a friend.

Detailed Description

template<typename T, typename ModelType>
class OMK::TriggerEmitterExtensionT< T, ModelType >

Extension to emit a valued event on a trigger front.

Date:
2007-11-14
Author:
Benoît Chanclou
Defines an extension which can be used with any object. This extension emits a valued event with a defined id when a trigger comes to true. Values are stored in a vector, each time the front comes the next value is emitted, at the end of the vector, the index restarts at the beginning. It can set the value of an attribute.

The creation is done dynamically through the following configuration:

visualisation
{
  Class OgreVis
  ...
  Extensions
  {
    plus
    {
      
            Class Trigger...Emitter // ... must be replace according to the used type
      EventName eventId // The id of the event or signal
      Values[ value1 value2 ... ] // the values for the signal or event
      Signal on/off // by default is set to on 
                    // on: the extension fire a signal, off: the extension emit a event
      Listeners [ obj1 obj2 ... ] // the list of the object which listen
      TriggerId "TheTriggerAttributeId" // the id of the boolean attribute which is the trigger
    }
    ...
  }
}
or the following one specially designed to set a attribute a target is reached. The example is a point which moves each time the P is pressed, useful to move a visual object, a camera or a target.
movingPoint
{
  Class SimplePoint
  Extensions
  {
    togglePosition
    {
      Class TriggerTransformEmitter
      AttributeId Position // The id of the attribute to set
      Values[ [[0 0 1]] [[1 0 0]] [[0 1 0]] ] // the values for the signal or event
      TriggerId "triggerReached" // the id of the boolean attribute which is the trigger
    }
    trigger // This extension define the boolean attribute "triggerReached"
    {
      Class Trigger
      Thresold 3.0
      ConnectTarget ["TheTarget" "Position"]
    }
  }
}

If you use this template class for your own data type you must register your extension with

namespace OMK
{
  namespace Inp
  {
typedef TriggerEmitterExtensionT< MyType, OMK::Type::SimpleTypeT< MyType > > TriggerMyTypeEmitterExtension ;
  }
}
REGISTER_TEMPLATE_EXTENSION_FACTORY( OMK::Inp::TriggerMyTypeEmitterExtension, "TriggerMyTypeEmitter" ) ;

Definition at line 133 of file OMKTriggerEmitterExtension.h.


Constructor & Destructor Documentation

template<typename T, typename ModelType>
OMK::TriggerEmitterExtensionT< T, ModelType >::TriggerEmitterExtensionT ( ExtensibleSimulatedObject owner,
const Name id,
bool  registerExtension 
) [inline, protected]

Constructor.

It is protected, because it is only called by the friend creator.

Definition at line 147 of file OMKTriggerEmitterExtension.h.

00148   : ExtensionT< OMK::ExtensibleSimulatedObject >( owner, id, registerExtension ),
00149     ValuedEventSignalEmitterUtilT< T, ModelType >(),
00150     _trigger( 0 )
00151   {
00152   }

template<typename T, typename ModelType>
virtual OMK::TriggerEmitterExtensionT< T, ModelType >::~TriggerEmitterExtensionT (  )  [inline, virtual]

Definition at line 155 of file OMKTriggerEmitterExtension.h.

00155 {}


Member Function Documentation

template<typename T, typename ModelType>
virtual bool OMK::TriggerEmitterExtensionT< T, ModelType >::loadExtensionParameters ( const ConfigurationParameterDescriptor node  )  [inline, protected, virtual]

Configuration parameters loader of Extension.

Parameters:
[in] node the root node of the configuration parameter, null if no node defined for the extension.
Returns:
should return true if all the parameters are well retrieved.
Overwrite this method to initialise the extension. This method allows the extension to get parameters of its own field.
Be careful, loadObjectParameters method is called before this method.
See How to configure an extension ? for details.

Reimplemented from OMK::Extension.

Definition at line 159 of file OMKTriggerEmitterExtension.h.

References OMK::ExtensionT< OMK::ExtensibleSimulatedObject >::_owner, OMK::TriggerEmitterExtensionT< T, ModelType >::_trigger, OMK::ParametersAccessor::get(), OMK::ExtensibleSimulatedObject::getBaseAttribute(), and OMK::ValuedEventSignalEmitterUtilT< T, ModelType >::loadParametersUtil().

00160   {
00161     bool ok = ExtensionT< OMK::ExtensibleSimulatedObject >::loadExtensionParameters( node ) 
00162         && this->loadParametersUtil( _owner, node ) ;
00163     Name triggerId ;
00164     ok = ok && ParametersAccessor::get( node, "TriggerId", triggerId, _owner ) ;
00165     _trigger = _owner->getBaseAttribute< bool >( triggerId ) ;
00166     ok = ok && _trigger != 0 ;
00167     return ok ;
00168   }

template<typename T, typename ModelType>
virtual void OMK::TriggerEmitterExtensionT< T, ModelType >::postComputeParameters (  )  [inline, protected, virtual]

The overwritten method.

Fire a signal or send an event according to the configuration.

Reimplemented from OMK::Extension.

Definition at line 171 of file OMKTriggerEmitterExtension.h.

References OMK::ExtensionT< OMK::ExtensibleSimulatedObject >::_owner, OMK::TriggerEmitterExtensionT< T, ModelType >::_trigger, OMK::IAccessorT< T >::get(), and OMK::IAttribute::isUpdated().

00172   {
00173     if( _trigger->isUpdated() && _trigger->get() )
00174     {
00175       this->sendUtil( _owner ) ;
00176     }
00177   }


Friends And Related Function Documentation

template<typename T, typename ModelType>
friend class OMK::ExtensionCreatorT< TriggerEmitterExtensionT< T, ModelType > > [friend]

The creator is a friend.

Definition at line 139 of file OMKTriggerEmitterExtension.h.


Member Data Documentation

template<typename T, typename ModelType>
Name OMK::TriggerEmitterExtensionT< T, ModelType >::OMK_CLASS_ID [static]

The id for the class in a configuration.

Definition at line 141 of file OMKTriggerEmitterExtension.h.

template<typename T, typename ModelType>
const bool OMK::TriggerEmitterExtensionT< T, ModelType >::REGISTERED_IN_EXTENSION_FACTORY [static]

The registration in the extension factory.

Definition at line 143 of file OMKTriggerEmitterExtension.h.

template<typename T, typename ModelType>
IAttributeBaseT< bool >* OMK::TriggerEmitterExtensionT< T, ModelType >::_trigger [protected]

Definition at line 157 of file OMKTriggerEmitterExtension.h.

Referenced by OMK::TriggerEmitterExtensionT< T, ModelType >::loadExtensionParameters(), and OMK::TriggerEmitterExtensionT< T, ModelType >::postComputeParameters().


logo OpenMask

Documentation generated on Mon Jun 9 11:46:03 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007