Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 31, 2007, 11:16:00 AM (17 years ago)
Author:
rgrieder
Message:
 
Location:
code/branches/main_reto/src
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/main_reto/src/OrxonoxShip.cpp

    r130 r133  
    33
    44OrxonoxShip::OrxonoxShip(SceneManager *mSceneMgr, SceneNode *mNode)
    5         : mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100), thrust(0), sideThrust(0)
     5        : mSceneMgr(mSceneMgr), mRootNode(mNode), speed(Vector3(0, 0, 0)), baseThrust(100), thrust(0), sideThrust(0), n(0),
     6        bulletSpeed(400)
    67{
    78}
     
    1920
    2021        // create the "space ship" (currently a fish..)
     22        // TODO: names must be unique!
    2123        mShip = mSceneMgr->createEntity("Ship", "fish.mesh");
    2224        SceneNode *fishNode = mRootNode->createChildSceneNode("fishNode");
     
    5961}
    6062
     63Bullet* OrxonoxShip::fire()
     64{
     65        // TODO: Names must be unique!
     66        SceneNode *temp = mRootNode->getParentSceneNode()->createChildSceneNode("BulletNode" + StringConverter::toString(n));
     67        temp->setOrientation(mRootNode->getOrientation());
     68        temp->setPosition(mRootNode->getPosition());
     69        temp->setScale(Vector3(1, 1, 1) * 10);
     70        temp->yaw(Degree(-90));
     71        return new Bullet(temp,
     72                mSceneMgr->createEntity("bullet" + StringConverter::toString(n++), "Barrel.mesh"),
     73                speed + (mRootNode->getLocalAxes() * Vector3(0, 0, -1)).normalisedCopy() * bulletSpeed);
     74}
    6175
    6276bool OrxonoxShip::tick(unsigned long time, float deltaTime)
  • code/branches/main_reto/src/RunManager.cpp

    r130 r133  
    55RunManager::RunManager(OgreControl * mOgre, bool bufferedKeys, bool bufferedMouse,
    66                                           bool bufferedJoy ) :
    7 mOgre(mOgre), mWindow(mOgre->getRenderWindow()),
     7mOgre(mOgre), mWindow(mOgre->getRenderWindow()), leftButtonDown(false),
    88mStatsOn(true), mNumScreenShots(0),
    99mTimeUntilNextToggle(0), mFiltering(TFO_BILINEAR),
     
    3535        // Set default mipmap level (NB some APIs ignore this)
    3636        TextureManager::getSingleton().setDefaultNumMipmaps(5);
     37
     38        // initialise bullets list
     39        mBullets = new Bullet*[10];
     40        mBulletsPosition = 0;
     41        mBulletsSize = 10;
    3742
    3843        using namespace OIS;
     
    7984        if (mScene)
    8085                delete mScene;
     86
     87        for (int i = 0; i < mBulletsPosition; i++)
     88                delete mBullets[i];
     89        delete mBullets;
    8190}
    8291
     
    91100        mScene->tick(time, deltaTime);
    92101        mShip->tick(time, deltaTime);
     102
     103        // update the bullet positions
     104        for (int i = 0; i < mBulletsPosition; i++)
     105        {
     106                mBullets[i]->mNode->translate(mBullets[i]->mSpeed*deltaTime);
     107                mBullets[i]->mNode->yaw(Degree(deltaTime*100));
     108                mBullets[i]->mNode->roll(Degree(deltaTime*300));
     109        }
    93110
    94111        using namespace OIS;
     
    257274        const MouseState &ms = mMouse->getMouseState();
    258275
     276        if (ms.buttonDown(MB_Left) && !leftButtonDown)
     277        {
     278                leftButtonDown = true;
     279                // fire
     280                Bullet *mTempBullet = mShip->fire();
     281                if (mBulletsPosition >= mBulletsSize)
     282                {
     283                        // redimension the array
     284                        Bullet **mTempArray = new Bullet*[2*mBulletsSize];
     285                        for (int i = 0; i < mBulletsSize; i++)
     286                                mTempArray[i] = mBullets[i];
     287                        mBulletsSize *= 2;
     288                        delete mBullets;
     289                        mBullets = mTempArray;
     290                }
     291                mBullets[mBulletsPosition++] = mTempBullet;
     292
     293        }
     294        else if (!ms.buttons)
     295                leftButtonDown = false;
     296
    259297        mShip->setYaw(Degree(-ms.X.rel * 0.13));
    260298        mShip->setPitch(Degree(-ms.Y.rel * 0.13));
Note: See TracChangeset for help on using the changeset viewer.