Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/util/object_manager.cc @ 4305

Last change on this file since 4305 was 4289, checked in by patrick, 20 years ago

orxonox/trunk: now all unused projectiles are added to the dead list and not deleted anymore

File size: 2.8 KB
RevLine 
[4245]1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Patrick Boenzli
13*/
14
15#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_OBJECT_MANAGER
16
17#include "object_manager.h"
[4288]18#include "garbage_collector.h"
[4286]19#include "list.h"
[4245]20
[4288]21
[4245]22using namespace std;
23
24
25/**
26   \brief standard constructor
27*/
28ObjectManager::ObjectManager () 
29{
[4286]30  this->setClassName ("ObjectManager");
31 
32  //this->managedObjectList = new BaseObject*[CL_NUMBER];
33  this->managedObjectList = new tList<BaseObject>*[CL_NUMBER];
[4288]34
35  this->garbageCollector = GarbageCollector::getInstance();
[4245]36}
37
38/**
39   \brief the singleton reference to this class
40*/
41ObjectManager* ObjectManager::singletonRef = NULL;
42
43/**
44   \returns a Pointer to this Class
45*/
46ObjectManager* ObjectManager::getInstance(void)
47{
48  if (!ObjectManager::singletonRef)
49    ObjectManager::singletonRef = new ObjectManager();
50  return ObjectManager::singletonRef;
51}
52
[4285]53
[4245]54/**
55   \brief standard deconstructor
56
57*/
58ObjectManager::~ObjectManager () 
59{
60  ObjectManager::singletonRef = NULL;
[4285]61}
[4245]62
[4285]63
[4286]64void ObjectManager::cache(classList index, int number, const BaseObject &copyObject)
[4285]65{
[4286]66  //this->managedObjectList[index] = new BaseObject[number];
67  this->managedObjectList[index] = new tList<BaseObject>();
68  for(int i = 0; i < number; ++i)
69    {
70      this->managedObjectList[index]->add(new BaseObject(copyObject));
71    }
[4245]72}
[4285]73
74
[4288]75void ObjectManager::addToDeadList(classList index, BaseObject* object)
76{
77  if( likely(this->managedObjectList[index] != NULL))
78    this->managedObjectList[index]->add(object);
79  else
[4289]80    PRINTF(0)(" Error: unable to add object to the list nr. %i: no list initialized - ignoring\n", index);
[4288]81}
[4285]82
83
[4288]84BaseObject* ObjectManager::getFromDeadList(classList index, int number)
[4289]85{
86  if( likely(this->managedObjectList[index] != NULL))
87    {
88      BaseObject* obj = this->managedObjectList[index]->firstElement();
89      this->managedObjectList[index]->remove(obj);
90      return obj;
91    }
92  else
93    PRINTF(0)(" Error: unable to get object from the list nr. %i: no elements initialized - ignoring\n", index);
94}
[4287]95
96
97void ObjectManager::debug()
98{
99  PRINT(0)("\n==========================| ObjectManager::debug() |===\n");
100  PRINT(0)("=  Number of registerable classes: %i\n", CL_NUMBER ); 
101  PRINT(0)("=  Currently cached objects: \n");
102  for(int i = 0; i < CL_NUMBER; ++i)
103    {
104      if(this->managedObjectList[i] != NULL)
105        PRINT(0)("=   o Class Nr. %i has cached %i object(s)\n", i, this->managedObjectList[i]->getSize());
106      else
107        PRINT(0)("=   o Class Nr. %i has cached 0 object(s)\n", i);
108    }
109  PRINT(0)("=======================================================\n");
110}
Note: See TracBrowser for help on using the repository browser.