Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 130


Ignore:
Timestamp:
Oct 31, 2007, 12:28:24 AM (16 years ago)
Author:
rgrieder
Message:
 
Location:
code/branches/main_reto
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/main_reto/include/OrxonoxShip.h

    r128 r130  
    99{
    1010public:
     11        Vector3 speed;
     12        float thrust, sideThrust, baseThrust;
     13
    1114        OrxonoxShip(SceneManager*, SceneNode*);
    1215        virtual ~OrxonoxShip();
     
    2023        void setRoll(const Radian);
    2124
     25        Real getThrust();
     26
    2227        bool tick(unsigned long, float);
    2328
     
    2732        Entity *mShip;
    2833
    29         Vector3 speed;
    30         float thrust, sideThrust, baseThrust;
    3134};
    3235
  • code/branches/main_reto/include/RunManager.h

    r127 r130  
    4141        OrxonoxShip *mShip;
    4242
    43         Vector3 mTranslateVector;
    4443        bool mStatsOn;
    4544
     
    4746
    4847        unsigned int mNumScreenShots;
    49         float mMoveScale;
    50         Degree mRotScale;
    5148        // just to stop toggles flipping too fast
    5249        Real mTimeUntilNextToggle ;
    53         Radian mRotX, mRotY;
    5450        TextureFilterOptions mFiltering;
    5551        int mAniso;
    5652
    5753        int mSceneDetailIndex ;
    58         Real mMoveSpeed;
    59         Degree mRotateSpeed;
    6054        Overlay* mDebugOverlay;
    6155
     
    9387        virtual void updateStats(void);
    9488
    95         virtual void moveCamera();
    96 
    9789        virtual void showDebugOverlay(bool);
    9890
  • code/branches/main_reto/src/OrxonoxShip.cpp

    r128 r130  
    33
    44OrxonoxShip::OrxonoxShip(SceneManager *mSceneMgr, SceneNode *mNode)
    5         : mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100)
     5        : mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100), thrust(0), sideThrust(0)
    66{
    77}
     
    3636void OrxonoxShip::setSideThrust(const Real value)
    3737{
    38         sideThrust = value;
     38        sideThrust = value * baseThrust;
    3939}
    4040
     
    5454}
    5555
     56Real OrxonoxShip::getThrust()
     57{
     58        return thrust;
     59}
     60
    5661
    5762bool OrxonoxShip::tick(unsigned long time, float deltaTime)
    5863{
    59         speed += (mRootNode->getLocalAxes() * Vector3(0, 0, 1)).normalisedCopy() * thrust * deltaTime;
     64        speed += (mRootNode->getLocalAxes() * Vector3(0, 0, -1)).normalisedCopy() * thrust * deltaTime;
     65        speed += (mRootNode->getLocalAxes() * Vector3(1, 0,  0)).normalisedCopy() * sideThrust * deltaTime;
    6066
    6167        mRootNode->translate(speed * deltaTime);
  • code/branches/main_reto/src/RunManager.cpp

    r128 r130  
    66                                           bool bufferedJoy ) :
    77mOgre(mOgre), mWindow(mOgre->getRenderWindow()),
    8 mTranslateVector(Vector3::ZERO), mStatsOn(true), mNumScreenShots(0),
    9 mMoveScale(0.0f), mRotScale(0.0f), mTimeUntilNextToggle(0), mFiltering(TFO_BILINEAR),
    10 mAniso(1), mSceneDetailIndex(0), mMoveSpeed(300), mRotateSpeed(36), mDebugOverlay(0),
     8mStatsOn(true), mNumScreenShots(0),
     9mTimeUntilNextToggle(0), mFiltering(TFO_BILINEAR),
     10mAniso(1), mSceneDetailIndex(0), mDebugOverlay(0),
    1111mInputManager(0), mMouse(0), mKeyboard(0), mJoy(0)
    1212{
     
    9090       
    9191        mScene->tick(time, deltaTime);
     92        mShip->tick(time, deltaTime);
    9293
    9394        using namespace OIS;
     
    108109                if (mTimeUntilNextToggle >= 0)
    109110                        mTimeUntilNextToggle -= deltaTime;
    110 
    111                 // If this is the first frame, pick a speed
    112                 if (deltaTime == 0)
    113                 {
    114                         mMoveScale = 1;
    115                         mRotScale = 0.1;
    116                 }
    117                 // Otherwise scale movement units by time passed since last frame
    118                 else
    119                 {
    120                         // Move about 100 units per second,
    121                         mMoveScale = mMoveSpeed * deltaTime;
    122                         // Take about 10 seconds for full rotation
    123                         mRotScale = mRotateSpeed * deltaTime;
    124                 }
    125                 mRotX = 0;
    126                 mRotY = 0;
    127                 mTranslateVector = Ogre::Vector3::ZERO;
    128111        }
    129112
     
    136119                        return false;
    137120
    138         if( !mMouse->buffered() || !mKeyboard->buffered() || !buffJ )
    139                 moveCamera();
    140 
    141121        return true;
    142122}
     
    179159        using namespace OIS;
    180160
    181         if(mKeyboard->isKeyDown(KC_A))
    182                 mTranslateVector.x = -mMoveScale;       // Move camera left
    183 
    184         if(mKeyboard->isKeyDown(KC_D))
    185                 mTranslateVector.x = mMoveScale;        // Move camera RIGHT
     161        if(mKeyboard->isKeyDown(KC_A) || mKeyboard->isKeyDown(KC_LEFT))
     162                mShip->setSideThrust(1);
     163        else if(mKeyboard->isKeyDown(KC_D) || mKeyboard->isKeyDown(KC_RIGHT))
     164                mShip->setSideThrust(-1);
     165        else
     166                mShip->setSideThrust(0);
    186167
    187168        if(mKeyboard->isKeyDown(KC_UP) || mKeyboard->isKeyDown(KC_W) )
    188                 mTranslateVector.z = -mMoveScale;       // Move camera forward
    189 
    190         if(mKeyboard->isKeyDown(KC_DOWN) || mKeyboard->isKeyDown(KC_S) )
    191                 mTranslateVector.z = mMoveScale;        // Move camera backward
    192 
    193         if(mKeyboard->isKeyDown(KC_PGUP))
    194                 mTranslateVector.y = mMoveScale;        // Move camera up
    195 
    196         if(mKeyboard->isKeyDown(KC_PGDOWN))
    197                 mTranslateVector.y = -mMoveScale;       // Move camera down
    198 
    199         if(mKeyboard->isKeyDown(KC_RIGHT))
    200                 mCamera->yaw(-mRotScale);
    201 
    202         if(mKeyboard->isKeyDown(KC_LEFT))
    203                 mCamera->yaw(mRotScale);
     169                mShip->setThrust(1);
     170        else if(mKeyboard->isKeyDown(KC_DOWN) || mKeyboard->isKeyDown(KC_S) )
     171                mShip->setThrust(-1);
     172        else
     173                mShip->setThrust(0);
    204174
    205175        if( mKeyboard->isKeyDown(KC_ESCAPE) || mKeyboard->isKeyDown(KC_Q) )
     
    269239        // Print camera details
    270240        if(displayCameraDetails)
    271                 mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) +
    272                 " " + "O: " + StringConverter::toString(mCamera->getDerivedOrientation());
     241                mDebugText = StringConverter::toString(mShip->getThrust())
     242                + " | Speed = " + StringConverter::toString(mShip->speed);
     243                // mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) +
     244                // " " + "O: " + StringConverter::toString(mCamera->getDerivedOrientation());
    273245
    274246        // Return true to continue rendering
     
    284256        // 2nd mouse button - slide, otherwise rotate
    285257        const MouseState &ms = mMouse->getMouseState();
    286         mRotX = Degree(-ms.X.rel * 0.13);
    287         mRotY = Degree(-ms.Y.rel * 0.13);
    288 
    289         mShip->setYaw(mRotX);
    290         mShip->setPitch(mRotY);
     258
     259        mShip->setYaw(Degree(-ms.X.rel * 0.13));
     260        mShip->setPitch(Degree(-ms.Y.rel * 0.13));
    291261
    292262        return true;
    293 }
    294 
    295 
    296 void RunManager::moveCamera()
    297 {
    298         // Make all the changes to the camera
    299         // Note that YAW direction is around a fixed axis (freelook style) rather than a natural YAW
    300         //(e.g. airplane)
    301         //mCamera->yaw(mRotX);
    302         //mCamera->pitch(mRotY);
    303         //mCamera->moveRelative(mTranslateVector);
    304 
    305         mShipNode->translate(mShipNode->getLocalAxes() * mTranslateVector);
    306263}
    307264
Note: See TracChangeset for help on using the changeset viewer.