Inheritance diagram for OMK::Iii::JointInteractorExtension:
Protected Member Functions | |
virtual bool | loadObjectParameters (const ConfigurationParameterDescriptor *node) |
Load the connection. | |
virtual bool | loadExtensionParameters (const ConfigurationParameterDescriptor *node) |
This method initialises the interactor. | |
virtual void | postComputeParameters () |
Calculates the new position of the reference object. | |
void | startRetroPropagation () |
void | stopRetroPropagation () |
Protected Attributes | |
Name | _referenceId |
Name | _positionId |
bool | _connected |
JointExtension * | _jointExtension |
Friends | |
class | JointExtension |
Definition at line 46 of file OMKJointExtension.cpp.
OMK::Iii::JointInteractorExtension::~JointInteractorExtension | ( | ) | [virtual] |
OMK::Iii::JointInteractorExtension::JointInteractorExtension | ( | JointExtension * | jointExtension | ) | [protected] |
Protected constructor of InteractorObject call by derivate classes.
Definition at line 72 of file OMKJointExtension.cpp.
References OMK::Iii::InteractorExtension::_access, and OMK::Type::AccessGroup::_level.
00073 : InteractorExtension( jointExtension->_owner, std::string( jointExtension->_id.getCString() ) + "Interactor", false ), 00074 _connected( false ), 00075 _jointExtension( jointExtension ) 00076 { 00077 _access._level = 0 ; 00078 }
OMK::Iii::JointInteractorExtension::~JointInteractorExtension | ( | ) | [virtual] |
OMK::Iii::JointInteractorExtension::JointInteractorExtension | ( | JointExtension * | jointExtension | ) | [protected] |
Protected constructor of InteractorObject call by derivate classes.
Definition at line 72 of file OMKJointExtension.cpp.
References OMK::Iii::InteractorExtension::_access, and OMK::Type::AccessGroup::_level.
00073 : InteractorExtension( jointExtension->_owner, std::string( jointExtension->_id.getCString() ) + "Interactor", false ), 00074 _connected( false ), 00075 _jointExtension( jointExtension ) 00076 { 00077 _access._level = 0 ; 00078 }
bool OMK::Iii::JointInteractorExtension::loadObjectParameters | ( | const ConfigurationParameterDescriptor * | node | ) | [protected, virtual] |
Load the connection.
Reimplemented from OMK::Extension.
Definition at line 84 of file OMKJointExtension.cpp.
References OMK::ExtensionT< SimulatedObjectType >::_owner, _positionId, _referenceId, and OMK::ParametersAccessor::get().
Referenced by OMK::Iii::JointExtension::loadObjectParameters().
00085 { 00086 bool ok = true ; 00087 00088 std::pair< Name, Name > connection ; 00089 ok = ok && ParametersAccessor::get( node, "refPositionConnect", connection, _owner ) ; 00090 if( ok ) 00091 { 00092 _referenceId = connection.first ; 00093 _positionId = connection.second ; 00094 } 00095 00096 return ok ; 00097 }
bool OMK::Iii::JointInteractorExtension::loadExtensionParameters | ( | const ConfigurationParameterDescriptor * | node | ) | [protected, virtual] |
This method initialises the interactor.
Load the parameters to create the interactor outputs.
Reimplemented from OMK::Iii::InteractorExtension.
Definition at line 99 of file OMKJointExtension.cpp.
References OMK::Iii::InteractorExtension::_access, _jointExtension, OMK::Type::AccessGroup::_level, OMK::ExtensionT< SimulatedObjectType >::_owner, _positionId, _referenceId, OMK::Iii::JointExtension::_referencePosition, OMK::Iii::InteractorOutput::create(), OMK::debugMsg(), OMK::ParametersAccessor::get(), OMK::Name::getCString(), OMK::IAttribute::getId(), OMK::ConfigurationParameterDescriptor::getNumberOfSubItems(), OMK::ConfigurationParameterDescriptor::getSubDescriptorByName(), OMK::ConfigurationParameterDescriptor::getSubDescriptorByPosition(), OMK_DEBUG_III, OMTRACEID, and OMK::Iii::InteractorExtension::startInteractor().
Referenced by OMK::Iii::JointExtension::loadExtensionParameters().
00100 { 00101 ParametersAccessor::get( node, "Level", _access._level ); 00102 OMTRACEID( OMK_DEBUG_III, "The interactor " << OMK::debugMsg( this, _owner ) << " has the level " << _access._level ) ; 00103 startInteractor() ; 00104 00105 // Try to read the category in the configuration of the reference object 00106 bool found = false ; // flag to know if the search is ok 00107 std::string category( "absolute" ) ; // The default value 00108 // 1/ Search in the current configuration the category 00109 if( ParametersAccessor::get( node, "Category", category ) ) 00110 { 00111 OMTRACEID( OMK_DEBUG_III, "The category for the reference is \"" << category << "\" and it " << ( found ? "was found in configuration" : "is the default value" ) ) ; 00112 } 00113 else 00114 { 00115 // 2/ search the extensions configuration of the reference object 00116 const ConfigurationParameterDescriptor *extNodeForRef = _owner->getController().getObjectDescriptorOfObject( _referenceId ).getExtensionsParameters() ; 00117 int nbItems = extNodeForRef ? extNodeForRef->getNumberOfSubItems() : 0 ; 00118 for( int i = 0 ; i < nbItems && !found ; ++i ) 00119 { 00120 // Retrieves configuration for each extension 00121 const ConfigurationParameterDescriptor * extNode = extNodeForRef->getSubDescriptorByPosition( i ) ; 00122 // Try to found "Connectors" in it 00123 const ConfigurationParameterDescriptor * connectorsNode = extNode->getSubDescriptorByName( "Connectors" ) ; 00124 // Try to found the connector with the same id than the output which is the reference for the joint 00125 const ConfigurationParameterDescriptor * connectorNode = connectorsNode ? connectorsNode->getSubDescriptorByName( _positionId.getCString() ) : 0 ; 00126 if( connectorNode ) 00127 { // Ok, so try to read the "Category" field 00128 ParametersAccessor::get( connectorNode, "Category", category ) ; 00129 found = true ; 00130 break ; 00131 } 00132 else 00133 { // Not ok, no connectors has this id 00134 int nbItems2 = connectorsNode ? connectorsNode->getNumberOfSubItems() : 0 ; 00135 for( int j = 0 ; j < nbItems2 ; ++j ) 00136 { // Look for connector which has the "Attribute" field equals to the id 00137 std::string id ; 00138 const ConfigurationParameterDescriptor * connectorNode = connectorsNode->getSubDescriptorByPosition( j ) ; 00139 if( ParametersAccessor::get( connectorNode, "Attribute", id ) && id == _positionId ) 00140 { // The "Attribute" field is ok => try to read the "Category" field 00141 ParametersAccessor::get( connectorNode, "Category", category ) ; 00142 found = true ; 00143 break ; 00144 } 00145 } 00146 } 00147 } 00148 OMTRACEID( OMK_DEBUG_III, "The category for the reference is \"" << category << "\" and it " << ( found ? "was found in configuration" : "is the default value" ) ) ; 00149 } 00150 00151 // Creates the interactor output 00152 InteractorOutput::create( _jointExtension->_referencePosition.getId(), _jointExtension->_referencePosition.getId(), this, category, OMK::Type::AccessGroupLevel(), false ) ; 00153 00154 return true ; 00155 }
void OMK::Iii::JointInteractorExtension::postComputeParameters | ( | ) | [protected, virtual] |
Calculates the new position of the reference object.
Reimplemented from OMK::Extension.
Definition at line 157 of file OMKJointExtension.cpp.
void OMK::Iii::JointInteractorExtension::startRetroPropagation | ( | ) | [protected] |
Definition at line 161 of file OMKJointExtension.cpp.
References _connected, _jointExtension, _referenceId, OMK::Iii::JointExtension::_referencePosition, OMK::Iii::controlTakeOverAndGetCurrentValues(), OMK::IAttribute::getId(), OMK::Iii::InteractorExtension::getSessionWith(), OMMESSAGE, and OMK::Iii::InteractorExtension::startSessionWith().
00162 { 00163 if( !getSessionWith( _referenceId ) ) 00164 { 00165 startSessionWith( _referenceId ) ; 00166 OMMESSAGE( "start session" ) ; 00167 } 00168 else if( !_connected ) 00169 { 00170 (*getSessionWith( _referenceId )).c( _jointExtension->_referencePosition.getId() ).c( OMK::Iii::controlTakeOverAndGetCurrentValues ) ; 00171 _connected = true ; 00172 OMMESSAGE( "start retro propagation" ) ; 00173 } 00174 }
void OMK::Iii::JointInteractorExtension::stopRetroPropagation | ( | ) | [protected] |
Definition at line 176 of file OMKJointExtension.cpp.
References _connected, _jointExtension, _referenceId, OMK::Iii::JointExtension::_referencePosition, OMK::Iii::controlRelease(), OMK::IAttribute::getId(), OMK::Iii::InteractorExtension::getSessionWith(), and OMMESSAGE.
Referenced by OMK::Iii::JointExtension::postComputeParameters().
00177 { 00178 if( _connected ) 00179 { 00180 (*getSessionWith( _referenceId )).c( _jointExtension->_referencePosition.getId() ).c( OMK::Iii::controlRelease ) ; 00181 _connected = false ; 00182 OMMESSAGE( "stop retro propagation" ) ; 00183 } 00184 }
friend class JointExtension [friend] |
Definition at line 48 of file OMKJointExtension.cpp.
Name OMK::Iii::JointInteractorExtension::_referenceId [protected] |
Definition at line 65 of file OMKJointExtension.cpp.
Referenced by loadExtensionParameters(), loadObjectParameters(), startRetroPropagation(), and stopRetroPropagation().
Name OMK::Iii::JointInteractorExtension::_positionId [protected] |
Definition at line 66 of file OMKJointExtension.cpp.
Referenced by loadExtensionParameters(), and loadObjectParameters().
bool OMK::Iii::JointInteractorExtension::_connected [protected] |
Definition at line 67 of file OMKJointExtension.cpp.
Referenced by startRetroPropagation(), and stopRetroPropagation().
Definition at line 68 of file OMKJointExtension.cpp.
Referenced by loadExtensionParameters(), startRetroPropagation(), and stopRetroPropagation().
Documentation generated on Mon Jun 9 11:46:04 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |