OMK::Inp::PlusMinusExtension< T > Class Template Reference
[User inputs]

Input listener to control the bounding boxes around objects. More...

#include <OMKPlusMinusExtension.h>

Inheritance diagram for OMK::Inp::PlusMinusExtension< T >:

Inheritance graph
[legend]
Collaboration diagram for OMK::Inp::PlusMinusExtension< T >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual ~PlusMinusExtension ()
 Destructor.
template<>
 PlusMinusExtension (ExtensibleSimulatedObject *owner, const Name &id, bool registerExtension)
template<>
void increment ()

Static Public Attributes

static Name OMK_CLASS_ID
static const bool REGISTERED_IN_EXTENSION_FACTORY
 The registration in the extension factory.

Protected Member Functions

 PlusMinusExtension (OMK::ExtensibleSimulatedObject *owner, const Name &id, bool registerExtension=true)
 Constructor.
virtual bool loadExtensionParameters (const ConfigurationParameterDescriptor *node)
 Initialisation.
virtual void action ()
 The overwritten method.
virtual void actionRelease ()
 The overwritten method.
virtual void postComputeParameters ()
 Compute.
void increment ()
 The incrementation method.

Protected Attributes

AttributeT< T > _increment
 The increment.
bool _doIncrementation
 The inner increment.
IAccessorT< T > * _attributeAccessor
 The attribute to update.

Friends

class OMK::ExtensionCreatorT< PlusMinusExtension< T > >
 The creator is a friend.

Detailed Description

template<typename T>
class OMK::Inp::PlusMinusExtension< T >

Input listener to control the bounding boxes around objects.

Date:
2007-03-14
Author:
Benoît Chanclou
Defines a extension which allows to increment an attribut of an object.

This extension can be used as an extension of any ExtensibleSimulatedObject which has a float or a integer attribute.

This is a template extension, it is implemented for the following attributes:

The creation is done dynamically through the following configuration:
 visualisation
 {
 Class OgreVis
 ...
 Extensions
 {
 plus
 {
 Class PlusMinusFloatExtension
 Increment 0.001 // the value which will be added to the attribute current value each time the key will be pressed
 Attribute Step  // The name of the attribute
 Key P // the default is "ADD" (the \b + of the numeric pad)
 VisuName visualisation // the default is "visualisation" needed to create the key listener
 }
 ...
 }
 }
 *

There is two ways to change the display of the details.

Definition at line 61 of file OMKPlusMinusExtension.h.


Constructor & Destructor Documentation

template<typename T>
OMK::Inp::PlusMinusExtension< T >::PlusMinusExtension ( OMK::ExtensibleSimulatedObject owner,
const Name id,
bool  registerExtension = true 
) [protected]

Constructor.

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

Definition at line 135 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_increment, and OMK::ExtensionT< OwnerClass >::_owner.

00136 : GenericKeyExtension< ExtensibleSimulatedObject >( owner, id, registerExtension, "ADD" ),
00137 _increment( id, 0 ),
00138 _doIncrementation( false ),
00139 _attributeAccessor( 0 )
00140 {
00141   _owner->addAttribute( _increment ) ;
00142 }

template<typename T>
OMK::Inp::PlusMinusExtension< T >::~PlusMinusExtension (  )  [virtual]

Destructor.

Definition at line 144 of file OMKPlusMinusExtension.h.

00144 {}

template<>
OMK::Inp::PlusMinusExtension< OMK::Type::Transform >::PlusMinusExtension ( ExtensibleSimulatedObject owner,
const Name id,
bool  registerExtension 
)

Definition at line 155 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_increment, and OMK::ExtensionT< OwnerClass >::_owner.

00156 : GenericKeyExtension< ExtensibleSimulatedObject >( owner, id, registerExtension, "ADD" ),
00157 _increment( id, Wm4::Vector3f::ZERO ),
00158 _doIncrementation( false ),
00159 _attributeAccessor( 0 )
00160 {
00161   _owner->addAttribute( _increment ) ;
00162 }


Member Function Documentation

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

Initialisation.

Reimplemented from OMK::Inp::GenericKeyExtension< OwnerClass >.

Definition at line 80 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_attributeAccessor, OMK::Inp::PlusMinusExtension< T >::_increment, OMK::ExtensionT< OwnerClass >::_owner, OMK::ParametersAccessor::get(), OMK::Inp::GenericKeyExtension< OwnerClass >::loadExtensionParameters(), OMERROR, and OMK::IAttributeT< PrmType, ModelType, AccessorType >::set().

00081   {
00082     bool ok = OMK::Inp::GenericKeyExtension< ExtensibleSimulatedObject >::loadExtensionParameters( node ) ; 
00083     T inc ;
00084     ok = ok && ParametersAccessor::get( node, "Increment", inc, _owner ) ;
00085     _increment.set( inc ) ;
00086     Name attributeName ;
00087     ok = ok && ParametersAccessor::get( node, "Attribute", attributeName, _owner ) ;
00088     if( ok )
00089     {
00090       _attributeAccessor = _owner->getBaseAttribute< T >( attributeName ) ;
00091       ok = _attributeAccessor != 0 ;
00092       if( !ok )
00093       {
00094         OMERROR( "Unable to find the associated attribute \"" << attributeName << "\" of type \"" << typeid( T ).name() 
00095                  << ( _owner->getAttribute( attributeName ) ?
00096                       "\", the attribute with this name is not of this type (\"" + std::string( _owner->getAttribute( attributeName )->getTypeId().name() ) + "\")."
00097                       : "\"." ) ) ;
00098       }
00099     }
00100     return ok ;
00101   }

template<typename T>
virtual void OMK::Inp::PlusMinusExtension< T >::action (  )  [inline, protected, virtual]

The overwritten method.

Switches the details level.

Reimplemented from OMK::Inp::GenericKeyExtension< OwnerClass >.

Definition at line 110 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_doIncrementation, OMK::Inp::GenericKeyExtension< OwnerClass >::_eventListenerRelease, and OMK::Inp::PlusMinusExtension< T >::increment().

00111   {
00112     if( !_eventListenerRelease ) increment() ;
00113     else _doIncrementation = true ;
00114   }

template<typename T>
virtual void OMK::Inp::PlusMinusExtension< T >::actionRelease (  )  [inline, protected, virtual]

The overwritten method.

Switches the details level.

Reimplemented from OMK::Inp::GenericKeyExtension< OwnerClass >.

Definition at line 117 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_doIncrementation, OMK::Inp::GenericKeyExtension< OwnerClass >::_eventListenerPress, and OMK::Inp::PlusMinusExtension< T >::increment().

00118   {
00119     if( !_eventListenerPress ) increment() ;
00120     else _doIncrementation = false ;
00121   }

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

Compute.

Reimplemented from OMK::Extension.

Definition at line 123 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_doIncrementation, and OMK::Inp::PlusMinusExtension< T >::increment().

00124   {
00125     if( _doIncrementation ) increment() ;
00126   }

template<typename T>
void OMK::Inp::PlusMinusExtension< T >::increment (  )  [inline, protected]

The incrementation method.

Definition at line 128 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_attributeAccessor, and OMK::Inp::PlusMinusExtension< T >::_increment.

Referenced by OMK::Inp::PlusMinusExtension< T >::action(), OMK::Inp::PlusMinusExtension< T >::actionRelease(), and OMK::Inp::PlusMinusExtension< T >::postComputeParameters().

00129   { 
00130     _attributeAccessor->set( _attributeAccessor->get() + _increment ) ;
00131   }

template<>
void OMK::Inp::PlusMinusExtension< OMK::Type::Transform >::increment (  ) 

Definition at line 166 of file OMKPlusMinusExtension.h.

References OMK::Inp::PlusMinusExtension< T >::_attributeAccessor, OMK::Inp::PlusMinusExtension< T >::_increment, OMK::IAttributeT< PrmType, ModelType, AccessorType >::get(), and OMK::Type::product().

00167 {
00168   _attributeAccessor->set( product( _attributeAccessor->get(), _increment.get() ) ) ;
00169 }


Friends And Related Function Documentation

template<typename T>
friend class OMK::ExtensionCreatorT< PlusMinusExtension< T > > [friend]

The creator is a friend.

Definition at line 66 of file OMKPlusMinusExtension.h.


Member Data Documentation

template<typename T>
Name OMK::Inp::PlusMinusExtension< T >::OMK_CLASS_ID [static]

Definition at line 68 of file OMKPlusMinusExtension.h.

template<typename T>
const bool OMK::Inp::PlusMinusExtension< T >::REGISTERED_IN_EXTENSION_FACTORY [static]

The registration in the extension factory.

Definition at line 70 of file OMKPlusMinusExtension.h.

template<typename T>
AttributeT< T > OMK::Inp::PlusMinusExtension< T >::_increment [protected]

The increment.

Definition at line 103 of file OMKPlusMinusExtension.h.

Referenced by OMK::Inp::PlusMinusExtension< T >::increment(), OMK::Inp::PlusMinusExtension< T >::loadExtensionParameters(), and OMK::Inp::PlusMinusExtension< T >::PlusMinusExtension().

template<typename T>
bool OMK::Inp::PlusMinusExtension< T >::_doIncrementation [protected]

The inner increment.

Definition at line 105 of file OMKPlusMinusExtension.h.

Referenced by OMK::Inp::PlusMinusExtension< T >::action(), OMK::Inp::PlusMinusExtension< T >::actionRelease(), and OMK::Inp::PlusMinusExtension< T >::postComputeParameters().

template<typename T>
IAccessorT< T >* OMK::Inp::PlusMinusExtension< T >::_attributeAccessor [protected]

The attribute to update.

Definition at line 107 of file OMKPlusMinusExtension.h.

Referenced by OMK::Inp::PlusMinusExtension< T >::increment(), and OMK::Inp::PlusMinusExtension< T >::loadExtensionParameters().


logo OpenMask

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

Generated with doxygen by Dimitri van Heesch ,   1997-2007