#include <OMKDistributedCameraOgreListener.h>
Inheritance diagram for OMK::Inp::DistributedCameraOgreListener:
Protected Member Functions | |
virtual bool | keyPressed (const OIS::KeyEvent &e) |
Dispatches key pressed event. | |
virtual bool | keyReleased (const OIS::KeyEvent &e) |
Dispatches key released event. | |
virtual bool | mouseMoved (const OIS::MouseEvent &e) |
Dispatches mouse moved event. | |
virtual bool | mousePressed (const OIS::MouseEvent &e, OIS::MouseButtonID id) |
Dispatches mouse button pressed event. | |
virtual bool | mouseReleased (const OIS::MouseEvent &e, OIS::MouseButtonID id) |
Dispatches mouse button released event. | |
virtual void | postComputeParameters () |
Protected Attributes | |
Vis::OgreVis * | _ogreVis |
Type::Transform | _transform |
bool | _updateTransform |
float | _translationSpeed |
float | _wheelTranslationSpeed |
float | _rotationSpeed |
Private Member Functions | |
DECLARE_INPUT_LISTENER_FACTORY (DistributedCameraOgreListener) |
..
Definition at line 25 of file OMKDistributedCameraOgreListener.h.
OMK::Inp::DistributedCameraOgreListener::DECLARE_INPUT_LISTENER_FACTORY | ( | DistributedCameraOgreListener | ) | [private] |
bool DistributedCameraOgreListener::keyPressed | ( | const OIS::KeyEvent & | e | ) | [protected, virtual] |
Dispatches key pressed event.
Definition at line 43 of file OMKDistributedCameraOgreListener.cpp.
References _transform, _translationSpeed, _updateTransform, OMK::Type::Transform::getDirection(), OMK::Type::Transform::getRight(), OMK::Type::Transform::getTranslate(), OMK::Type::Transform::getUp(), postComputeParameters(), and OMK::Type::Transform::setTranslate().
00044 { 00045 switch( e.key ) 00046 { 00047 case OIS::KC_UP : 00048 _transform.setTranslate( _transform.getTranslate() - ( _transform.getDirection() * _translationSpeed ) ) ; 00049 _updateTransform = true ; 00050 break ; 00051 case OIS::KC_DOWN : 00052 _transform.setTranslate( _transform.getTranslate() + ( _transform.getDirection() * _translationSpeed ) ) ; 00053 _updateTransform = true ; 00054 break ; 00055 case OIS::KC_RIGHT : 00056 _transform.setTranslate( _transform.getTranslate() + ( _transform.getRight() * _translationSpeed ) ) ; 00057 _updateTransform = true ; 00058 break ; 00059 case OIS::KC_LEFT : 00060 _transform.setTranslate( _transform.getTranslate() - ( _transform.getRight() * _translationSpeed ) ) ; 00061 _updateTransform = true ; 00062 break ; 00063 case OIS::KC_PGUP : 00064 _transform.setTranslate( _transform.getTranslate() - ( _transform.getUp() * _translationSpeed ) ) ; 00065 _updateTransform = true ; 00066 break ; 00067 case OIS::KC_PGDOWN : 00068 _transform.setTranslate( _transform.getTranslate() + ( _transform.getUp() * _translationSpeed ) ) ; 00069 _updateTransform = true ; 00070 // increase move speed 00071 case OIS::KC_ADD : 00072 _translationSpeed += 1; 00073 break ; 00074 // decrease move speed 00075 case OIS::KC_SUBTRACT : 00076 _translationSpeed -= ( 0 < _translationSpeed - 1 ) ? 1 : 0 ; 00077 break ; 00078 default : 00079 ; 00080 } 00081 if ( _updateTransform) 00082 postComputeParameters(); 00083 return true ; 00084 }
virtual bool OMK::Inp::DistributedCameraOgreListener::keyReleased | ( | const OIS::KeyEvent & | e | ) | [inline, protected, virtual] |
bool DistributedCameraOgreListener::mouseMoved | ( | const OIS::MouseEvent & | e | ) | [protected, virtual] |
Dispatches mouse moved event.
Definition at line 86 of file OMKDistributedCameraOgreListener.cpp.
References _rotationSpeed, _transform, _translationSpeed, _updateTransform, _wheelTranslationSpeed, OMK::Type::Transform::getDirection(), OMK::Type::Transform::getRotate(), OMK::Type::Transform::getTranslate(), postComputeParameters(), OMK::Type::Transform::setRotate(), and OMK::Type::Transform::setTranslate().
00087 { 00088 if( 0 < e.state.Z.rel ) 00089 { 00090 _transform.setTranslate( _transform.getTranslate() - ( _transform.getDirection() * _wheelTranslationSpeed ) ) ; 00091 _updateTransform = true ; 00092 } 00093 else if ( e.state.Z.rel < 0 ) 00094 { 00095 _transform.setTranslate( _transform.getTranslate() + ( _transform.getDirection() * _wheelTranslationSpeed ) ) ; 00096 _updateTransform = true ; 00097 } 00098 00099 /* Rotation factors, may not be used if the second mouse button is pressed. */ 00100 /* If the second mouse button is pressed, then the mouse movement results in 00101 sliding the camera, otherwise we rotate. */ 00102 if( e.state.buttonDown( OIS::MB_Left ) ) 00103 { 00104 //float tx = e.state.X.rel * 0.13f ; 00105 float tx = e.state.X.rel * _translationSpeed ; 00106 float ty = e.state.Y.rel * _translationSpeed ; 00107 00108 if ( ( tx != 0.f ) || ( ty != 0.f ) ) 00109 { 00110 _transform.setTranslate( _transform.getTranslate() 00111 + ( _transform.getRotate() * Vector3f (tx,ty,0))); 00112 _updateTransform = true ; 00113 } 00114 } 00115 else if( e.state.buttonDown( OIS::MB_Right ) ) 00116 { 00117 float dx( e.state.X.rel * _rotationSpeed ) ; 00118 float dy( e.state.Y.rel * _rotationSpeed ) ; 00119 00120 if ( ( dx != 0.f ) || ( dy != 0.f ) ) 00121 { 00122 Matrix3f rotation ; 00123 // yaw (fixed to the world axis) 00124 rotation.FromAxisAngle( Vector3f::UNIT_Y, -dx ) ; 00125 _transform.setRotate( rotation * _transform.getRotate() ) ; 00126 // pitch 00127 rotation.FromAxisAngle( _transform.getRotate() * Vector3f::UNIT_X, -dy ) ; 00128 _transform.setRotate( rotation * _transform.getRotate() ) ; 00129 00130 _updateTransform = true ; 00131 } 00132 } 00133 if ( _updateTransform) 00134 postComputeParameters(); 00135 return true ; 00136 }
virtual bool OMK::Inp::DistributedCameraOgreListener::mousePressed | ( | const OIS::MouseEvent & | e, | |
OIS::MouseButtonID | id | |||
) | [inline, protected, virtual] |
Dispatches mouse button pressed event.
Definition at line 39 of file OMKDistributedCameraOgreListener.h.
virtual bool OMK::Inp::DistributedCameraOgreListener::mouseReleased | ( | const OIS::MouseEvent & | e, | |
OIS::MouseButtonID | id | |||
) | [inline, protected, virtual] |
Dispatches mouse button released event.
Definition at line 41 of file OMKDistributedCameraOgreListener.h.
void DistributedCameraOgreListener::postComputeParameters | ( | ) | [protected, virtual] |
Definition at line 138 of file OMKDistributedCameraOgreListener.cpp.
References OMK::Inp::InputListener::_sender, _transform, _updateTransform, OMK::SimulatedObject::fireValuedSignal(), and OMTRACEID.
Referenced by keyPressed(), and mouseMoved().
00139 { 00140 if ( _updateTransform == true ) 00141 { 00142 OMTRACEID("OMKDistributedCameraOgreListener", "Signal" ); 00143 _sender->fireValuedSignal< TransformType >( "moveCamera", _transform ) ; 00144 _updateTransform = false ; 00145 } 00146 00147 }
Definition at line 47 of file OMKDistributedCameraOgreListener.h.
Definition at line 48 of file OMKDistributedCameraOgreListener.h.
Referenced by keyPressed(), mouseMoved(), and postComputeParameters().
Definition at line 49 of file OMKDistributedCameraOgreListener.h.
Referenced by keyPressed(), mouseMoved(), and postComputeParameters().
float OMK::Inp::DistributedCameraOgreListener::_translationSpeed [protected] |
Definition at line 50 of file OMKDistributedCameraOgreListener.h.
Referenced by keyPressed(), and mouseMoved().
float OMK::Inp::DistributedCameraOgreListener::_wheelTranslationSpeed [protected] |
float OMK::Inp::DistributedCameraOgreListener::_rotationSpeed [protected] |
Documentation generated on Mon Jun 9 11:46:04 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |