Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 7, 2007, 9:51:31 PM (16 years ago)
Author:
rgrieder
Message:
  • InertialNode bare construct written
  • Orxonox starts and one can make barrels fly correctly
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/main_reto_vs05/src/orxonox_ship.cc

    r177 r189  
    3434#include "bullet.h"
    3535#include "bullet_manager.h"
     36#include "inertial_node.h"
     37#include "weapon_manager.h"
    3638
    3739#include "orxonox_ship.h"
    38 #include "weapon_manager.h"
    3940
    4041
    4142namespace orxonox {
    4243  using namespace Ogre;
     44  using namespace weapon;
    4345
    4446  /**
     
    6567  OrxonoxShip::OrxonoxShip(SceneManager *sceneMgr, SceneNode *node,
    6668        BulletManager *bulletManager)
    67               : sceneMgr_(sceneMgr), rootNode_(node), currentSpeed_(Vector3(0, 0, 0)),
     69              : sceneMgr_(sceneMgr), //currentSpeed_(Vector3(0, 0, 0)),
    6870        baseThrust_(1000), currentThrust_(Vector3::ZERO),
    6971        objectCounter_(0), bulletManager_(bulletManager)//, bulletSpeed_(400)
    7072  {
     73    rootNode_ = new InertialNode(node, Vector3::ZERO);
    7174  }
    7275
     
    8083    if (mainWeapon_)
    8184      delete mainWeapon_;
     85    if (rootNode_)
     86      delete rootNode_;
    8287  }
    8388
     
    99104          // TODO: names must be unique! use static variables..
    100105          shipEntity_ = sceneMgr_->createEntity("Ship", "fish.mesh");
    101           SceneNode *fishNode = rootNode_->createChildSceneNode("fishNode");
    102           fishNode->yaw(Degree(-90));
    103           fishNode->attachObject(shipEntity_);
    104           fishNode->setScale(Vector3(10, 10, 10));
     106          InertialNode *fishNode = rootNode_->createChildNode();
     107    fishNode->getSceneNode()->yaw(Degree(-90));
     108          fishNode->getSceneNode()->attachObject(shipEntity_);
     109          fishNode->getSceneNode()->setScale(Vector3(10, 10, 10));
    105110
    106111    // initialise weapon(s)
    107     SceneNode *mainWeaponNode = rootNode_
    108           ->createChildSceneNode("mainWeaponNode");
     112    InertialNode *mainWeaponNode = rootNode_->createChildNode();
    109113    mainWeapon_ = new WeaponManager(sceneMgr_, mainWeaponNode,
    110114          bulletManager_, 1);
     
    154158  void OrxonoxShip::turnUpAndDown(const Radian &angle)
    155159  {
    156     rootNode_->pitch(-angle, Node::TS_LOCAL);
     160    rootNode_->getSceneNode()->pitch(-angle, Node::TS_LOCAL);
    157161  }
    158162
     
    164168  void OrxonoxShip::turnLeftAndRight(const Radian &angle)
    165169  {
    166     rootNode_->yaw(-angle, Node::TS_PARENT);
     170    rootNode_->getSceneNode()->yaw(-angle, Node::TS_PARENT);
    167171  }
    168172
     
    174178  Vector3 OrxonoxShip::getSpeed()
    175179  {
    176     return currentSpeed_;
     180    return rootNode_->getSpeed();
    177181  }
    178182
     
    181185  * @return The Root Node.
    182186  */
    183   SceneNode* OrxonoxShip::getRootNode()
     187  InertialNode* OrxonoxShip::getRootNode()
    184188  {
    185189    return rootNode_;
     
    195199  void OrxonoxShip::fire()
    196200  {
    197           // TODO: Names must be unique!
    198           /*SceneNode *temp = rootNode_->getParentSceneNode()->createChildSceneNode(
    199           "BulletNode" + StringConverter::toString(objectCounter_));
    200           temp->setOrientation(rootNode_->getOrientation());
    201           temp->setPosition(rootNode_->getPosition());
    202           temp->setScale(Vector3(1, 1, 1) * 10);
    203           temp->yaw(Degree(-90));
    204           return new Bullet(temp, sceneMgr_->createEntity("bullet"
    205           + StringConverter::toString(objectCounter_++), "Barrel.mesh"), currentSpeed_
    206           + (rootNode_->getOrientation() * Vector3(0, 0, -1)).normalisedCopy()
    207           * bulletSpeed_);*/
    208 
    209201    mainWeapon_->primaryFireRequest();
    210202  }
     
    222214    mainWeapon_->tick(time, deltaTime);
    223215
    224     Quaternion quad = rootNode_->getOrientation();
     216    Quaternion quad = rootNode_->getSceneNode()->getOrientation();
    225217    quad.normalise();
    226     currentSpeed_ += quad * (Vector3(-1, -1, -1) * currentThrust_) * deltaTime;
    227 
    228           rootNode_->translate(currentSpeed_ * deltaTime);
     218    rootNode_->addSpeed(quad * (Vector3(-1, -1, -1) * currentThrust_) * deltaTime);
     219
     220    rootNode_->getSceneNode()->translate(rootNode_->getSpeed() * deltaTime);
    229221
    230222          return true;
Note: See TracChangeset for help on using the changeset viewer.