Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 28, 2007, 3:00:45 PM (16 years ago)
Author:
mbiber
Message:

update steering

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/steering/src/orxonox.cc

    r209 r317  
    7979using namespace Ogre;
    8080
    81 class OrxExitListener : public FrameListener
     81class OrxExitListener : public FrameListener, public OIS::MouseListener
    8282{
    8383  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    }
    8999    bool frameStarted(const FrameEvent& evt)
    90100    {
    91       float speed = 1;
    92       float rotate = 1;
    93101      mKeyboard->capture();
    94       if (mKeyboard->isKeyDown(OIS::KC_SPACE))
     102      mMouse->capture();
     103      if (mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W))
    95104        steering->moveForward(speed);
    96105      else
    97106        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);
    100109      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);
    110111      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);
    120113      else
    121114        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);
    124117      else
    125118        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
    126138      steering->tick(evt.timeSinceLastFrame);
    127139//      scenemanager->spacehip->tick(evt.timesincelastframe);
     140      if(mKeyboard->isKeyDown(OIS::KC_ESCAPE))
     141        cout << "maximal MouseX: " << maxMouseX << "\tminMouseX: " << minMouseX << endl;
    128142      return !mKeyboard->isKeyDown(OIS::KC_ESCAPE);
    129143    }
    130144
     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
    131159  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;
    132168    OIS::Keyboard *mKeyboard;
     169    OIS::Mouse *mMouse;
    133170};
    134171
     
    286323      {
    287324        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));
    289326      }
    290327      catch (const OIS::Exception &e)
     
    308345    void createFrameListener()
    309346    {
    310       mListener = new OrxExitListener(mKeyboard);
     347      mListener = new OrxExitListener(mKeyboard, mMouse);
    311348      mRoot->addFrameListener(mListener);     
    312349    }
Note: See TracChangeset for help on using the changeset viewer.