Changeset 317 for code/branches/steering/src/orxonox.cc
- Timestamp:
- Nov 28, 2007, 3:00:45 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/steering/src/orxonox.cc
r209 r317 79 79 using namespace Ogre; 80 80 81 class OrxExitListener : public FrameListener 81 class OrxExitListener : public FrameListener, public OIS::MouseListener 82 82 { 83 83 public: 84 OrxExitListener(OIS::Keyboard *keyboard) 85 : mKeyboard(keyboard) 86 { 87 } 88 84 OrxExitListener(OIS::Keyboard *keyboard, OIS::Mouse *mouse) 85 : mKeyboard(keyboard), mMouse(mouse) 86 { 87 speed = 250; 88 loop = 100; 89 rotate = 10; 90 mouseX = 0; 91 mouseY = 0; 92 maxMouseX = 0; 93 minMouseX = 0; 94 moved = false; 95 steering->brakeRotate(rotate*10); 96 steering->brakeLoop(loop); 97 mMouse->setEventCallback(this); 98 } 89 99 bool frameStarted(const FrameEvent& evt) 90 100 { 91 float speed = 1;92 float rotate = 1;93 101 mKeyboard->capture(); 94 if (mKeyboard->isKeyDown(OIS::KC_SPACE)) 102 mMouse->capture(); 103 if (mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W)) 95 104 steering->moveForward(speed); 96 105 else 97 106 steering->moveForward(0); 98 if(mKeyboard->isKeyDown(OIS::KC_ C))99 steering->brake (speed);107 if(mKeyboard->isKeyDown(OIS::KC_DOWN) || mKeyboard->isKeyDown(OIS::KC_S)) 108 steering->brakeForward(speed); 100 109 else 101 steering->brake(0.1); 102 if (mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W)) 103 steering->rotateUp(rotate); 104 else 105 steering->rotateUp(0); 106 if (mKeyboard->isKeyDown(OIS::KC_DOWN) || mKeyboard->isKeyDown(OIS::KC_S)) 107 steering->rotateDown(rotate); 108 else 109 steering->rotateDown(0); 110 steering->brakeForward(speed/10); 110 111 if (mKeyboard->isKeyDown(OIS::KC_RIGHT) || mKeyboard->isKeyDown(OIS::KC_D)) 111 steering->rotateRight(rotate); 112 else 113 steering->rotateRight(0); 114 if (mKeyboard->isKeyDown(OIS::KC_LEFT) || mKeyboard->isKeyDown(OIS::KC_A)) 115 steering->rotateLeft(rotate); 116 else 117 steering->rotateLeft(0); 118 if (mKeyboard->isKeyDown(OIS::KC_E)) 119 steering->loopRight(rotate); 112 steering->loopRight(loop); 120 113 else 121 114 steering->loopRight(0); 122 if (mKeyboard->isKeyDown(OIS::KC_ Q))123 steering->loopLeft( rotate);115 if (mKeyboard->isKeyDown(OIS::KC_LEFT) || mKeyboard->isKeyDown(OIS::KC_A)) 116 steering->loopLeft(loop); 124 117 else 125 118 steering->loopLeft(0); 119 120 if(moved) { 121 if (mouseY<0) 122 steering->rotateUp(-mouseY*rotate); 123 if (mouseY>0) 124 steering->rotateDown(mouseY*rotate); 125 if (mouseX>0) 126 steering->rotateRight(mouseX*rotate); 127 if (mouseX<0) 128 steering->rotateLeft(-mouseX*rotate); 129 moved = false; 130 } 131 else { 132 steering->rotateUp(0); 133 steering->rotateDown(0); 134 steering->rotateRight(0); 135 steering->rotateLeft(0); 136 } 137 126 138 steering->tick(evt.timeSinceLastFrame); 127 139 // scenemanager->spacehip->tick(evt.timesincelastframe); 140 if(mKeyboard->isKeyDown(OIS::KC_ESCAPE)) 141 cout << "maximal MouseX: " << maxMouseX << "\tminMouseX: " << minMouseX << endl; 128 142 return !mKeyboard->isKeyDown(OIS::KC_ESCAPE); 129 143 } 130 144 145 bool mouseMoved(const OIS::MouseEvent &e) 146 { 147 mouseX = e.state.X.rel; 148 mouseY = e.state.Y.rel; 149 if(mouseX>maxMouseX) maxMouseX = mouseX; 150 if(mouseX<minMouseX) minMouseX = mouseX; 151 cout << "mouseX: " << mouseX << "\tmouseY: " << mouseY << endl; 152 moved = true; 153 return true; 154 } 155 156 bool mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id) { return true; } 157 bool mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id) { return true; } 158 131 159 private: 160 float speed; 161 float rotate; 162 float loop; 163 float mouseY; 164 float mouseX; 165 float maxMouseX; 166 float minMouseX; 167 bool moved; 132 168 OIS::Keyboard *mKeyboard; 169 OIS::Mouse *mMouse; 133 170 }; 134 171 … … 286 323 { 287 324 mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject(OIS::OISKeyboard, false)); 288 mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject(OIS::OISMouse, false));325 mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject(OIS::OISMouse, true)); 289 326 } 290 327 catch (const OIS::Exception &e) … … 308 345 void createFrameListener() 309 346 { 310 mListener = new OrxExitListener(mKeyboard );347 mListener = new OrxExitListener(mKeyboard, mMouse); 311 348 mRoot->addFrameListener(mListener); 312 349 }
Note: See TracChangeset
for help on using the changeset viewer.