00001 #ifndef OMK_INP_KEYEMITTEREXTENSION_H 00002 #define OMK_INP_KEYEMITTEREXTENSION_H 00003 00004 #include "OMKGenericKeyExtension.h" 00005 #include "OMKExtensibleSimulatedObject.h" 00006 #include "OMKTransform.h" 00007 #include "OMKBaseType.h" 00008 #include "OMKColorType.h" 00009 #include "OMKTransformType.h" 00010 #include "OMKParametersAccessor.inl" 00011 #include "OMKEventSignalEmitterUtil.h" 00012 namespace OMK 00013 { 00014 namespace Inp 00015 { 00016 00058 class OMKINPUTS_API KeyEmitterExtension 00059 : public GenericKeyExtension< ExtensibleSimulatedObject >, 00060 public EventSignalEmitterUtil 00061 { 00062 DECLARE_EXTENSION_FACTORY( KeyEmitterExtension ) ; 00063 protected: 00064 virtual bool loadExtensionParameters( const ConfigurationParameterDescriptor * node ) ; 00067 virtual void action() ; 00068 }; 00069 00070 //============================================================================= 00176 template< typename T, typename ModelType > 00177 class KeyEmitterExtensionT 00178 : public GenericKeyExtension< ExtensibleSimulatedObject >, 00179 public ValuedEventSignalEmitterUtilT< T, ModelType > 00180 { 00181 public: 00183 friend class OMK::ExtensionCreatorT< KeyEmitterExtensionT< T, ModelType > > ; 00185 static Name OMK_CLASS_ID ; 00187 static const bool REGISTERED_IN_EXTENSION_FACTORY ; 00188 protected: 00191 KeyEmitterExtensionT( ExtensibleSimulatedObject* owner, const Name& id, bool registerExtension ) 00192 : GenericKeyExtension< ExtensibleSimulatedObject >( owner, id, registerExtension, "" ), 00193 ValuedEventSignalEmitterUtilT< T, ModelType >() 00194 { 00195 } 00196 00197 public: 00198 virtual ~KeyEmitterExtensionT() {} 00199 protected: 00200 virtual bool loadExtensionParameters( const ConfigurationParameterDescriptor * node ) 00201 { 00202 return GenericKeyExtension< ExtensibleSimulatedObject >::loadExtensionParameters( node ) 00203 && this->loadParametersUtil( _owner, node ); 00204 } 00207 virtual void action() 00208 { 00209 this->sendUtil( _owner ) ; 00210 } 00211 } ; 00212 00213 typedef KeyEmitterExtensionT< int, OMK::Type::IntType > KeyIntEmitterExtension ; 00214 typedef KeyEmitterExtensionT< bool, OMK::Type::BoolType > KeyBoolEmitterExtension ; 00215 typedef KeyEmitterExtensionT< Name, Name > KeyNameEmitterExtension ; 00216 typedef KeyEmitterExtensionT< OMK::Type::StringType, OMK::Type::StringType > KeyStringEmitterExtension ; 00217 typedef KeyEmitterExtensionT< float, OMK::Type::FloatType > KeyFloatEmitterExtension ; 00218 typedef KeyEmitterExtensionT< OMK::Type::Transform, OMK::Type::TransformType > KeyTransformEmitterExtension ; 00219 typedef KeyEmitterExtensionT< OMK::Type::Color, OMK::Type::ColorType > KeyColorEmitterExtension ; 00220 typedef KeyEmitterExtensionT< std::pair< OMK::Name, OMK::Name >, 00221 OMK::Type::SimpleTypeT< std::pair< OMK::Name, OMK::Name > > > KeyConnectEmitterExtension ; 00222 #if defined _MSC_VER 00223 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyIntEmitterExtension, "KeyIntEmitterExtension" ) ; 00224 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyBoolEmitterExtension, "KeyBoolEmitterExtension" ) ; 00225 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyNameEmitterExtension, "KeyNameEmitterExtension" ) ; 00226 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyFloatEmitterExtension, "KeyFloatEmitterExtension" ) ; 00227 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyStringEmitterExtension, "KeyStringEmitterExtension" ) ; 00228 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyTransformEmitterExtension, "KeyTransformEmitterExtension" ) ; 00229 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyColorEmitterExtension, "KeyColorEmitterExtension" ) ; 00230 REGISTER_TEMPLATE_EXTENSION_FACTORY( KeyConnectEmitterExtension, "KeyConnectEmitterExtension" ) ; 00231 #endif //defined _MSC_VER 00232 00233 } // namespace Inp 00234 } // namespace OMK 00235 00236 #endif // OMK_INP_KEYEMITTEREXTENSION_H
Documentation generated on Mon Jun 9 11:45:56 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |