Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5915 in orxonox.OLD


Ignore:
Timestamp:
Dec 4, 2005, 3:34:36 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: merged branches/spaceshipControll back to the trunk:
merged with command:
svn merge -r5835:HEAD branches/spaceshipcontroll trunk
conflicts resolved with dynamic indentation methodology algorithms

Location:
trunk/src
Files:
21 edited
5 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/Makefile.am

    r5766 r5915  
    4747                  world_entities/world_entity.cc \
    4848                  world_entities/camera.cc \
     49                  world_entities/playable.cc \
    4950                  world_entities/player.cc \
    5051                  world_entities/npcs/npc.cc \
     
    7677                  world_entities/power_ups/turret_power_up.cc \
    7778                  world_entities/power_ups/laser_power_up.cc \
     79                  world_entities/space_ships/space_ship.cc \
    7880                  subprojects/benchmark.cc
    7981
     
    8789                 world_entities/world_entity.h \
    8890                 world_entities/camera.h \
     91                 world_entities/playable.h \
    8992                 world_entities/player.h \
    9093                 world_entities/npcs/npc.h \
  • trunk/src/defs/class_id.h

    r5862 r5915  
    5757  // superclasses
    5858  CL_MASK_SUPER_CLASS           =    0xff000000,
    59   CL_BASE_OBJECT                =    0xff000000,
     59  CL_BASE_OBJECT                =    0x00000000,
    6060
    6161  CL_PARENT_NODE                =    0x01000000,
     
    6969  CL_ELEMENT_2D                 =    0x10000000,
    7070
    71   CL_SYNCHRONIZEABLE             =    0x20000000,
     71  CL_SYNCHRONIZEABLE            =    0x20000000,
    7272
    7373  CL_WORLD_ENTITY               =    0x40000000,
    7474
    75 
     75  // subsuper-classes derivations taken : 1, 2, 5, a, b, c.     << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
    7676  // subsuper-classes
    7777  CL_MASK_SUBSUPER_CLASS        =    0x00fff000,
    78   CL_MASK_SUBSUPER_CLASS_ID     =    0x00f00000,
    79   CL_MASK_SUBSUPER_CLASS_ID2    =    0x000ff000,
    80   CL_PLAYER                     =    0x00101000,
    81   CL_NPC                        =    0x00102000,
    82   CL_POWER_UP                   =    0x00104000,
    83   CL_FIELD                      =    0x00108000,
    84   CL_PROJECTILE                 =    0x00110000,
    85   CL_WEAPON                     =    0x00120000,
    86 
    87   // subsuper-classes derivations taken : 1, 5, a, b, c.     << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
     78  CL_MASK_SUBSUPER_CLASS_IDA    =    0x00f00000,
     79  CL_MASK_SUBSUPER_CLASS_IDB    =    0x000ff000,
     80  // SUPER-PNodes
     81  CL_FIELD                      =    0x00101000,
     82  // SUPER-WorldEntities
     83  CL_PLAYABLE                   =    0x00201000,
     84  CL_PLAYER                     =    0x00202000,
     85  CL_NPC                        =    0x00204000,
     86  CL_PROJECTILE                 =    0x00208000,
     87  CL_WEAPON                     =    0x00210000,
     88  CL_POWER_UP                   =    0x00220000,
     89
     90  // SUPER-Modeling
     91  CL_TEXTURE                    =    0x00c01000,
     92  CL_MODEL                      =    0x00c02000,
     93
     94
     95  // subsuper-classes derivations taken : 1, 2, 5, a, b, c.     << THIS IS A LIST OF ALL THE DCL_MASK_SUBSUPERCLASS_ID's taken
    8896
    8997  // lowest level classes
     
    120128
    121129
     130
    122131  // StoryEntities (range from 0x00000100 to 0x000001ff)
    123132  CL_CAMPAIGN                   =    0x00000101,
     
    135144  CL_TERRAIN                    =    0x00000207,
    136145  CL_TEST_ENTITY                =    0x00000209,
     146  CL_SPACE_SHIP                 =    0x0000020a,
    137147
    138148  CL_TURRET_POWER_UP            =    0x00000211,
     
    177187
    178188  // graphical stuff (range from 0x00000800 to 0x000009ff)
    179   CL_TEXTURE                    =    0x00c01000,
     189  CL_FONT                       =    0x00c02802,
     190
     191
    180192  CL_TEXT                       =    0x00b01801,
    181   CL_FONT                       =    0x00c02802,
    182193  CL_MATERIAL                   =    0x00000804,
    183194  CL_TEXTURE_SEQUENCE           =    0x00c04805,
    184   CL_MODEL                      =    0x00000806, //!< @todo make this a SUBCLASS maybe
    185195  CL_OBJMODEL                   =    0x00000807,
    186196  CL_PROMITIVE_MODEL            =    0x00000808,
  • trunk/src/lib/collision_detection/cd_engine.cc

    r5134 r5915  
    2424#include "world_entity.h"
    2525#include "terrain.h"
    26 #include "player.h"
     26// #include "player.h"
    2727
    2828#include "spatial_separation.h"
     
    119119    Quadtree* q = this->terrain->ssp->getQuadtree();
    120120
    121     QuadtreeNode* n = q->getQuadtreeFromPosition(this->player->getAbsCoor());
     121//    QuadtreeNode* n = q->getQuadtreeFromPosition(this->player->getAbsCoor());
    122122  }
    123123  //sTriangleExt* tri = q->getTriangleFromPosition(this->player->getAbsCoor());
  • trunk/src/lib/collision_detection/cd_engine.h

    r5039 r5915  
    1717class OBBTree;
    1818class Terrain;
    19 class Player;
     19//class Player;
    2020
    2121
     
    5151  inline void setEntityList(tList<WorldEntity>* entityList) { this->entityList = entityList; }
    5252  inline void setTerrain(Terrain* terrain) { this->terrain = terrain; }
    53   inline void setPlayer(Player* player) { this->player = player; } /* only for debug purposes \todo: delete*/
     53  //  inline void setPlayer(Player* player) { this->player = player; } /* only for debug purposes \todo: delete*/
    5454
    5555  void drawBV(int depth, int drawMode) const;
     
    7979
    8080  Terrain*                terrain;                          //!< this it a ref to the terrain, serving as a ground for all WE
    81   Player*                 player;
     81//  Player*                 player;
    8282};
    8383
  • trunk/src/lib/coord/p_node.cc

    r5819 r5915  
    428428
    429429  this->bias = bias;
     430  this->bRelDirChanged = true;
    430431}
    431432
     
    836837        glEnd();
    837838      }
     839
    838840      /* if we want to draw the children too */
    839841      if (depth == 0) /* -> all of them */
  • trunk/src/lib/coord/p_node.h

    r5770 r5915  
    7676  inline const Vector& getRelCoor () const { return this->prevRelCoordinate; };
    7777  /** @returns the Relative Coordinate Destination */
    78   inline const Vector& getRelCoorSoft2D() const { return (this->toCoordinate)?*this->toCoordinate:this->relCoordinate; };
     78  inline const Vector& getRelCoorSoft2D() const { return (this->toCoordinate)? *this->toCoordinate : this->relCoordinate; };
    7979  void setAbsCoor (const Vector& absCoord);
    8080  void setAbsCoor (float x, float y, float z);
     
    9393  inline const Quaternion& getRelDir () const { return this->prevRelDirection; };
    9494  /** @returns the Relative Directional Destination */
    95   inline const Quaternion& getRelDirSoft2D() const { return (this->toDirection)?*this->toDirection:this->relDirection; };
     95  inline const Quaternion& getRelDirSoft2D() const { return (this->toDirection)? *this->toDirection : this->relDirection; };
    9696  /** @returns a Vector pointing into the relative Direction */
    9797  inline Vector getRelDirV() const { return this->prevRelDirection.apply(Vector(0,1,0)); };
     
    100100  void setAbsDirSoft(const Quaternion& absDirSoft, float bias = 1.0);
    101101  void setAbsDirSoft(float x, float y, float z, float bias = 1.0);
     102  void shiftDir (const Quaternion& shift);
    102103  /** @returns the absolute Direction */
    103104  inline const Quaternion& getAbsDir () const { return this->absDirection; };
    104105  /** @returns a Vector pointing into the absolute Direction */
    105106  inline Vector getAbsDirV() const { return this->absDirection.apply(Vector(0,1,0)); };
    106   void shiftDir (const Quaternion& shift);
     107  /** @returns A Vector pointing into the forward direction (X) of the Node */
     108  inline Vector getAbsDirX() const { return this->absDirection.apply(Vector(1,0,0)); };
     109  /** @returns A Vector pointing into the upward direction (Y) of the Node */
     110  inline Vector getAbsDirY() const { return this->absDirection.apply(Vector(0,1,0)); };
     111  /** @returns A Vector pointing into the right direction (Z) of the Node */
     112  inline Vector getAbsDirZ() const { return this->absDirection.apply(Vector(0,0,1)); };
    107113
    108114  /** @returns the Speed of the Node */
  • trunk/src/lib/event/key_mapper.cc

    r5474 r5915  
    2121#include "key_mapper.h"
    2222
     23#include "event_def.h"
     24
    2325#include "globals.h"
    2426#include "ini_parser.h"
    2527#include "key_names.h"
    2628#include "debug.h"
     29
    2730
    2831using namespace std;
     
    191194      {
    192195        if( index[0] == 0)
    193         {
     196        {
    194197          *map[i].pValue = index[1];
    195198          PRINTF(4)("Mapping %s to '%s' (id %i)\n", name, SDLKToKeyname(index[1]), index[1]);
    196199          break;
    197         }
    198         else {
     200        }
     201        else {
    199202          *map[i].pValue = index[1];
    200203          PRINTF(4)("Mapping %s to '%s' (id %i)\n", name, SDLBToButtonname(index[1]), index[1]);
    201204          break;
    202         }
     205        }
    203206      }
    204207    }
  • trunk/src/lib/event/key_mapper.h

    r5819 r5915  
    1010
    1111#include "base_object.h"
    12 #include "event_def.h"
     12//#include "event_def.h"
    1313
    1414class IniParser;
     
    6666
    6767 private:
    68   Sint32     coord[2];              //!< temp place to save variables in nameToIndex() function
     68  int         coord[2];              //!< temp place to save variables in nameToIndex() function
    6969};
    7070
  • trunk/src/lib/lang/base_object.cc

    r5791 r5915  
    112112  else if (classID & CL_MASK_SUBSUPER_CLASS)
    113113  {
    114     if (likely(((this->classID & CL_MASK_SUBSUPER_CLASS_ID) == (this->classID & CL_MASK_SUBSUPER_CLASS_ID)) &&
    115         this->classID & classID & CL_MASK_SUBSUPER_CLASS_ID2))
     114    if (likely(((this->classID & CL_MASK_SUBSUPER_CLASS_IDA) == (this->classID & CL_MASK_SUBSUPER_CLASS_IDA)) &&
     115        this->classID & classID & CL_MASK_SUBSUPER_CLASS_IDB))
    116116      return true;
    117117  }
  • trunk/src/lib/lang/class_list.h

    r5885 r5915  
    4646    static bool                           exists(const BaseObject* object, ClassID classID = CL_NULL);
    4747
     48    void                                  sendBack(std::list<BaseObject*>::const_iterator it);
     49
    4850    static void                           whatIs(const BaseObject* object);
    4951
     
    5153    static long                           StringToID(const char* className);
    5254    static void                           debug(unsigned int debugLevel = 0, long classID = CL_NULL);
    53     static void                           debugS(const char* className = 0x0, unsigned int debugLevel = 0);
     55    static void                           debugS(const char* className = NULL, unsigned int debugLevel = 0);
    5456
    5557    inline bool                           operator==(ClassID classID) { return (this->classID == classID); };
  • trunk/src/lib/sound/sound_engine.cc

    r5885 r5915  
    281281
    282282  // INITIALIZING THE DEVICE:
     283#ifndef AL_VERSION_1_1
    283284  ALubyte deviceName[] =
     285#else
     286  ALCchar deviceName[] =
     287#endif
    284288#ifdef __WIN32__
    285       "native";
     289      "Direct3D";
    286290#else
    287       "'( ( devices '( native arts null ) ) )";
     291      "'( ( devices '( native null ) ) )";
    288292#endif
    289293  //
  • trunk/src/story_entities/world.cc

    r5819 r5915  
    2626#include "null_parent.h"
    2727#include "pilot_node.h"
    28 #include "track_node.h"
    2928#include "world_entity.h"
    3029#include "player.h"
     
    4039#include "shell.h"
    4140
    42 #include "track_manager.h"
    4341#include "garbage_collector.h"
    4442#include "fast_factory.h"
     
    6361#include "weapons/projectile.h"
    6462#include "event_handler.h"
    65 
    6663#include "sound_engine.h"
    6764#include "ogg_player.h"
     
    7269#include "npcs/npc_test1.h"
    7370#include "shader.h"
     71
     72#include "playable.h"
    7473
    7574SHELL_COMMAND(speed, World, setSpeed);
     
    122121  PRINTF(3)("World::~World() - deleting current world\n");
    123122
     123
    124124  // here everything that is alocated by the World is deleted
    125125  delete this->entities;
    126126  State::setWorldEntityList(NULL);
    127127
     128  delete this->localPlayer;
    128129
    129130  // delete all the initialized Engines.
    130131  FastFactory::flushAll(true);
    131132  delete LightManager::getInstance();
    132   delete TrackManager::getInstance();
    133133  delete ParticleEngine::getInstance();
    134134  delete AnimationPlayer::getInstance();
     
    142142  // erease everything that is left.
    143143  delete NullParent::getInstance();
     144
    144145  Shader::suspendShader();
    145146
     
    172173  this->shell = NULL;
    173174  this->entities = NULL;
     175  this->localPlayer = NULL;
     176  this->localCamera = NULL;
    174177
    175178  this->showPNodes = false;
     
    213216
    214217  AnimationPlayer::getInstance(); // initializes the animationPlayer
     218  ParticleEngine::getInstance();
    215219  PhysicsEngine::getInstance();
    216220
     
    242246    }
    243247
    244   TiXmlDocument* XMLDoc = new TiXmlDocument( path);
     248  TiXmlDocument* XMLDoc = new TiXmlDocument( getPath());
    245249  // load the campaign document
    246250  if( !XMLDoc->LoadFile())
    247251  {
    248252    // report an error
    249     PRINTF(1)("loading XML File: %s @ %d:%d\n", XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
     253    PRINTF(1)("loading XML File: %s @ %s:l%d:c%d\n", XMLDoc->ErrorDesc(), this->getPath(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
    250254    delete XMLDoc;
    251255    return (ErrorMessage){213,"XML File parsing error","World::load()"};
     
    313317      while( element != NULL)
    314318        {
    315           WorldEntity* created = dynamic_cast<WorldEntity*>( loader->fabricate( element));
    316           if( created != NULL) this->spawn( created);
     319          BaseObject* created = (loader->fabricate(element));
     320          if( created != NULL )
     321          {
     322            if(created->isA(CL_WORLD_ENTITY))
     323              this->spawn(dynamic_cast<WorldEntity*>(created));
     324            printf("Created a %s: %s\n", created->getClassName(), created->getName());
     325          }
     326
    317327          // if we load a 'Player' we use it as localPlayer
     328
     329
    318330          //todo do this more elegant
    319           if( element->Value() != NULL && !strcmp( element->Value(), "Player"))
    320           {
    321             localPlayer = (Player*) created;
    322             CDEngine::getInstance()->setPlayer(localPlayer);
    323           }
    324           if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox")) sky = (SkyBox*) created;
     331          if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
     332            sky = dynamic_cast<SkyBox*>(created);
    325333          if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
    326334          {
    327             terrain = (Terrain*) created;
     335            terrain = dynamic_cast<Terrain*>(created);
    328336            CDEngine::getInstance()->setTerrain(terrain);
    329337          }
     
    340348    LoadParamXML(root, "LightManager", LightManager::getInstance(), LightManager, loadParams);
    341349
    342     LoadParamXML(root, "ParticleEngine", ParticleEngine::getInstance(), ParticleEngine, loadParams);
    343     LoadParamXML(root, "PhysicsEngine", PhysicsEngine::getInstance(), PhysicsEngine, loadParams);
    344 
    345   // find Track
    346   element = root->FirstChildElement( "Track");
    347   if( element == NULL)
    348     {
    349       PRINTF(0)("World is missing a 'Track'\n");
    350     }
    351   else
    352     {
    353       //load track
    354       PRINTF(4)("Loading Track\n");
    355 
    356       TrackManager::getInstance()->loadParams( element);
    357       TrackManager::getInstance()->finalize();
    358     }
     350   LoadParamXML(root, "ParticleEngine", ParticleEngine::getInstance(), ParticleEngine, loadParams);
     351//   LoadParamXML(root, "PhysicsEngine", PhysicsEngine::getInstance(), PhysicsEngine, loadParams);
    359352
    360353  // free the XML data
     
    363356  /* GENERIC LOADING PROCESS FINISHED */
    364357
    365   // bind input
    366   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_UP);
    367   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_DOWN);
    368   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_LEFT);
    369   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_RIGHT);
    370   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_FIRE1);
    371   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_NEXT_WEAPON);
    372   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_PREVIOUS_WEAPON);
    373   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, SDLK_PAGEUP);
    374   EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, SDLK_PAGEDOWN);
     358
     359  // Create a Player
     360  this->localPlayer = new Player();
     361
     362  Playable* playable;
     363  const list<BaseObject*>* playableList = ClassList::getList(CL_PLAYABLE);
     364  if (playableList != NULL)
     365  {
     366    playable = dynamic_cast<Playable*>(playableList->front());
     367    this->localPlayer->setControllable(playable);
     368  }
    375369
    376370  // bind camera
    377   //this->localCamera->bind (localPlayer);
    378  // this->localPlayer->addChild (this->localCamera);
    379 
    380 
    381   //        TrackManager::getInstance()->setBindSlave(env);
    382   PNode* tn = TrackManager::getInstance()->getTrackNode();
    383   tn->addChild(this->localPlayer);
    384 
    385   //localCamera->setParent(TrackNode::getInstance());
    386   tn->addChild(this->localCamera);
    387   localCamera->lookAt(tn);
     371  playable->addChild (this->localCamera);
     372
     373//   //localCamera->setParent(TrackNode::getInstance());
     374//  tn->addChild(this->localCamera);
    388375  localCamera->setClipRegion(1, 10000.0);
    389   this->localPlayer->setParentMode(PNODE_ALL);
    390   TrackManager::getInstance()->condition(1, LEFTRIGHT, this->localPlayer);
    391 
     376  localCamera->lookAt(playable);
     377//  this->localPlayer->setParentMode(PNODE_ALL);
    392378  if (sky != NULL)
    393379  {
     
    400386  glNewList (objectList, GL_COMPILE);
    401387
    402   //TrackManager::getInstance()->drawGraph(.01);
    403   //TrackManager::getInstance()->debug(2);
    404388  glEndList();
    405389
     
    412396  ////////////
    413397
    414   Gravity* test = new Gravity();
    415 
    416   // SYSTEM TRAILING THE PLAYER
    417   // Creating a Test Particle System
    418 
    419   //new PhysicsConnection(system, gravity);
    420   //    new PhysicsConnection(this->localPlayer, gravity);
    421398
    422399//   TestEntity* testEntity = new TestEntity();
     
    424401//   testEntity->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    425402//   this->spawn(testEntity);
    426 
    427 //   TestEntity* testEntity2 = new TestEntity();
    428 //   testEntity2->setAnim(STAND);
    429 //   testEntity2->setRelCoor(Vector(2400.0, 10.0, -30.0));
    430 //   testEntity2->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    431 //   //testEntity2->setParent(this->localPlayer);
    432 //   this->spawn(testEntity2);
    433 //
    434 //   TestEntity* testEntity3 = new TestEntity();
    435 //   testEntity3->setAnim(BOOM);
    436 //   testEntity3->setRelCoor(Vector(2450.0, 10.0, -40.0));
    437 //   testEntity3->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    438 //   this->spawn(testEntity3);
    439 //
    440 //   TestEntity* testEntity4 = new TestEntity();
    441 //   testEntity4->setAnim(FLIP);
    442 //   testEntity4->setRelCoor(Vector(2500.0, 10.0, -22.0));
    443 //   testEntity4->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    444 //   this->spawn(testEntity4);
    445 //
    446 //   TestEntity* testEntity5 = new TestEntity();
    447 //   testEntity5->setAnim(WAVE);
    448 //   testEntity5->setRelCoor(Vector(2420.0, 10.0, -50.0));
    449 //   testEntity5->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    450 //   this->spawn(testEntity5);
    451 //
    452 //   TestEntity* testEntity6 = new TestEntity();
    453 //   testEntity6->setAnim(WAVE);
    454 //   testEntity6->setRelCoor(Vector(2420.0, 10.0, -20.0));
    455 //   testEntity6->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    456 //   this->spawn(testEntity6);
    457 //
    458 //   TestEntity* testEntity7 = new TestEntity();
    459 //   testEntity7->setAnim(WAVE);
    460 //   testEntity7->setRelCoor(Vector(2500.0, 10.0, -50.0));
    461 //   testEntity7->setRelDir(Quaternion(M_PI, Vector(0, 1, 0)));
    462 //   this->spawn(testEntity7);
    463 
    464 
    465 
    466 //  PhysicsEngine::getInstance()->debug();
    467 
    468 
    469403
    470404  for(int i = 0; i < 100; i++)
     
    476410    tmp->setAbsCoor(((float)rand()/RAND_MAX) * 5000, 50/*+ (float)rand()/RAND_MAX*20*/, ((float)rand()/RAND_MAX -.5) *30);
    477411    this->spawn(tmp);
    478 
    479 
    480412  }
    481 
    482 
    483 
    484 //  ClassList::debug();
    485413
    486414  this->music = NULL;//(OggPlayer*)ResourceManager::getInstance()->load("sound/00-luke_grey_-_hypermode.ogg", OGG, RP_LEVEL);
     
    498426  this->glmis->step();
    499427  // stuff beyond this point remains to be loaded properly
    500 
    501   // initializing the TrackManager
    502   TrackManager::getInstance()->addPointV(Vector(150, -35, 5));
    503   TrackManager::getInstance()->addPointV(Vector(200,-35, 5));
    504   TrackManager::getInstance()->addPointV(Vector(250, -35, 5));
    505   TrackManager::getInstance()->addPointV(Vector(320,-33,-.55));
    506   TrackManager::getInstance()->setDuration(1);
    507   TrackManager::getInstance()->setSavePoint();
    508 
    509   TrackManager::getInstance()->addPointV(Vector(410, 0, 0));
    510   TrackManager::getInstance()->addPointV(Vector(510, 20, -10));
    511   TrackManager::getInstance()->addPointV(Vector(550, 20, -10));
    512   TrackManager::getInstance()->addPointV(Vector(570, 20, -10));
    513   TrackManager::getInstance()->setDuration(2);
    514 
    515   TrackManager::getInstance()->forkS("testFork1,testFork2");
    516   TrackManager::getInstance()->workOnS("testFork1");
    517   TrackManager::getInstance()->addPointV(Vector(640, 25, -30));
    518   TrackManager::getInstance()->addPointV(Vector(700, 40, -120));
    519   TrackManager::getInstance()->addPointV(Vector(800, 50, -150));
    520   TrackManager::getInstance()->addPointV(Vector(900, 60, -100));
    521   TrackManager::getInstance()->addPointV(Vector(900, 60, -70));
    522   TrackManager::getInstance()->addPointV(Vector(990, 65, -15));
    523   TrackManager::getInstance()->addPointV(Vector(1050, 65, -10));
    524   TrackManager::getInstance()->addPointV(Vector(1100, 65, -20));
    525   TrackManager::getInstance()->setDuration(4);
    526 
    527   TrackManager::getInstance()->workOnS("testFork2");
    528   TrackManager::getInstance()->addPointV(Vector(640, 25, 20));
    529   TrackManager::getInstance()->addPointV(Vector(670, 50, 120));
    530   TrackManager::getInstance()->addPointV(Vector(700, 70, 80));
    531   TrackManager::getInstance()->addPointV(Vector(800, 70, 65));
    532   TrackManager::getInstance()->addPointV(Vector(850, 65, 65));
    533   TrackManager::getInstance()->addPointV(Vector(920, 35, 40));
    534   TrackManager::getInstance()->addPointV(Vector(945, 40, 40));
    535   TrackManager::getInstance()->addPointV(Vector(970, 24, 40));
    536   TrackManager::getInstance()->addPointV(Vector(1000, 40, -7));
    537 
    538   TrackManager::getInstance()->setDuration(4);
    539 
    540 
    541   TrackManager::getInstance()->joinS("testFork1,testFork2");
    542 
    543   TrackManager::getInstance()->addPointV(Vector(1200, 60, -50));
    544   TrackManager::getInstance()->addPointV(Vector(1300, 50, -50));
    545   TrackManager::getInstance()->addPointV(Vector(1400, 40, -50));
    546   TrackManager::getInstance()->addPointV(Vector(1500, 40, -60));
    547   TrackManager::getInstance()->addPointV(Vector(1600, 35, -55));
    548   TrackManager::getInstance()->addPointV(Vector(1700, 45, -40));
    549   TrackManager::getInstance()->addPointV(Vector(1750, 60, -40));
    550   TrackManager::getInstance()->addPointV(Vector(1770, 80, -40));
    551   TrackManager::getInstance()->addPointV(Vector(1800, 100, -40));
    552   TrackManager::getInstance()->setDuration(10);
    553 
    554   TrackManager::getInstance()->finalize();
    555 
    556428
    557429  // LIGHT initialisation
     
    571443      {
    572444        LightManager::getInstance()->getLight()->setAbsCoor(-5.0, 10.0, -40.0);
    573 
    574 
    575         this->localPlayer = new Player ();
    576         this->localPlayer->setName ("player");
    577         this->spawn (this->localPlayer);
    578         this->localPlayer->setRelCoor(Vector(5,0,0));
    579445        /*monitor progress*/
    580446        this->glmis->step();
    581 
    582 
    583         EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_FIRE1);
    584         EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_NEXT_WEAPON);
    585         EventHandler::getInstance()->subscribe(this->localPlayer, ES_GAME, KeyMapper::PEV_PREVIOUS_WEAPON);
    586 
    587         /*
    588         Field* testField = new Gravity();
    589         testField->setMagnitude(10);
    590         new PhysicsConnection(this->localPlayer, testField);
    591         */
    592447
    593448        // bind camera
     
    614469        this->glmis->step();
    615470
    616         this->pilotNode = new PilotNode();
    617         this->spawn(this->pilotNode);
    618         this->pilotNode->setAbsCoor(Vector(150, -35, 5));
    619         this->pilotNode->addChild(this->localPlayer);
    620         this->pilotNode->addChild(this->localCamera);
    621         this->localCamera->lookAt(this->localPlayer);
    622 
    623         EventHandler::getInstance()->subscribe(this->pilotNode, ES_GAME, KeyMapper::PEV_UP);
    624         EventHandler::getInstance()->subscribe(this->pilotNode, ES_GAME, KeyMapper::PEV_DOWN);
    625         EventHandler::getInstance()->subscribe(this->pilotNode, ES_GAME, KeyMapper::PEV_LEFT);
    626         EventHandler::getInstance()->subscribe(this->pilotNode, ES_GAME, KeyMapper::PEV_RIGHT);
    627         EventHandler::getInstance()->subscribe(this->pilotNode, ES_GAME, EV_MOUSE_MOTION);
    628 
    629         /*
    630         PNode* tn = TrackManager::getInstance()->getTrackNode();
    631         tn->addChild(this->localPlayer);
    632         this->localCamera->lookAt(tn);
    633 
    634         tn->addChild(this->localCamera);
    635         this->localPlayer->setParentMode(PNODE_ALL);
    636         TrackManager::getInstance()->condition(2, LEFTRIGHT, this->localPlayer);
    637         */
    638471        this->glmis->step();
    639472        break;
     
    663496{
    664497  this->bPause = false;
    665   this->pilotNode = NULL;
    666498
    667499  /* update the object position before game start - so there are no wrong coordinates used in the first processing */
     
    838670void World::handleInput ()
    839671{
    840   // localinput
    841   //CommandNode* cn = Orxonox::getInstance()->getLocalInput();
    842   //cn->process();
    843 
    844672  EventHandler::getInstance()->process();
    845673
     
    893721
    894722      /* update tick the rest */
    895       TrackManager::getInstance()->tick(this->dtS);
    896723      this->localCamera->tick(this->dtS);
    897724      // tick the engines
  • trunk/src/story_entities/world.h

    r5429 r5915  
    1616class Camera;
    1717class Player;
    18 class PNode;
    1918class GLMenuImageScreen;
    2019class Terrain;
     
    2221class Text;
    2322class TiXmlElement;
    24 class PilotNode;
    2523
    2624class Shell;
     
    121119    tList<WorldEntity>* entities;       //!< A template List of all entities. Every moving thing should be included here, and world automatically updates them.
    122120    Player* localPlayer;                //!< The Player, you fly through the level.
    123     PilotNode* pilotNode;               //!< THe pilot node to fly with the mouse
    124 
    125 
    126121};
    127122
  • trunk/src/world_entities/Makefile.am

    r5750 r5915  
    77                  world_entity.cc \
    88                  camera.cc \
    9                   player.cc \
     9                  playable.cc \
     10                  player.cc \
    1011                  npc.cc \
    1112                  npc2.cc \
     
    1718                  character_attributes.cc \
    1819                  test_entity.cc \
     20                  space_ships/space_ship.cc \
    1921                  weapons/weapon_manager.cc \
    2022                  weapons/weapon.cc \
     
    3537                 world_entity.h \
    3638                 camera.h \
    37                  player.h \
     39                 playable.h \
     40                 player.h \
    3841                 npc.h \
    3942                 npc2.h \
     
    4548                 character_attributes.h \
    4649                 test_entity.h \
     50                 space_ships/space_ship.h \
    4751                 weapons/weapon_manager.h \
    4852                 weapons/weapon.h \
  • trunk/src/world_entities/player.cc

    r5767 r5915  
    1010
    1111   ### File Specific:
    12    main-programmer: Patrick Boenzli
    13    co-programmer: Christian Meyer
     12   main-programmer: Silvan Nellen
     13   co-programmer: Benjamin Knecht
    1414*/
    1515
    16 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
    17 
    18 
    19 #include "executor/executor.h"
    2016#include "player.h"
    21 
    22 #include "track_manager.h"
    23 #include "objModel.h"
    24 #include "resource_manager.h"
    25 #include "factory.h"
    26 
    27 #include "weapons/weapon_manager.h"
    28 #include "weapons/test_gun.h"
    29 #include "weapons/turret.h"
    30 #include "weapons/cannon.h"
    31 
    32 #include "list.h"
     17#include "playable.h"
    3318
    3419#include "event_handler.h"
    3520
    36 #include "event.h"
    37 
    3821using namespace std;
    3922
    40 CREATE_FACTORY(Player, CL_PLAYER);
    4123
    4224/**
    4325 * creates a new Player
    44  * @param isFree if the player is free
    4526*/
    4627Player::Player()
     
    4930}
    5031
    51 /**
    52  * loads a Players information from a specified file.
    53  * @param fileName the name of the File to load the player from (absolute path)
    54  */
    55 Player::Player(const char* fileName)
    56 {
    57   this->init();
    58   TiXmlDocument doc(fileName);
    59 
    60   if(!doc.LoadFile())
    61   {
    62     PRINTF(2)("Loading file %s failed for player.\n", fileName);
    63     return;
    64   }
    65 
    66   this->loadParams(doc.RootElement());
    67 }
    68 
    69 /**
    70  *  creates a new Player from Xml Data
    71  * @param root the xml element containing player data
    72 
    73    @todo add more parameters to load
    74 */
    75 Player::Player(const TiXmlElement* root)
    76 {
    77   this->init();
    78   if (root != NULL)
    79     this->loadParams(root);
    80 
    81   //weapons:
    82   Weapon* wpRight = new TestGun(0);
    83   wpRight->setName("testGun Right");
    84   Weapon* wpLeft = new TestGun(1);
    85   wpLeft->setName("testGun Left");
    86   Weapon* cannon = dynamic_cast<Weapon*>(Factory::getFirst()->fabricate(CL_CANNON));
    87 
    88   cannon->setName("BFG");
    89 
    90   this->weaponMan->addWeapon(wpLeft, 1, 0);
    91   this->weaponMan->addWeapon(wpRight,1 ,1);
    92   this->weaponMan->addWeapon(cannon, 0, 6);
    93 
    94   //this->weaponMan->addWeapon(turret, 3, 0);
    95 
    96   this->weaponMan->changeWeaponConfig(1);
    97 }
    9832
    9933/**
     
    10236Player::~Player ()
    10337{
    104   /* do not delete the weapons, they are contained in the pnode tree
    105   and will be deleted there.
    106   this only frees the memory allocated to save the list.
    107   */
    108   delete this->weaponMan;
    10938}
    11039
    111 //#include "glgui_pushbutton.h"
    11240
    11341/**
     
    12048
    12149  PRINTF(4)("PLAYER INIT\n");
    122   travelSpeed = 15.0;
    123   bUp = bDown = bLeft = bRight = bAscend = bDescend = false;
    124   bFire = false;
    125   acceleration = 10.0;
    12650
    127 //   GLGuiButton* button = new GLGuiPushButton();
    128 //   button->show();
    129 //   button->setLabel("orxonox");
    130 //   button->setBindNode(this);
    131 
    132   this->weaponMan = new WeaponManager(this);
    133   this->weaponMan->setSlotCount(7);
    134 
    135   this->weaponMan->setSlotPosition(0, Vector(-2.6, .1, -3.0));
    136   this->weaponMan->setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
    137 
    138   this->weaponMan->setSlotPosition(1, Vector(-2.6, .1, 3.0));
    139   this->weaponMan->setSlotCapability(1, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
    140 
    141   this->weaponMan->setSlotPosition(2, Vector(-1.5, .5, -.5));
    142   this->weaponMan->setSlotDirection(2, Quaternion(-M_PI_4*.5, Vector(1,0,0)));
    143 
    144   this->weaponMan->setSlotPosition(3, Vector(-1.5, .5, .5));
    145   this->weaponMan->setSlotDirection(3, Quaternion(M_PI_4*.5, Vector(1,0,0)));
    146 
    147   this->weaponMan->setSlotPosition(4, Vector(-1.5, -.5, .5));
    148   this->weaponMan->setSlotDirection(4, Quaternion(-M_PI_4*.5+M_PI, Vector(1,0,0)));
    149 
    150   this->weaponMan->setSlotPosition(5, Vector(-1.5, -.5, -.5));
    151   this->weaponMan->setSlotDirection(5, Quaternion(+M_PI_4*.5-M_PI, Vector(1,0,0)));
    152 //
    153    this->weaponMan->setSlotPosition(6, Vector(-1, 0.0, 0));
    154    this->weaponMan->setSlotCapability(6, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
    155    //
    156 //   this->weaponMan->setSlotPosition(8, Vector(-2.5, -0.3, -2.0));
    157 //   this->weaponMan->setSlotDirection(8, Quaternion(-M_PI, Vector(1,0,0)));
    158 //
    159 //   this->weaponMan->setSlotPosition(9, Vector(-2.5, -0.3, 2.0));
    160 //   this->weaponMan->setSlotDirection(9, Quaternion(+M_PI, Vector(1,0,0)));:
    161 
     51  this->controllable = NULL;
    16252}
    16353
    16454
    165 /**
    166  * loads the Settings of a Player from an XML-element.
    167  * @param root the XML-element to load the Player's properties from
    168  */
    169 void Player::loadParams(const TiXmlElement* root)
     55bool Player::setControllable(Playable* controllable)
    17056{
    171   static_cast<WorldEntity*>(this)->loadParams(root);
    172 
    173 
    174 
     57  if(controllable != NULL && controllable->subscribePlayer(this))
     58  {
     59      this->controllable = controllable;
     60      return true;
     61  }
     62  else
     63    return false;
    17564}
    17665
    177 /**
    178  * adds a weapon to the weapon list of player
    179  * @param weapon to add
    180 */
    181 void Player::addWeapon(Weapon* weapon)
    182 {
    183   this->weaponMan->addWeapon(weapon);
    184 }
     66bool Player::disconnectControllable()
     67 {
     68   if(this->controllable == NULL) return true;
    18569
     70   if(this->controllable->unsubscribePlayer(this))
     71   {
     72     this->controllable = NULL;
     73     return true;
     74   }
     75   else
     76     return false;
     77 }
    18678
    187 /**
    188  *  removes a weapon from the player
    189  * @param weapon to remove
    190 */
    191 void Player::removeWeapon(Weapon* weapon)
    192 {
    193   this->weaponMan->removeWeapon(weapon);
    194 }
     79 void Player::process(const Event &event)
     80 {
     81   if (likely(this->controllable != NULL))
     82     this->controllable->process(event);
     83 }
    19584
    196 
    197 /**
    198  *  effect that occurs after the player is spawned
    199 */
    200 void Player::postSpawn ()
    201 {
    202   //setCollision(new CollisionCluster(1.0, Vector(0,0,0)));
    203 }
    204 
    205 
    206 /**
    207  *  the action occuring if the player left the game
    208 */
    209 void Player::leftWorld ()
    210 {}
    211 
    212 
    213 WorldEntity* ref = NULL;
    214 /**
    215  *  this function is called, when two entities collide
    216  * @param entity: the world entity with whom it collides
    217  *
    218  * Implement behaviour like damage application or other miscellaneous collision stuff in this function
    219  */
    220 void Player::collidesWith(WorldEntity* entity, const Vector& location)
    221 {
    222   if (entity->isA(CL_TURRET_POWER_UP) && entity != ref)
    223   {
    224     this->ADDWEAPON();
    225     ref = entity;
    226     }
    227 //  PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassName(), entity->getClassName(), location.x, location.y, location.z);
    228 }
    229 
    230 /**
    231  *  draws the player after transforming him.
    232 */
    233 void Player::draw () const
    234 {
    235   glMatrixMode(GL_MODELVIEW);
    236   glPushMatrix();
    237   /* translate */
    238   glTranslatef (this->getAbsCoor ().x,
    239                 this->getAbsCoor ().y,
    240                 this->getAbsCoor ().z);
    241   /* rotate */
    242   Vector tmpRot = this->getAbsDir().getSpacialAxis();
    243   glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
    244   this->model->draw();
    245   glPopMatrix();
    246 
    247   this->weaponMan->draw();
    248 
    249   //this->debug(0);
    250 }
    251 
    252 
    253 /**
    254  *  the function called for each passing timeSnap
    255  * @param time The timespan passed since last update
    256 */
    257 void Player::tick (float time)
    258 {
    259   // player controlled movement
    260   this->move(time);
    261 
    262   this->weaponMan->tick(time);
    263   // weapon system manipulation
    264   this->weaponAction();
    265 }
    266 
    267 
    268 /**
    269  *  action if player moves
    270  * @param time the timeslice since the last frame
    271 */
    272 void Player::move (float time)
    273 {
    274   Vector accel(0.0, 0.0, 0.0);
    275   Vector rot(0.0, 0.0, 0.0);
    276   float rotVal = 0.0;
    277   /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */
    278   /* calculate the direction in which the craft is heading  */
    279   Vector direction (1.0, 0.0, 0.0);
    280   //direction = this->absDirection.apply (direction);
    281   Vector orthDirection (0.0, 0.0, 1.0);
    282   //orthDirection = orthDirection.cross (direction);
    283 
    284   if( this->bUp && this->getRelCoor().x < 20)
    285     accel += direction;
    286   if( this->bDown && this->getRelCoor().x > -5)
    287     accel -= direction;
    288 
    289   if( this->bLeft && TrackManager::getInstance()->getWidth() > -this->getRelCoor().z*2)
    290   {
    291     accel -=(orthDirection);
    292     rot +=Vector(1,0,0);
    293     rotVal -= .4;
    294   }
    295   if( this->bRight && TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2)
    296   {
    297     accel += orthDirection;
    298     rot += Vector(1,0,0);
    299     rotVal += .4;
    300   }
    301   if (this->bAscend )
    302   {
    303     accel += Vector(0,1,0);
    304     rot += Vector(0,0,1);
    305     rotVal += .4;
    306   }
    307   if (this->bDescend )
    308   {
    309     accel -= Vector(0,1,0);
    310     rot += Vector(0,0,1);
    311     rotVal -= .4;
    312   }
    313 
    314   Vector move = accel * time *acceleration;
    315 
    316 /*  if (accel.z < 0)
    317     this->setRelDirSoft(Quaternion(-.4, accel), 5);
    318   else if (accel.z > 0)
    319     this->setRelDirSoft(Quaternion(.4, accel), 5);
    320   else*/
    321   rot.normalize();
    322   this->setRelDirSoft(Quaternion(rotVal, rot), 5);
    323   this->shiftCoor (move);
    324 }
    325 
    326 
    327 /**
    328  * weapon manipulation by the player
    329 */
    330 void Player::weaponAction()
    331 {
    332   if( this->bFire)
    333     {
    334       this->weaponMan->fire();
    335     }
    336 }
    337 
    338 /**
    339  * @todo switch statement ??
    340  */
    341 void Player::process(const Event &event)
    342 {
    343   if( event.type == KeyMapper::PEV_UP)
    344       this->bUp = event.bPressed;
    345   else if( event.type == KeyMapper::PEV_DOWN)
    346       this->bDown = event.bPressed;
    347   else if( event.type == KeyMapper::PEV_RIGHT)
    348       this->bRight= event.bPressed;
    349   else if( event.type == KeyMapper::PEV_LEFT)
    350       this->bLeft = event.bPressed;
    351   else if( event.type == KeyMapper::PEV_FIRE1)
    352       this->bFire = event.bPressed;
    353   else if( event.type == KeyMapper::PEV_NEXT_WEAPON && event.bPressed)
    354     this->weaponMan->nextWeaponConfig();//if( !event.bPressed) this->bWeaponChange = !this->bWeaponChange;
    355   else if ( event.type == KeyMapper::PEV_PREVIOUS_WEAPON && event.bPressed)
    356     this->weaponMan->previousWeaponConfig();
    357 
    358   else if( event.type == SDLK_PAGEUP)
    359     this->bAscend = event.bPressed; //this->shiftCoor(0,.1,0);
    360   else if( event.type == SDLK_PAGEDOWN)
    361     this->bDescend = event.bPressed; //this->shiftCoor(0,-.1,0);
    362 }
    363 
    364 #include "weapons/aiming_turret.h"
    365 // FIXME THIS MIGHT BE CONSIDERED EITHER A FEATURE, OR A BUG
    366 void Player::ADDWEAPON()
    367 {
    368   Weapon* turret = NULL;
    369 
    370   if ((float)rand()/RAND_MAX < .1)
    371   {
    372     //if (this->weaponMan->hasFreeSlot(2, WTYPE_TURRET))
    373     {
    374       turret = new Turret();
    375       this->weaponMan->addWeapon(turret, 2);
    376       this->weaponMan->changeWeaponConfig(2);
    377     }
    378   }
    379   else
    380   {
    381     //if (this->weaponMan->hasFreeSlot(3))
    382     {
    383       turret = new AimingTurret();
    384       this->weaponMan->addWeapon(turret, 3);
    385 
    386       this->weaponMan->changeWeaponConfig(3);
    387     }
    388   }
    389 
    390   if(turret != NULL)
    391   {
    392     turret->setName("Turret");
    393     turret->setStateDuration(WS_SHOOTING, (float)rand()/RAND_MAX*.5+.1);
    394   }
    395 }
  • trunk/src/world_entities/player.h

    r5500 r5915  
    77#define _PLAYER_H
    88
    9 #include "world_entity.h"
    10 #include "physics_interface.h"
    119#include "event_listener.h"
    1210
    13 template<class T> class tList;
    14 class Weapon;
    15 class WeaponManager;
    16 class Vector;
    17 class Event;
     11/* Forward Declaration */
     12class Playable;
    1813
    1914//! Basic controllable WorldEntity
     
    2318     the player.cc for debug also
    2419*/
    25 class Player : public WorldEntity, public EventListener
     20class Player : public EventListener
    2621{
    27   friend class World;
    2822
    2923  public:
    3024    Player();
    31     Player(const char* fileName);
    32     Player(const TiXmlElement* root);
    3325    virtual ~Player();
    3426
    35     void init();
    36     void loadParams(const TiXmlElement* root);
     27    bool              setControllable(Playable* controllalble);
     28    inline Playable*  getControllable() { return this->controllable; };
    3729
    38     void addWeapon(Weapon* weapon);
    39     void removeWeapon(Weapon* weapon);
     30    bool              disconnectControllable();
    4031
    41     virtual void postSpawn();
    42     virtual void leftWorld();
     32    // eventListener extension.
     33    virtual void      process(const Event &event);
    4334
    44     virtual void collidesWith(WorldEntity* entity, const Vector& location);
    45     virtual void tick(float time);
    46     virtual void draw() const;
    47 
    48     virtual void process(const Event &event);
     35  private:
     36    void              init();
    4937
    5038
    5139  private:
    52     void move(float time);
    53     void weaponAction();
    54 
    55     // !! temporary !!
    56     void ADDWEAPON();
    57 
    58   private:
    59     bool                  bUp;                //!< up button pressed.
    60     bool                  bDown;              //!< down button pressed.
    61     bool                  bLeft;              //!< left button pressed.
    62     bool                  bRight;             //!< right button pressed.
    63     bool                  bAscend;            //!< ascend button pressed.
    64     bool                  bDescend;           //!< descend button presses.
    65     bool                  bFire;              //!< fire button pressed.
    66 
    67     WeaponManager*        weaponMan;          //!< the weapon manager: managing a list of weapon to wepaon-slot mapping
    68 
    69     Vector                velocity;           //!< the velocity of the player.
    70     float                 travelSpeed;        //!< the current speed of the player (to make soft movement)
    71     float                 acceleration;       //!< the acceleration of the player.
     40    Playable*         controllable;                  //!< The one we controll or NULL if none
    7241};
    7342
  • trunk/src/world_entities/power_ups/laser_power_up.cc

    r5750 r5915  
    7979{
    8080 // PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassName(), entity->getClassName(), location.x, location.y, location.z);
    81  if (entity->isA(CL_PLAYER))
     81 if (entity->isA(CL_PLAYABLE))
    8282  State::getWorldEntityList()->remove(this);
    8383}
  • trunk/src/world_entities/power_ups/turret_power_up.cc

    r5750 r5915  
    7979{
    8080 // PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassName(), entity->getClassName(), location.x, location.y, location.z);
    81  if (entity->isA(CL_PLAYER))
     81 if (entity->isA(CL_PLAYABLE))
    8282  State::getWorldEntityList()->remove(this);
    8383}
  • trunk/src/world_entities/weapons/aiming_turret.cc

    r5819 r5915  
    9393
    9494  this->setCapability(WTYPE_ALLDIRS | WTYPE_TURRET);
    95   this->setProjectileType(CL_ROCKET);
     95  this->setProjectileType(CL_GUIDED_MISSILE);
    9696
    9797
     
    142142    return;
    143143
    144     pj->setVelocity(/*this->getVelocity()+*/(this->getAbsDir().apply(Vector(1,0,0))*250.0 + VECTOR_RAND(13)
     144  pj->setVelocity(/*this->getVelocity()+*/(this->getAbsDir().apply(Vector(1,0,0))*250.0 + VECTOR_RAND(13)
    145145            /*target->getAbsCoor() - this->getAbsCoor()*/)*.5);//this->getVelocity());
    146146
     147  pj->setTarget(this->target->getParent());
    147148  pj->setParent(NullParent::getInstance());
    148149  pj->setAbsCoor(this->getEmissionPoint());
  • trunk/src/world_entities/weapons/ground_turret.cc

    r5819 r5915  
    145145void GroundTurret::collidesWith (WorldEntity* entity, const Vector& location)
    146146{
    147 
     147  if (entity->isA(CL_PROJECTILE))
     148    this->setAbsDirSoft(Quaternion(-90, Vector(0,0,1)), 90);
    148149}
    149150
  • trunk/src/world_entities/weapons/guided_missile.cc

    r5779 r5915  
    4848  this->energyMin = 1;
    4949  this->energyMax = 10;
    50   this->lifeSpan = 5;
    51   this->agility = 5;
     50  this->lifeSpan = 5.0;
     51  this->agility = 5.0;
    5252  this->maxVelocity = 100;
    5353
Note: See TracChangeset for help on using the changeset viewer.