Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 28, 2008, 5:09:14 PM (16 years ago)
Author:
rgrieder
Message:

reverted r1833: SpaceShip was split up

Location:
code/branches/orxonox_tutorial/src/orxonox/objects
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/orxonox_tutorial/src/orxonox/objects/SpaceShip.cc

    r1833 r1850  
    2727 */
    2828
     29#include "OrxonoxStableHeaders.h"
    2930#include "SpaceShip.h"
    30 #include "SpaceShip_backend.cc"
     31
     32#include <OgreCamera.h>
     33#include <OgreRenderWindow.h>
     34#include <OgreParticleSystem.h>
     35#include <OgreSceneNode.h>
     36
     37#include "util/Convert.h"
     38#include "util/Math.h"
     39#include "util/Debug.h"
     40#include "core/CoreIncludes.h"
     41#include "core/ConfigValueIncludes.h"
     42#include "core/Iterator.h"
     43#include "core/input/InputManager.h"
     44#include "core/XMLPort.h"
     45#include "core/ConsoleCommand.h"
     46#include "tools/ParticleInterface.h"
     47#include "network/Client.h"
     48#include "Backlight.h"
     49#include "CameraHandler.h"
     50#include "ParticleSpawner.h"
     51#include "Settings.h"
     52#include "RotatingProjectile.h"
     53#include "ParticleProjectile.h"
     54#include "GraphicsEngine.h"
     55#include "SpaceShipAI.h"
    3156
    3257namespace orxonox
    3358{
    34    
     59    SetConsoleCommand(SpaceShip, setMaxSpeedTest, false).accessLevel(AccessLevel::Debug);
     60    SetConsoleCommand(SpaceShip, whereAmI, true).accessLevel(AccessLevel::User);
     61    SetConsoleCommand(SpaceShip, moveLongitudinal, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     62    SetConsoleCommand(SpaceShip, moveLateral, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     63    SetConsoleCommand(SpaceShip, moveYaw, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     64    SetConsoleCommand(SpaceShip, movePitch, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     65    SetConsoleCommand(SpaceShip, moveRoll, true).accessLevel(AccessLevel::User).defaultValue(0, 1.0f).axisParamIndex(0).keybindMode(KeybindMode::OnHold);
     66    SetConsoleCommand(SpaceShip, fire, true).accessLevel(AccessLevel::User).keybindMode(KeybindMode::OnHold);
     67    SetConsoleCommandAliasMulti(SpaceShip, setMaxSpeedTest, "setMaxSpeed", 1, false).accessLevel(AccessLevel::Debug);
     68    SetConsoleCommandAliasMulti(SpaceShip, setMaxSpeedTest, "setMaxBlubber", 2, false).accessLevel(AccessLevel::Debug);
     69    SetConsoleCommandAliasMulti(SpaceShip, setMaxSpeedTest, "setRofl", 3, false).accessLevel(AccessLevel::Debug);
     70
     71    CreateFactory(SpaceShip);
     72
     73    SpaceShip* SpaceShip::instance_s;
     74
     75
     76    SpaceShip *SpaceShip::getLocalShip(){
     77      ObjectList<SpaceShip>::iterator it;
     78      for(it = ObjectList<SpaceShip>::begin(); it; ++it){
     79        assert(it->isA(Class(SpaceShip)));
     80        if( (it)->myShip_ || (network::Host::running() && network::Host::getShipID()==(it)->objectID) ){
     81//        COUT(1) << "^^^^^^^^^^ myShip_:" << *it << " classname: " << (*it)->getIdentifier()->getName() << " objectid: " << (*it)->objectID << std::endl;
     82          return *it;
     83        }
     84      }
     85      return 0;
     86    }
     87
    3588    SpaceShip::SpaceShip()
    3689    {
     
    116169    }
    117170
    118    
     171    bool SpaceShip::create()
     172    {
     173        if (!myShip_)
     174        {
     175            if (network::Host::running())
     176                //COUT(3) << "this id: " << this->objectID << " myShipID: " << network::Host::getShipID() << std::endl;
     177                if (network::Host::running() && objectID == network::Host::getShipID())
     178                {
     179                    if (!network::Host::isServer())
     180                        setObjectMode(0x3);
     181                    myShip_ = true;
     182                }
     183        }
     184        else
     185            this->setRadarObjectColour(this->getProjectileColour());
     186        assert(Model::create());
     187        this->init();
     188        return true;
     189    }
     190
     191    void SpaceShip::registerAllVariables()
     192    {
     193        registerVar( &camName_, camName_.length()+1, network::STRING, 0x1 );
     194        registerVar( &maxSpeed_, sizeof(maxSpeed_), network::DATA, 0x1);
     195        registerVar( &maxSideAndBackSpeed_, sizeof(maxSideAndBackSpeed_), network::DATA, 0x1);
     196        registerVar( &maxRotation_, sizeof(maxRotation_), network::DATA, 0x1);
     197        registerVar( &translationAcceleration_, sizeof(translationAcceleration_), network::DATA, 0x1);
     198        registerVar( &rotationAcceleration_, sizeof(rotationAcceleration_), network::DATA, 0x1);
     199        registerVar( &rotationAccelerationRadian_, sizeof(rotationAccelerationRadian_), network::DATA, 0x1);
     200        registerVar( &translationDamping_, sizeof(translationDamping_), network::DATA, 0x1);
     201        registerVar( &rotationDamping_, sizeof(rotationDamping_), network::DATA, 0x1);
     202        registerVar( &rotationDampingRadian_, sizeof(rotationDampingRadian_), network::DATA, 0x1);
     203    }
     204
    119205    void SpaceShip::init()
    120206    {
     
    218304    }
    219305
    220    
     306    void SpaceShip::changedVisibility()
     307    {
     308        SUPER(SpaceShip, changedVisibility);
     309
     310        this->tt1_->setEnabled(this->isVisible());
     311        this->tt2_->setEnabled(this->isVisible());
     312        this->redBillboard_.setVisible(this->isVisible());
     313        this->greenBillboard_.setVisible(this->isVisible());
     314        this->crosshairNear_.setVisible(this->isVisible());
     315        this->crosshairFar_.setVisible(this->isVisible());
     316        this->rightThrusterFlare_.setVisible(this->isVisible());
     317        this->leftThrusterFlare_.setVisible(this->isVisible());
     318        this->smoke_->setVisible(this->isVisible());
     319        this->fire_->setVisible(this->isVisible());
     320        this->backlight_->setVisible(this->isVisible());
     321    }
     322
     323    void SpaceShip::changedActivity()
     324    {
     325        SUPER(SpaceShip, changedActivity);
     326
     327        this->tt1_->setEnabled(this->isVisible());
     328        this->tt2_->setEnabled(this->isVisible());
     329        this->redBillboard_.setVisible(this->isVisible());
     330        this->greenBillboard_.setVisible(this->isVisible());
     331        this->crosshairNear_.setVisible(this->isVisible());
     332        this->crosshairFar_.setVisible(this->isVisible());
     333        this->rightThrusterFlare_.setVisible(this->isVisible());
     334        this->leftThrusterFlare_.setVisible(this->isVisible());
     335    }
     336
     337    void SpaceShip::setCamera(const std::string& camera)
     338    {
     339      camName_=camera;
     340      // change camera attributes here, if you want to ;)
     341    }
     342
     343    void SpaceShip::getFocus(){
     344      COUT(4) << "requesting focus" << std::endl;
     345      //if(!network::Host::running() || network::Host::getShipID()==objectID)
     346      if(myShip_)
     347        CameraHandler::getInstance()->requestFocus(cam_);
     348
     349    }
     350
     351    Camera* SpaceShip::getCamera(){
     352        return cam_;
     353    }
     354
     355    void SpaceShip::createCamera(){
     356//       COUT(4) << "begin camera creation" << std::endl;
     357      this->camNode_ = this->getNode()->createChildSceneNode(camName_);
     358      COUT(4) << "position: (this)" << this->getNode()->getPosition() << std::endl;
     359      this->camNode_->setPosition(Vector3(-25,0,5));
     360//      Quaternion q1 = Quaternion(Radian(Degree(90)),Vector3(0,-1,0));
     361//      Quaternion q2 = Quaternion(Radian(Degree(90)),Vector3(0,0,-1));
     362//      camNode_->setOrientation(q1*q2);
     363      COUT(4) << "position: (cam)" << this->camNode_->getPosition() << std::endl;
     364      cam_ = new Camera(this->camNode_);
     365
     366      cam_->setTargetNode(this->getNode());
     367//        cam->setPosition(Vector3(0,-350,0));
     368//      Quaternion q1 = Quaternion(Radian(Degree(90)),Vector3(0,0,1));
     369//      Quaternion q2 = Quaternion(Radian(Degree(90)),Vector3(0,1,0));
     370      Quaternion q1 = Quaternion(Radian(Degree(90)),Vector3(0,-1,0));
     371      Quaternion q2 = Quaternion(Radian(Degree(90)),Vector3(1,0,0));
     372
     373       this->camNode_->setOrientation(q2*q1);
     374      //if(!network::Host::running() || network::Host::getShipID()==objectID){ //TODO: check this
     375      if(myShip_){
     376        COUT(4) << "requesting focus for camera" << std::endl;
     377        //CameraHandler::getInstance()->requestFocus(cam_);
     378        if(this->isExactlyA(Class(SpaceShip))){
     379          getFocus();
     380          COUT(4) << "getting focus for obj id: " << objectID << std::endl;
     381        }else
     382          COUT(4) << "not getting focus (not exactly spaceship) for obj id: " << objectID << std::endl;
     383      }else
     384        COUT(4) << "not getting focus (not my ship) for obj id: " << objectID << std::endl;
     385    }
     386
     387    void SpaceShip::setMaxSpeed(float value)
     388    { this->maxSpeed_ = value; }
     389    void SpaceShip::setMaxSideAndBackSpeed(float value)
     390    { this->maxSideAndBackSpeed_ = value; }
     391    void SpaceShip::setMaxRotation(float value)
     392    { this->maxRotation_ = value; this->maxRotationRadian_ = Radian(value); }
     393    void SpaceShip::setTransAcc(float value)
     394    { this->translationAcceleration_ = value; }
     395    void SpaceShip::setRotAcc(float value)
     396    { this->rotationAcceleration_ = value; this->rotationAccelerationRadian_ = Radian(value); }
     397    void SpaceShip::setTransDamp(float value)
     398    { this->translationDamping_ = value; }
     399    void SpaceShip::setRotDamp(float value)
     400    { this->rotationDamping_ = value; this->rotationDampingRadian_ = Radian(value); }
     401
    221402    /**
    222403        @brief XML loading and saving.
     
    244425    }
    245426
    246    
     427    std::string SpaceShip::whereAmI() {
     428        return getConvertedValue<float, std::string>(SpaceShip::getLocalShip()->getPosition().x)
     429        + "  " + getConvertedValue<float, std::string>(SpaceShip::getLocalShip()->getPosition().y)
     430        + "  " + getConvertedValue<float, std::string>(SpaceShip::getLocalShip()->getPosition().z);
     431    }
    247432
    248433    void SpaceShip::tick(float dt)
Note: See TracChangeset for help on using the changeset viewer.