Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 6150 in orxonox.OLD for trunk/src/story_entities/world.cc


Ignore:
Timestamp:
Dec 17, 2005, 5:56:25 PM (20 years ago)
Author:
bensch
Message:

orxonox/trunk: cleanup of the world begin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/story_entities/world.cc

    r6142 r6150  
    2020
    2121#include "shell_command.h"
    22 
     22#include "resource_manager.h"
    2323#include "state.h"
    2424
    2525#include "p_node.h"
    26 #include "pilot_node.h"
    2726#include "world_entity.h"
    2827#include "player.h"
    2928#include "camera.h"
    3029#include "environment.h"
    31 #include "skysphere.h"
    32 #include "skybox.h"
    33 #include "satellite.h"
     30
    3431#include "test_entity.h"
    3532#include "terrain.h"
     
    9188
    9289/**
    93   *  create a new World
    94 
    95     This creates a new empty world!
    96 */
    97 World::World (const char* name)
    98 {
    99   this->path = NULL;
    100   this->constuctorInit(name, -1);
    101 }
    102 
    103 /**
    104  *  creates a new World...
    105  * @param worldID with this ID
    106 */
    107 World::World (int worldID)
    108 {
    109   this->path = NULL;
    110   this->constuctorInit(NULL, worldID);
    111 }
    112 
    113 /**
    11490 *  remove the World from memory
    115 
    116     delete everything explicitly, that isn't contained in the parenting tree!
    117     things contained in the tree are deleted automaticaly
     91 *
     92 *  delete everything explicitly, that isn't contained in the parenting tree!
     93 *  things contained in the tree are deleted automaticaly
    11894 */
    11995World::~World ()
     
    150126  // unload the resources !!
    151127  ResourceManager::getInstance()->unloadAllByPriority(RP_LEVEL);
    152 
    153   delete[] this->path;
    154128}
    155129
     
    170144
    171145  this->setName(name);
    172   this->debugWorldNr = worldID;
    173146  this->gameTime = 0.0f;
    174147  this->setSpeed(1.0);
     
    232205/**
    233206 *  loads the World by initializing all resources, and set their default values.
    234 */
     207 */
    235208ErrorMessage World::load()
    236209{
     
    242215    {
    243216      PRINTF(1)("World has no path specified for loading");
    244       this->loadDebugWorld(this->getStoryID());
    245217      return (ErrorMessage){213,"Path not specified","World::load()"};
    246218    }
     
    330302          //todo do this more elegant
    331303          if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox"))
    332             sky = dynamic_cast<SkyBox*>(created);
     304            this->sky = dynamic_cast<WorldEntity*>(created);
    333305          if( element->Value() != NULL && !strcmp( element->Value(), "Terrain"))
    334306          {
     
    382354  }
    383355
    384   // initialize debug coord system
    385   objectList = glGenLists(1);
    386   glNewList (objectList, GL_COMPILE);
    387 
    388   glEndList();
    389 
    390356  SoundEngine::getInstance()->setListener(this->localCamera);
    391357
     
    418384
    419385
    420 
    421 /**
    422  * creates a debug world: only for experimental stuff
    423 */
    424 void World::loadDebugWorld(int worldID)
    425 {
    426   /*monitor progress*/
    427   this->glmis->step();
    428   // stuff beyond this point remains to be loaded properly
    429 
    430   // LIGHT initialisation
    431   LightManager::getInstance()->setAmbientColor(.1,.1,.1);
    432 //  LightManager::getInstance()->addLight();
    433   LightManager::getInstance()->debug();
    434 
    435   switch(this->debugWorldNr)
    436     {
    437       /*
    438         this loads the hard-coded debug world. this only for simplicity and will be
    439         removed by a reald world-loader, which interprets a world-file.
    440         if you want to add an own debug world, just add a case DEBUG_WORLD_[nr] and
    441         make whatever you want...
    442       */
    443     case DEBUG_WORLD_0:
    444       {
    445         LightManager::getInstance()->getLight()->setAbsCoor(-5.0, 10.0, -40.0);
    446         /*monitor progress*/
    447         this->glmis->step();
    448 
    449         // bind camera
    450         this->localCamera = new Camera();
    451         this->localCamera->setName ("camera");
    452         /*monitor progress*/
    453         this->glmis->step();
    454 
    455 
    456         // Create SkySphere
    457         this->sky = new Skysphere("pictures/sky-replace.jpg");
    458         this->sky->setName("SkySphere");
    459         this->spawn(this->sky);
    460         this->localCamera->addChild(this->sky);
    461         this->sky->setParentMode(PNODE_MOVEMENT);
    462         /*monitor progress*/
    463         this->glmis->step();
    464 
    465 
    466         terrain = new Terrain("worlds/newGround.obj");
    467         terrain->setRelCoor(Vector(0,-10,0));
    468         this->spawn(terrain);
    469         /*monitor progress*/
    470         this->glmis->step();
    471 
    472         this->glmis->step();
    473         break;
    474       }
    475     case DEBUG_WORLD_1:
    476       {
    477 
    478         break;
    479       }
    480     case DEBUG_WORLD_2:
    481       {
    482 
    483         break;
    484       }
    485     default:
    486       break;
    487     }
    488 }
    489 
    490386/**
    491387 *  initializes a new World shortly before start
     
    501397  PNode::getNullParent()->updateNode (0.001f);
    502398  PNode::getNullParent()->updateNode (0.001f);
    503 
    504399}
    505400
     
    507402/**
    508403 *  starts the World
    509 */
     404 */
    510405ErrorMessage World::start()
    511406{
    512   PRINTF(3)("World::start() - starting current World: nr %i\n", this->debugWorldNr);
    513407  this->bQuitOrxonox = false;
    514408  this->bQuitCurrentGame = false;
     
    566460
    567461/**
    568  * removes the loadscreen, and changes over to the game
    569 
    570    @todo take out the delay
     462 * @brief removes the loadscreen, and changes over to the game
     463 *
     464 * @todo take out the delay
    571465*/
    572466void World::releaseLoadScreen ()
     
    588482}
    589483
    590 /**
    591   \brief main loop of the world: executing all world relevant function
    592 
    593   in this loop we synchronize (if networked), handle input events, give the heart-beat to
    594   all other member-entities of the world (tick to player, enemies etc.), checking for
    595   collisions drawing everything to the screen.
    596 */
    597 void World::mainLoop()
    598 {
    599   this->lastFrame = SDL_GetTicks ();
    600   PRINTF(3)("World::mainLoop() - Entering main loop\n");
    601 
    602   while( !this->bQuitOrxonox && !this->bQuitCurrentGame) /* @todo implement pause */
    603     {
    604       ++this->cycle;
    605       // Network
    606       this->synchronize ();
    607       // Process input
    608       this->handleInput ();
    609       if( this->bQuitCurrentGame || this->bQuitOrxonox)
    610           break;
    611       // Process time
    612       this->tick ();
    613       // Process collision
    614       this->collide ();
    615       // Update the state
    616       this->update ();
    617       // Draw
    618       this->display ();
    619     }
    620 
    621   PRINTF(3)("World::mainLoop() - Exiting the main loop\n");
    622 }
    623484
    624485
     
    786647//   }
    787648
    788   glCallList (objectList);
    789 
    790649  ParticleEngine::getInstance()->draw();
    791650
     
    797656}
    798657
     658
     659/**
     660 * \brief main loop of the world: executing all world relevant function
     661 *
     662 * in this loop we synchronize (if networked), handle input events, give the heart-beat to
     663 * all other member-entities of the world (tick to player, enemies etc.), checking for
     664 * collisions drawing everything to the screen.
     665 */
     666void World::mainLoop()
     667{
     668  this->lastFrame = SDL_GetTicks ();
     669  PRINTF(3)("World::mainLoop() - Entering main loop\n");
     670
     671  while( !this->bQuitOrxonox && !this->bQuitCurrentGame) /* @todo implement pause */
     672  {
     673    ++this->cycle;
     674      // Network
     675    this->synchronize ();
     676      // Process input
     677    this->handleInput ();
     678    if( this->bQuitCurrentGame || this->bQuitOrxonox)
     679      break;
     680      // Process time
     681    this->tick ();
     682      // Process collision
     683    this->collide ();
     684      // Update the state
     685    this->update ();
     686      // Draw
     687    this->display ();
     688  }
     689
     690  PRINTF(3)("World::mainLoop() - Exiting the main loop\n");
     691}
     692
     693
     694
    799695/**
    800696 *  add and spawn a new entity to this world
     
    805701//   this->entities->add (entity);
    806702  entity->postSpawn ();
    807 }
    808 
    809 
    810 /**
    811  *  add and spawn a new entity to this world
    812  * @param entity to be added
    813  * @param absCoor At what coordinates to add this entity.
    814  * @param absDir In which direction should it look.
    815 */
    816 void World::spawn(WorldEntity* entity, Vector* absCoor, Quaternion* absDir)
    817 {
    818 //   this->entities->add (entity);
    819 
    820   entity->setAbsCoor (*absCoor);
    821   entity->setAbsDir (*absDir);
    822 
    823   entity->postSpawn ();
    824 }
    825 
    826 
    827 /**
    828  *  add and spawn a new entity to this world
    829  * @param entity to be added
    830  * @param entity to be added to (PNode)
    831  * @param At what relative  coordinates to add this entity.
    832  * @param In which relative direction should it look.
    833 */
    834 void World::spawn(WorldEntity* entity, PNode* parentNode,
    835                   Vector* relCoor, Quaternion* relDir)
    836 {
    837   if( parentNode != NULL)
    838     {
    839       parentNode->addChild (entity);
    840 
    841       entity->setRelCoor (*relCoor);
    842       entity->setRelDir (*relDir);
    843 
    844 //       this->entities->add (entity);
    845 
    846       entity->postSpawn ();
    847     }
    848703}
    849704
Note: See TracChangeset for help on using the changeset viewer.