Changeset 2077 in orxonox.OLD for orxonox/trunk/src
- Timestamp:
- Jul 5, 2004, 9:51:48 PM (20 years ago)
- Location:
- orxonox/trunk/src
- Files:
-
- 2 added
- 1 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/Makefile.am
r2043 r2077 6 6 7 7 bin_PROGRAMS=orxonox 8 orxonox_SOURCES=orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc list.cc vector.cc ability.cc8 orxonox_SOURCES=orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc vector.cc ability.cc power_up.cc 9 9 10 10 # uncomment the following if bencoder requires the math library -
orxonox/trunk/src/Makefile.in
r2043 r2077 117 117 #"-O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include" 118 118 bin_PROGRAMS = orxonox 119 orxonox_SOURCES = orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc list.cc vector.cc ability.cc119 orxonox_SOURCES = orxonox.cc world.cc environment.cc player.cc npc.cc input_output.cc data_tank.cc ai.cc shoot_laser.cc shoot_rocket.cc world_entity.cc synchronisable.cc vector.cc ability.cc power_up.cc 120 120 subdir = src 121 121 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 … … 130 130 input_output.$(OBJEXT) data_tank.$(OBJEXT) ai.$(OBJEXT) \ 131 131 shoot_laser.$(OBJEXT) shoot_rocket.$(OBJEXT) \ 132 world_entity.$(OBJEXT) synchronisable.$(OBJEXT) list.$(OBJEXT)\133 vector.$(OBJEXT) ability.$(OBJEXT) 132 world_entity.$(OBJEXT) synchronisable.$(OBJEXT) \ 133 vector.$(OBJEXT) ability.$(OBJEXT) power_up.$(OBJEXT) 134 134 orxonox_OBJECTS = $(am_orxonox_OBJECTS) 135 135 orxonox_LDADD = $(LDADD) … … 142 142 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ability.Po ./$(DEPDIR)/ai.Po \ 143 143 @AMDEP_TRUE@ ./$(DEPDIR)/data_tank.Po ./$(DEPDIR)/environment.Po \ 144 @AMDEP_TRUE@ ./$(DEPDIR)/input_output.Po ./$(DEPDIR)/ list.Po \145 @AMDEP_TRUE@ ./$(DEPDIR)/ npc.Po ./$(DEPDIR)/orxonox.Po \146 @AMDEP_TRUE@ ./$(DEPDIR)/p layer.Po ./$(DEPDIR)/shoot_laser.Po \144 @AMDEP_TRUE@ ./$(DEPDIR)/input_output.Po ./$(DEPDIR)/npc.Po \ 145 @AMDEP_TRUE@ ./$(DEPDIR)/orxonox.Po ./$(DEPDIR)/player.Po \ 146 @AMDEP_TRUE@ ./$(DEPDIR)/power_up.Po ./$(DEPDIR)/shoot_laser.Po \ 147 147 @AMDEP_TRUE@ ./$(DEPDIR)/shoot_rocket.Po \ 148 148 @AMDEP_TRUE@ ./$(DEPDIR)/synchronisable.Po ./$(DEPDIR)/vector.Po \ … … 205 205 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@ 206 206 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input_output.Po@am__quote@ 207 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@208 207 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/npc.Po@am__quote@ 209 208 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox.Po@am__quote@ 210 209 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@ 210 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/power_up.Po@am__quote@ 211 211 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shoot_laser.Po@am__quote@ 212 212 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shoot_rocket.Po@am__quote@ -
orxonox/trunk/src/list.h
r2036 r2077 1 /*! 2 \file list.h 3 \brief Contains a template for a doubly linked list 4 */ 1 5 2 6 #ifndef LIST_H 3 7 #define LIST_H 4 8 5 #include "list.h" 6 7 class WorldEntity; 8 9 class List { 10 9 #include "stdlib.h" 10 11 //! An enum to list all the modes available when adding an object to a List 12 enum ADDMODE {LIST_ADD_NEXT, LIST_ADD_PREV, LIST_ADD_FIRST, LIST_ADD_LAST}; 13 //! An enum to list the two searching directions available when removing an object from a List 14 enum FINDMODE {LIST_FIND_BW, LIST_FIND_FW}; 15 16 //! A generic doubly linked list 17 template<class T> class List 18 { 19 T* object; 20 List<T>* next; 21 List<T>* prev; 22 bool bReference; 23 11 24 public: 12 List ( );25 List (T* obj, List<T>* n, List<T>* p, bool bRef); 13 26 ~List (); 14 15 void addElement(WorldEntity* we); 16 void removeElement(WorldEntity* we); 17 WorldEntity* getElement(int number); 18 int getNrOfElement(WorldEntity* we); 19 void defragment(); 20 void flushList(); 21 void killList(); 22 23 private: 24 struct listElement { 25 WorldEntity* we; 26 listElement* next; 27 listElement* prev; 28 }; 29 listElement* lastElement; 30 int listSize; 31 32 27 28 int add (T* obj, ADDMODE mode, bool bRef); 29 T* get_object(); 30 List<T>* get_next (); 31 List<T>* get_previous (); 32 List<T>* get_last (); 33 List<T>* get_first (); 34 void set_next (List<T>* ptr); 35 void set_prev (List<T>* ptr); 36 int remove (T* obj, FINDMODE mode); 33 37 }; 34 38 39 40 /** 41 \brief Standard constructor 42 43 Call this without any parameters to generate a new List which can be filled with content. 44 DO NOT create a List element that contains an object on your own, you'll lose the data 45 contained in that object and will have trouble removing the list from your memory. 46 */ 47 template<class T> 48 List<T>::List (T* obj = NULL, List<T>* n = NULL, List<T>* p = NULL, bool bRef = false) 49 { 50 object = obj; 51 next = n; 52 prev = p; 53 bReference = bRef; 54 } 55 56 /** 57 \brief Standard destructor 58 59 Call this on the initially generated base List element to remove the whole List from the memory. 60 You can safely do this to any List element you want without messing up the rest of the List, but keep in mind 61 that the contained object will be deleted as well when bRef had been set to false. 62 */ 63 template<class T> 64 List<T>::~List () 65 { 66 if (object == NULL) // deleted foot node => disband the list 67 { 68 while( next != NULL) 69 { 70 delete next; 71 } 72 while( prev != NULL) 73 { 74 delete prev; 75 } 76 } 77 else 78 { 79 if (prev != NULL) prev->set_next (next); 80 if (next != NULL) next->set_prev (prev); 81 if (!bReference) delete object; 82 } 83 } 84 85 /** 86 \brief Add an object to the List 87 \param obj: A pointer to an allocated object 88 \param mode: A Value of ADDMODE (default: LIST_ADD_NEXT) 89 \param bRef: Sets whether the element is serving as a storage point or a simple listing (default: false) 90 \return 0 if the operation succeded, -1 if the element could not be added 91 92 This adds a new List element to the chain. The mode parameter can be used to specify 93 the location where the element should be added. LIST_ADD_NEXT will add the new element directly 94 after the base element. LIST_ADD_PREV will add the new element directly before the base element. 95 LIST_ADD_FIRST will add the element at the beginning of the List whereas LIST_ADD_LAST will add 96 it to the end of the chain. If the bRef parameter is set to true, the object pointer will not be deleted 97 when the element containing that object is deleted, thus the List can be used for temporary listings as 98 well as permanent data storage. 99 */ 100 template<class T> 101 int List<T>::add (T* obj, ADDMODE mode = LIST_ADD_NEXT, bool bRef = false) 102 { 103 List<T>* p; 104 if( obj == NULL) return -1; 105 switch (mode) 106 { 107 case LIST_ADD_NEXT: 108 p = new List<T>( obj, next, this, bRef); 109 if( next != NULL) next->set_prev (p); 110 next = p; 111 break; 112 case LIST_ADD_PREV: 113 p = new List<T>( obj, this, prev, bRef); 114 if( prev != NULL) prev->set_next (p); 115 prev = p; 116 break; 117 case LIST_ADD_FIRST: 118 if (prev == NULL) prev = new List<T> (obj, this, NULL, bRef); 119 else return prev->add (obj, mode, bRef); 120 break; 121 case LIST_ADD_LAST: 122 if (next == NULL) next = new List<T> (obj, NULL, this, bRef); 123 else return next->add (obj, mode, bRef); 124 break; 125 default: 126 return -1; 127 break; 128 } 129 return 0; 130 } 131 132 /** 133 \brief Get the next element of the List 134 \return The List element after the current List element 135 */ 136 template<class T> 137 List<T>* List<T>::get_next () 138 { 139 return next; 140 } 141 142 /** 143 \brief Get the previous element of the List 144 \return The List element before the current List element 145 */ 146 template<class T> 147 List<T>* List<T>::get_previous () 148 { 149 return prev; 150 } 151 152 /** 153 \brief Get the last element of the List 154 \return The last List element 155 */ 156 template<class T> 157 List<T>* List<T>::get_last () 158 { 159 if (next == NULL) return this; 160 else return next->get_last(); 161 } 162 163 /** 164 \brief Get the first element of the List 165 \return The first List element 166 */ 167 template<class T> 168 List<T>* List<T>::get_first () 169 { 170 if (prev == NULL) return this; 171 else return prev->get_first(); 172 } 173 174 /** 175 \brief Removes a certain element from the List 176 \param obj: A pointer to the object that should be removed 177 \param mode: A value of FINDMODE 178 \return 0 if the element was found and removed, -1 if the element was not found 179 180 This searches the part of the List specified with mode for the object in question. 181 When the object is found it is deleted and the List element is removed from the chain. 182 If mode is LIST_FIND_FW all elements AFTER the base element are searched, if mode is 183 LIST_FIND_BW all elements BEFORE the base element are searched. Note that the object 184 contained within the List element is NOT deleted when bRef was set to true. 185 */ 186 template<class T> 187 int List<T>::remove (T* obj, FINDMODE mode = LIST_FIND_FW) 188 { 189 if (obj == NULL) return -1; 190 else 191 { 192 switch (mode) 193 { 194 case LIST_FIND_BW: 195 if (prev == NULL) return -1; 196 else 197 { 198 if( prev->get_object() == obj) 199 { 200 delete prev; 201 } 202 else 203 { 204 return prev->remove( obj, mode); 205 } 206 } 207 break; 208 case LIST_FIND_FW: 209 if (next == NULL) return -1; 210 else 211 { 212 if( next->get_object() == obj) 213 { 214 delete next; 215 } 216 else 217 { 218 return next->remove( obj, mode); 219 } 220 } 221 break; 222 default: 223 return -1; 224 } 225 } 226 return 0; 227 } 228 229 /** 230 \brief Set the next element of a List element 231 \param ptr: A pointer to the new next element 232 233 Sets the next element of a List element... Better not touch this, it can really mess up a List. 234 */ 235 template<class T> 236 void List<T>::set_next (List<T>* ptr) 237 { 238 next = ptr; 239 } 240 241 /** 242 \brief Set the prev element of a List element 243 \param ptr: A pointer to the new previous element 244 245 Sets the previous element of a List element... Better not touch this, it can really mess up a List. 246 */ 247 template<class T> 248 void List<T>::set_prev (List<T>* ptr) 249 { 250 prev = ptr; 251 } 252 253 /** 254 \brief Get the pointer to the object the element is containing 255 \return The contained object (will be NULL if called on the base element). 256 */ 257 template<class T> 258 T* List<T>::get_object() 259 { 260 return object; 261 } 262 263 264 35 265 #endif 266 -
orxonox/trunk/src/world.cc
r2036 r2077 28 28 #include "data_tank.h" 29 29 30 #include "list.h" 31 #include "world_entity.h" 32 30 33 #include "world.h" 31 34 … … 37 40 \brief Create a new World 38 41 39 This creates a new empty world!42 This creates a new, empty world! 40 43 */ 41 44 World::World () { 42 lastPlayer = null;43 lastNPC = null;44 lastEnv = null;45 //lastPlayer = null; 46 //lastNPC = null; 47 //lastEnv = null; 45 48 primitiveMove = 0; 46 49 step = 0; 50 51 //List<int> *list = new List<int>(); 52 npcList = new List<WorldEntity*>(); 53 playerList = new List<WorldEntity*>(); 54 envList = new List<WorldEntity*>(); 47 55 } 48 56 49 57 50 58 World::~World () {} 59 60 61 62 /** 63 \brief Load a new World 64 65 Load a new world. The old world (if any) will be unloaded and becomes unrecoverable. 66 */ 67 void World::loadWorld() {} 68 69 70 /** 71 \brief Unloads a new World 72 73 Unloads a world and frees the memory. You cant game until you have a new world loaded. 74 */ 75 void World::unloadWorld() {} 76 77 78 /** 79 \brief Pause the game 80 81 Pauses the game until the pause is released. During this time nothing moves at all and nothing is calculated. Use it if you have to go out of the game to read some mails... 82 */ 83 void World::pauseWorld() {} 84 85 86 /** 87 \brief Save the game to file 88 \param filename: the filename where the savegame should be saved to 89 90 Saves the state of the game to a file. The state is catched like in a multiplayer game over a synchronisable interface. 91 */ 92 void World::saveGameState(char* filename) {} 93 51 94 52 95 … … 59 102 bool World::addPlayer(Player* player) 60 103 { 104 WorldEntity *we; 105 playerList->add(we); 106 /* 61 107 playerList* listMember = new playerList; 62 108 listMember->player = player; … … 72 118 } 73 119 lastPlayer = listMember; 74 } 75 120 */ 121 } 76 122 77 123 /** … … 79 125 \param player A reference to the new npc object 80 126 81 Remove a new Player to the game. 127 Remove a new Player to the game. This kills the player objects. 82 128 */ 83 129 bool World::removePlayer(Player* player) { 84 cout << "World::removeNPC not implemented yet" << endl; 85 } 86 130 playerList->remove(player, LIST_FIND_BW); 131 } 132 133 /** 134 \brief Returns the player-entity controlled by the local gamer 135 \return pointer to player object 136 137 Remove a new Player to the game. This kills the player objects. 138 */ 87 139 Player* World::getLocalPlayer() 88 140 { … … 99 151 bool World::addNPC(NPC* npc) 100 152 { 153 npcList->add(npc, LIST_ADD_NEXT); 154 /* 101 155 npcList* listMember = new npcList; 102 156 listMember->npc = npc; … … 112 166 } 113 167 lastNPC = listMember; 168 */ 114 169 } 115 170 … … 117 172 /** 118 173 \brief Remove Non-Player Character 119 \param player A reference to the new npc object 120 121 Remove a new Non-Player-Character to the game. 122 */ 123 bool World::removeNPC(NPC* npc) { 124 174 \param player A reference to the npc object 175 176 Remove a Non-Player-Character to the game. 177 */ 178 bool World::removeNPC(NPC* npc) 179 { 180 npcList->remove(npc, LIST_FIND_FW); 181 /* 125 182 npcList* npcRef = lastNPC; 126 183 npcList* lastRef = lastNPC; … … 128 185 { 129 186 if ( npcRef->npc == npc ) { 130 cout << "found" << endl; 187 cout < 188 < "found" << endl; 131 189 if ( npcRef == lastRef ) { 132 190 lastNPC = lastNPC->next; … … 148 206 } 149 207 cout << "npc left" << endl; 208 */ 150 209 } 151 210 … … 160 219 bool World::addEnv(Environment* env) 161 220 { 221 /* 162 222 envList* listMember = new envList; 163 223 listMember->env = env; … … 173 233 } 174 234 lastEnv = listMember; 235 */ 236 } 237 238 /** 239 \brief Remove an environmental object 240 \param player A reference to the env object 241 242 Remove a environment from the game. 243 */ 244 bool World::removeEnv(Environment* env) 245 { 246 175 247 } 176 248 … … 189 261 gluLookAt(0.0, -14.0 + DataTank::yOffset, 15.0, 0.0, 0.0 + DataTank::yOffset, 0.0, 0.0, 1.0, 0.0); 190 262 /* first draw all players */ 263 264 265 /* 191 266 playerList* tmpPlayer = lastPlayer; 192 267 Player* player = tmpPlayer->player; … … 196 271 tmpPlayer = tmpPlayer->next; 197 272 } 273 */ 198 274 /* second draw all npcs */ 275 /* 199 276 npcList* tmpNPC = lastNPC; 200 277 while( tmpNPC != null ) … … 203 280 tmpNPC = tmpNPC->next; 204 281 } 282 */ 205 283 206 284 /* now draw the rest of the world: environement */ 285 /* 207 286 envList* tmpEnv = lastEnv; 208 287 while( tmpEnv != null ) … … 211 290 tmpEnv = tmpEnv->next; 212 291 } 213 292 */ 293 214 294 /* draw the ground grid */ 215 295 glColor3f(0.0, 1.0, 0.0); … … 240 320 DataTank::yOffset += step; 241 321 322 /* 242 323 tmpPlayer = lastPlayer; 243 324 while( tmpPlayer != null ) … … 246 327 tmpPlayer = tmpPlayer->next; 247 328 } 248 329 */ 249 330 250 331 } … … 291 372 void World::detectCollision() 292 373 { 374 /* 293 375 //cout << "World::detectCollision" << endl; 294 376 float xOff, yOff, zOff, radius; 295 377 npcList* tmpNPC, *tmpRef; 296 378 */ 297 379 //cout << "World::detectCollsions" << endl; 298 380 /* first: check if any player's shoots trigger a collision */ 381 /* 299 382 playerList* tmpPlayer = lastPlayer; 300 383 Player* player = tmpPlayer->player; … … 318 401 //cout << "COLLISION " << endl; 319 402 int state = tmpNPC->npc->hit(); 403 */ 320 404 /* state is a value that marks if the ship dies or not */ 321 405 /* if state == 0 the ship dies and we have to remove it */ … … 327 411 break; 328 412 } 329 */413 330 414 } 331 415 shoota = shoota->next; … … 338 422 tmpPlayer = tmpPlayer->next; 339 423 //cout << "changing play done" << endl; 340 } 341 424 425 } 426 */ 342 427 //cout << "World::detectCollisions middle" << endl; 343 428 344 429 /* second: check if any player hits an enemy */ 430 /* 345 431 tmpPlayer = lastPlayer; 346 432 while( tmpPlayer != null ) … … 365 451 366 452 367 453 */ 368 454 /* third: check if any enemy shoots a player */ 369 455 … … 380 466 void World::testThaTest(void) 381 467 { 468 /* 382 469 cout << "World::testThaTest() called" << endl; 383 /* test addPlayer */ 470 384 471 cout << "addPlayer test..." << endl; 385 472 playerList* pl = lastPlayer; … … 390 477 } 391 478 392 /* test addNPC */ 479 393 480 cout << "addNPC test..." << endl; 394 481 npcList* nl = lastNPC; … … 400 487 401 488 402 /* test addEnv */ 489 403 490 cout << "addEnv test..." << endl; 404 491 envList* en = lastEnv; … … 408 495 en = en->next; 409 496 } 410 411 /* test drawWorld() */ 412 } 497 */ 498 } -
orxonox/trunk/src/world.h
r2036 r2077 1 /** 2 Class representating the game-world 3 4 It contains a list of players (if multiplayer game), a list of Non-Player-Characters (nps), a list of Environment Entities. All this things together are building the orxonox-world. This class also handels the story-line (track), the world start/stop, init/uninit abilities. It is the middle point of every orxonox world. 5 */ 1 6 2 7 #ifndef WORLD_H … … 6 11 class NPC; 7 12 class Environment; 13 class WorldEntity; 14 15 template<class T> class List; 8 16 9 17 18 19 //! World Class 20 /** 21 Class for World representation 22 23 It contains a list of players (if multiplayer game), a list of Non-Player-Characters (nps), a list of Environment Entities. All this things together are building the orxonox-world. This class also handels the story-line (track), the world start/stop, init/uninit abilities. It is the middle point of every orxonox world. 24 */ 10 25 class World { 11 26 … … 14 29 ~World (); 15 30 16 float primitiveMove;17 31 18 /* for easier use: map the first two player here */19 Player *localPlayer;20 Player *player1;21 Player *player2;22 32 23 /* a list of all players */ 33 float primitiveMove; //!< deprecated, do not use 34 35 Player *localPlayer; //!< a pointer to the local player object 36 Player *player1; //!< a pointer to the second player object 37 Player *player2; //!< a pointer to the third player object 38 39 /* 24 40 struct playerList { 25 41 playerList* next; … … 29 45 playerList* lastPlayer; 30 46 31 /* a list of all non-player-characters */32 47 struct npcList { 33 48 npcList* next; … … 37 52 npcList* lastNPC; 38 53 39 /* a list of all environmental objects */40 54 struct envList { 41 55 envList* next; … … 44 58 }; 45 59 envList* lastEnv; 60 */ 46 61 47 62 48 63 void loadWorld(); 64 void unloadWorld(); 65 void pauseWorld(); 66 void saveGameState(char* filename); 67 49 68 50 69 bool addPlayer(Player* player); … … 54 73 bool removeNPC(NPC* npc); 55 74 bool addEnv(Environment* env); 75 bool removeEnv(Environment* env); 56 76 77 57 78 void drawWorld(void); 58 79 void initEnvironement(void); … … 63 84 64 85 private: 65 float surface[120][120]; 66 float step; 86 float surface[120][120]; //!< deprecated: used to build a surface 87 float step; //!< this is the step 88 89 List<WorldEntity*> *playerList; //!< the list of players, usualy very short 90 List<WorldEntity*> *npcList; //!< list of non player characters (npc) 91 List<WorldEntity*> *envList; //!< list of environment objects 67 92 68 93 -
orxonox/trunk/src/world_entity.cc
r2043 r2077 108 108 /** 109 109 \brief this method is called every tick 110 \param time: the time since start of the world110 \param time: the time since the last frame was painted 111 111 112 112 This function is called before every repaint of the world, to update every time dependent variable of the entity. If the entity moves, it has to calculate the new position every tick here in this function. Do not use this for animations. 113 113 */ 114 void WorldEntity::tick(float time)114 void WorldEntity::tick(float dt) 115 115 {} 116 116 … … 121 121 */ 122 122 void WorldEntity::paint() 123 { 124 cout << "WorldEntity::paint()" << endl; 125 } 123 {} 126 124 127 125 /* virtual void WorldEntity::actionEvent(Event* event); */ -
orxonox/trunk/src/world_entity.h
r2043 r2077 1 /*! 2 \file world_entity.h 3 \brief A base class for all objects in the world 4 5 This is the base class of all objects in the game-world. If you want to have an object in the world, that can realy interact with other objects and that is also dispbayable etc. you have to extend this class and override the needed functions. 6 */ 7 8 1 9 2 10 #ifndef WORLD_ENTITY_H … … 8 16 class Ability; 9 17 18 //! WorldEntity 19 /** 20 A base class for all objects in the world 21 22 This is the base class of all objects in the game-world. If you want to have an object in the world, that can realy interact with other objects and that is also dispbayable etc. you have to extend this class and override the needed functions. 23 */ 10 24 class WorldEntity { 11 25 … … 28 42 void removeAbility(Ability* ability); 29 43 30 virtual void tick(float time);44 virtual void tick(float dt); 31 45 virtual void paint(); 32 46 /* virtual void actionEvent(Event* event); */ … … 43 57 44 58 private: 45 Vector* position; 46 Vector* orientation; 59 Vector* position; //!< position of the entity 60 Vector* orientation; //!< orientation of the entity 47 61 /* List of abilities */ 48 float health; 49 float speed; 62 float health; //!< health of the entity, if any 63 float speed; //!< speed of the entity if any 50 64 /* entity can be in the air or at ground: */ 51 int airGround; 65 int airGround; //!< is it air or bound to the ground (ground=0, air=1) 52 66 53 67
Note: See TracChangeset
for help on using the changeset viewer.