OMKTriggerEmitterExtension.h

Go to the documentation of this file.
00001 #ifndef OMK_INP_TRIGGEREMITTEREXTENSION_H
00002 #define OMK_INP_TRIGGEREMITTEREXTENSION_H
00003 
00004 #include "OMKAddOn.h"
00005 #include "OMKEventSignalEmitterUtil.h"
00006 #include "OMKExtensibleSimulatedObject.h"
00007 #include "OMKTriggerExtension.h"
00008 #include "OMKTransform.h"
00009 #include "OMKBaseType.h"
00010 #include "OMKTransformType.h"
00011 #include "OMKParametersAccessor.inl"
00012 namespace OMK
00013 {
00045 class OMKADDON_API TriggerEmitterExtension
00046 : public ExtensionT< OMK::ExtensibleSimulatedObject >, 
00047   public EventSignalEmitterUtil
00048 {
00049   DECLARE_EXTENSION_FACTORY( TriggerEmitterExtension ) ;
00050 protected:
00051   IAttributeBaseT< bool >* _trigger ;  
00052   virtual bool loadExtensionParameters( const ConfigurationParameterDescriptor * node ) ;
00055   virtual void postComputeParameters() ;
00056 };
00057 
00058 //=============================================================================
00132 template< typename T, typename ModelType >
00133 class TriggerEmitterExtensionT
00134 : public ExtensionT< OMK::ExtensibleSimulatedObject >, 
00135   public ValuedEventSignalEmitterUtilT< T, ModelType >
00136 {
00137 public:
00139   friend class OMK::ExtensionCreatorT< TriggerEmitterExtensionT< T, ModelType > > ; 
00141   static Name OMK_CLASS_ID ; 
00143   static const bool REGISTERED_IN_EXTENSION_FACTORY ; 
00144 protected: 
00147         TriggerEmitterExtensionT( ExtensibleSimulatedObject* owner, const Name& id, bool registerExtension ) 
00148   : ExtensionT< OMK::ExtensibleSimulatedObject >( owner, id, registerExtension ),
00149     ValuedEventSignalEmitterUtilT< T, ModelType >(),
00150     _trigger( 0 )
00151   {
00152   }
00153 
00154 public: 
00155   virtual ~TriggerEmitterExtensionT() {}
00156 protected:
00157   IAttributeBaseT< bool >* _trigger ;  
00158 
00159   virtual bool loadExtensionParameters( const ConfigurationParameterDescriptor * node ) 
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   }
00171   virtual void postComputeParameters() 
00172   {
00173     if( _trigger->isUpdated() && _trigger->get() )
00174     {
00175       this->sendUtil( _owner ) ;
00176     }
00177   }
00178 } ;
00179 
00180 typedef TriggerEmitterExtensionT< int, OMK::Type::IntType > TriggerIntEmitterExtension ;
00181 typedef TriggerEmitterExtensionT< bool, OMK::Type::BoolType > TriggerBoolEmitterExtension ;
00182 typedef TriggerEmitterExtensionT< Name, Name > TriggerNameEmitterExtension ;
00183 typedef TriggerEmitterExtensionT< OMK::Type::StringType, OMK::Type::StringType > TriggerStringEmitterExtension ;
00184 typedef TriggerEmitterExtensionT< float, OMK::Type::FloatType > TriggerFloatEmitterExtension ;
00185 typedef TriggerEmitterExtensionT< OMK::Type::Transform, OMK::Type::TransformType > TriggerTransformEmitterExtension ;
00186 typedef TriggerEmitterExtensionT< std::pair< OMK::Name, OMK::Name >, 
00187                               OMK::Type::SimpleTypeT< std::pair< OMK::Name, OMK::Name > > > TriggerConnectEmitterExtension ;
00188 #if defined _MSC_VER
00189 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerIntEmitterExtension      , "TriggerIntEmitter"       ) ; 
00190 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerBoolEmitterExtension     , "TriggerBoolEmitter"      ) ; 
00191 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerNameEmitterExtension     , "TriggerNameEmitter"      ) ; 
00192 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerFloatEmitterExtension    , "TriggerFloatEmitter"     ) ; 
00193 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerStringEmitterExtension   , "TriggerStringEmitter"    ) ; 
00194 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerTransformEmitterExtension, "TriggerTransformEmitter" ) ; 
00195 REGISTER_TEMPLATE_EXTENSION_FACTORY( TriggerConnectEmitterExtension  , "TriggerConnectEmitter"   ) ; 
00196 #endif //defined _MSC_VER
00197 
00198 
00199 //=============================================================================
00267 template< typename T, typename ModelType >
00268 class MultiTriggerEmitterExtensionT
00269 : public ExtensionT< OMK::ExtensibleSimulatedObject >, 
00270   public MultiValuedEventSignalEmitterUtilT< T, ModelType >
00271 {
00272 public:
00274   friend class OMK::ExtensionCreatorT< MultiTriggerEmitterExtensionT< T, ModelType > > ; 
00276   static Name OMK_CLASS_ID ; 
00278   static const bool REGISTERED_IN_EXTENSION_FACTORY ; 
00279 protected: 
00282         MultiTriggerEmitterExtensionT( ExtensibleSimulatedObject* owner, const Name& id, bool registerExtension ) 
00283   : ExtensionT< OMK::ExtensibleSimulatedObject >( owner, id, registerExtension ),
00284     MultiValuedEventSignalEmitterUtilT< T, ModelType >(),
00285     _trigger( 0 )
00286   {
00287   }
00288 
00289 public: 
00290   virtual ~MultiTriggerEmitterExtensionT() {}
00291 protected:
00292   IAttributeBaseT< bool >* _trigger ;  
00293 
00294   virtual bool loadExtensionParameters( const ConfigurationParameterDescriptor * node ) 
00295   {
00296     bool ok = ExtensionT< OMK::ExtensibleSimulatedObject >::loadExtensionParameters( node ) 
00297         && this->loadParametersUtil( _owner, node ) ;
00298     Name triggerId ;
00299     ok = ok && ParametersAccessor::get( node, "TriggerId", triggerId, _owner ) ;
00300     _trigger = _owner->getBaseAttribute< bool >( triggerId ) ;
00301     ok = ok && _trigger != 0 ;
00302     return ok ;
00303   }
00306   virtual void postComputeParameters() 
00307   {
00308     if( _trigger->isUpdated() )
00309     {
00310       this->sendUtil( _owner, _trigger->get() ) ;
00311     }
00312   }
00313 } ;
00314 
00315 typedef MultiTriggerEmitterExtensionT< int, OMK::Type::IntType > MultiTriggerIntEmitterExtension ;
00316 typedef MultiTriggerEmitterExtensionT< bool, OMK::Type::BoolType > MultiTriggerBoolEmitterExtension ;
00317 typedef MultiTriggerEmitterExtensionT< Name, Name > MultiTriggerNameEmitterExtension ;
00318 typedef MultiTriggerEmitterExtensionT< OMK::Type::StringType, OMK::Type::StringType > MultiTriggerStringEmitterExtension ;
00319 typedef MultiTriggerEmitterExtensionT< float, OMK::Type::FloatType > MultiTriggerFloatEmitterExtension ;
00320 typedef MultiTriggerEmitterExtensionT< OMK::Type::Transform, OMK::Type::TransformType > MultiTriggerTransformEmitterExtension ;
00321 typedef MultiTriggerEmitterExtensionT< std::pair< OMK::Name, OMK::Name >, 
00322                               OMK::Type::SimpleTypeT< std::pair< OMK::Name, OMK::Name > > > MultiTriggerConnectEmitterExtension ;
00323 #if defined _MSC_VER
00324 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerIntEmitterExtension      , "MultiTriggerIntEmitter" ) ; 
00325 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerBoolEmitterExtension     , "MultiTriggerBoolEmitter" ) ; 
00326 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerNameEmitterExtension     , "MultiTriggerNameEmitter" ) ; 
00327 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerFloatEmitterExtension    , "MultiTriggerFloatEmitter" ) ; 
00328 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerStringEmitterExtension   , "MultiTriggerStringEmitter" ) ; 
00329 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerTransformEmitterExtension, "MultiTriggerTransformEmitter" ) ; 
00330 REGISTER_TEMPLATE_EXTENSION_FACTORY( MultiTriggerConnectEmitterExtension  , "MultiTriggerConnectEmitter" ) ; 
00331 #endif //defined _MSC_VER
00332 
00333 
00334 } // namespace OMK
00335 
00336 #endif // OMK_INP_TRIGGEREMITTEREXTENSION_H

logo OpenMask

Documentation generated on Mon Jun 9 11:45:57 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007