Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 3620 in orxonox.OLD for orxonox/trunk/src/story_entities


Ignore:
Timestamp:
Mar 21, 2005, 5:37:58 PM (19 years ago)
Author:
patrick
Message:

orxonox/trunk: added worldinterface, to enable all worldentities to access the entities list. so they can add entities themselfes. this is a nice hack

Location:
orxonox/trunk/src/story_entities
Files:
2 edited

Legend:

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

    r3614 r3620  
    2020
    2121#include "orxonox.h"
     22
    2223#include "p_node.h"
    2324#include "null_parent.h"
     
    3334#include "terrain.h"
    3435#include "light.h"
     36
    3537#include "command_node.h"
    3638#include "glmenu_imagescreen.h"
     
    4143
    4244using namespace std;
     45
     46
     47WorldInterface* WorldInterface::singletonRef = 0;
     48
     49
     50/**
     51   \brief private constructor because of singleton
     52*/
     53WorldInterface::WorldInterface()
     54{
     55  this->worldIsInitialized = false;
     56  this->worldReference = NULL;
     57}
     58
     59/**
     60   \brief public deconstructor
     61*/
     62WorldInterface::~WorldInterface()
     63{
     64  this->singletonRef = NULL;
     65  this->worldIsInitialized = false;
     66  this->worldReference = NULL;
     67}
     68
     69/**
     70   \brief gets the singleton instance
     71   \returns singleton instance
     72*/
     73WorldInterface* WorldInterface::getInstance()
     74{
     75  if( singletonRef == NULL)
     76    singletonRef = new WorldInterface();
     77  return singletonRef;
     78}
     79
     80
     81/**
     82   \brief initializes the interface
     83   \param reference to the world
     84
     85   if the worldinterface is not initilizes, there wont be any
     86   useable interface
     87*/
     88void WorldInterface::init(World* world)
     89{
     90  this->worldReference = world;
     91  if( world!= NULL)
     92    {
     93      this->worldIsInitialized = true;
     94      PRINTF(3)("WorldInterface up and running\n");
     95    }
     96}
     97
     98
     99/**
     100   \brief gets the entity list from the world
     101   \return entity list
     102*/
     103tList<WorldEntity>* WorldInterface::getEntityList()
     104{
     105  if( this->worldIsInitialized)
     106    return this->worldReference->getEntities();
     107  PRINT(1)("Someone tried to use the WorldInterface before it has been initizlized! this can result in SEGFAULTs!\n");
     108  return NULL;
     109}
     110
    43111
    44112
     
    76144  cn->reset();
    77145
     146  delete WorldInterface::getInstance();
     147
    78148  delete this->nullParent;
    79149  delete this->entities;
     
    89159  this->setClassName ("World");
    90160
     161
    91162  this->worldName = name;
    92163  this->debugWorldNr = worldID;
    93164  this->entities = new tList<WorldEntity>();
     165
     166  /* init the world interface */
     167  WorldInterface* wi = WorldInterface::getInstance();
     168  wi->init(this);
    94169
    95170  // Enable default GL stuff
     
    406481  SDL_Delay(500);
    407482  PRINTF(3)("World::releaseLoadScreen - end\n");
     483}
     484
     485
     486/**
     487   \brief gets the list of entities from the world
     488   \returns entity list
     489*/
     490tList<WorldEntity>* World::getEntities()
     491{
     492  return this->entities;
    408493}
    409494
  • orxonox/trunk/src/story_entities/world.h

    r3608 r3620  
    1212#include "p_node.h"
    1313
     14
     15class World;
     16class WorldEntity;
     17
     18//! The game world Interface
     19/**
     20   this is a singleton interface, that enables world_entities to access the
     21   world. for those objects, there is no easier way than over this interface!
     22*/
     23class WorldInterface : BaseObject {
     24
     25 public:
     26  ~WorldInterface();
     27  static WorldInterface* getInstance();
     28  void init(World* world);
     29  tList<WorldEntity>* getEntityList();
     30
     31 private:
     32  WorldInterface();
     33  static WorldInterface* singletonRef;    //!< singleton reference to this object
     34  bool worldIsInitialized;                //!< true if the world has been initialized
     35  World* worldReference;                  //!< this is a reference to the running world
     36
     37};
     38
     39
    1440class TrackManager;
    15 class WorldEntity;
    1641class Camera;
    1742class PNode;
     
    5075  /* command node functions */
    5176  bool command (Command* cmd);
     77
     78  tList<WorldEntity>* getEntities();
    5279
    5380  /* interface to world */
Note: See TracChangeset for help on using the changeset viewer.