Changeset 189 for code/branches/main_reto_vs05/src/orxonox_ship.cc
- Timestamp:
- Nov 7, 2007, 9:51:31 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/main_reto_vs05/src/orxonox_ship.cc
r177 r189 34 34 #include "bullet.h" 35 35 #include "bullet_manager.h" 36 #include "inertial_node.h" 37 #include "weapon_manager.h" 36 38 37 39 #include "orxonox_ship.h" 38 #include "weapon_manager.h"39 40 40 41 41 42 namespace orxonox { 42 43 using namespace Ogre; 44 using namespace weapon; 43 45 44 46 /** … … 65 67 OrxonoxShip::OrxonoxShip(SceneManager *sceneMgr, SceneNode *node, 66 68 BulletManager *bulletManager) 67 : sceneMgr_(sceneMgr), rootNode_(node),currentSpeed_(Vector3(0, 0, 0)),69 : sceneMgr_(sceneMgr), //currentSpeed_(Vector3(0, 0, 0)), 68 70 baseThrust_(1000), currentThrust_(Vector3::ZERO), 69 71 objectCounter_(0), bulletManager_(bulletManager)//, bulletSpeed_(400) 70 72 { 73 rootNode_ = new InertialNode(node, Vector3::ZERO); 71 74 } 72 75 … … 80 83 if (mainWeapon_) 81 84 delete mainWeapon_; 85 if (rootNode_) 86 delete rootNode_; 82 87 } 83 88 … … 99 104 // TODO: names must be unique! use static variables.. 100 105 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)); 105 110 106 111 // initialise weapon(s) 107 SceneNode *mainWeaponNode = rootNode_ 108 ->createChildSceneNode("mainWeaponNode"); 112 InertialNode *mainWeaponNode = rootNode_->createChildNode(); 109 113 mainWeapon_ = new WeaponManager(sceneMgr_, mainWeaponNode, 110 114 bulletManager_, 1); … … 154 158 void OrxonoxShip::turnUpAndDown(const Radian &angle) 155 159 { 156 rootNode_-> pitch(-angle, Node::TS_LOCAL);160 rootNode_->getSceneNode()->pitch(-angle, Node::TS_LOCAL); 157 161 } 158 162 … … 164 168 void OrxonoxShip::turnLeftAndRight(const Radian &angle) 165 169 { 166 rootNode_-> yaw(-angle, Node::TS_PARENT);170 rootNode_->getSceneNode()->yaw(-angle, Node::TS_PARENT); 167 171 } 168 172 … … 174 178 Vector3 OrxonoxShip::getSpeed() 175 179 { 176 return currentSpeed_;180 return rootNode_->getSpeed(); 177 181 } 178 182 … … 181 185 * @return The Root Node. 182 186 */ 183 SceneNode* OrxonoxShip::getRootNode()187 InertialNode* OrxonoxShip::getRootNode() 184 188 { 185 189 return rootNode_; … … 195 199 void OrxonoxShip::fire() 196 200 { 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 209 201 mainWeapon_->primaryFireRequest(); 210 202 } … … 222 214 mainWeapon_->tick(time, deltaTime); 223 215 224 Quaternion quad = rootNode_->get Orientation();216 Quaternion quad = rootNode_->getSceneNode()->getOrientation(); 225 217 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); 229 221 230 222 return true;
Note: See TracChangeset
for help on using the changeset viewer.