Changeset 8894 in orxonox.OLD for trunk/src/world_entities
- Timestamp:
- Jun 29, 2006, 12:19:48 AM (18 years ago)
- Location:
- trunk/src/world_entities
- Files:
-
- 9 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/WorldEntities.am
r8793 r8894 16 16 world_entities/character_attributes.cc \ 17 17 world_entities/test_entity.cc \ 18 world_entities/door.cc \ 18 19 world_entities/planet.cc \ 19 20 world_entities/bsp_entity.cc \ … … 26 27 world_entities/weapons/hyperblaster.cc \ 27 28 world_entities/weapons/aim.cc \ 29 world_entities/weapons/fps_sniper_rifle.cc \ 28 30 \ 29 31 world_entities/projectiles/bomb.cc \ … … 74 76 character_attributes.h \ 75 77 test_entity.h \ 78 door.h \ 76 79 planet.h \ 77 80 bsp_entity.h \ … … 84 87 weapons/targeting_turret.h \ 85 88 weapons/aim.h \ 89 weapons/fps_sniper_rifle.h \ 86 90 \ 87 91 projectiles/bomb.h \ -
trunk/src/world_entities/creatures/fps_player.cc
r8846 r8894 26 26 #include "weapons/turret.h" 27 27 #include "weapons/cannon.h" 28 #include "weapons/fps_sniper_rifle.h" 28 29 29 30 #include "key_mapper.h" … … 35 36 36 37 CREATE_FACTORY(FPSPlayer, CL_FPS_PLAYER); 38 39 #include "script_class.h" 40 CREATE_SCRIPTABLE_CLASS(FPSPlayer, CL_FPS_PLAYER, 41 addMethod("setAbsCoor", ExecutorLua3<PNode,float,float,float>(&PNode::setAbsCoor)) 42 ->addMethod("getAbsCoorX", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorX)) 43 ->addMethod("getAbsCoorY", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorY)) 44 ->addMethod("getAbsCoorZ", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorZ)) 45 ); 37 46 38 47 … … 101 110 dynamic_cast<Element2D*>(this->getWeaponManager().getFixedTarget())->setVisibility( false); 102 111 103 Weapon* wpRight = new TestGun(0);112 Weapon* wpRight = new FPSSniperRifle(0); 104 113 wpRight->setName("testGun Right"); 105 Weapon* wpLeft = new TestGun(1); 114 /* Weapon* wpLeft = new TestGun(1);*/ 106 115 // Weapon* wpLeft = new Turret(); 107 wpLeft->setName("testGun Left");108 109 this->addWeapon(wpLeft, 1, 0);110 this->addWeapon(wpRight,1 ,1);116 // wpLeft->setName("testGun Left"); 117 118 // this->addWeapon(wpLeft, 1, 0); 119 this->addWeapon(wpRight,1, 0); 111 120 this->getWeaponManager().changeWeaponConfig(1); 112 121 113 122 this->getWeaponManager().setSlotCount(2); 114 this->getWeaponManager().setSlotPosition(0, Vector(-0.5, .2, -1.9)); 123 this->getWeaponManager().setSlotPosition(0, Vector(0.0, 5.0, 0.0)); 124 this->getWeaponManager().setSlotDirection(1, Quaternion(M_PI_4*.5, Vector(0,1,0))); 115 125 this->getWeaponManager().setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL); 116 126 this->getWeaponManager().setSlotPosition(1, Vector(-0.5, .2, 1.9)); -
trunk/src/world_entities/npcs/generic_npc.cc
r8805 r8894 38 38 CREATE_FACTORY(GenericNPC, CL_GENERIC_NPC); 39 39 40 #include "script_class.h" 41 CREATE_SCRIPTABLE_CLASS(GenericNPC, CL_GENERIC_NPC, 42 // Move 43 addMethod("walkTo", ExecutorLua3ret<GenericNPC,float,float,float,float>(&GenericNPC::walkTo)) 44 ->addMethod("setTime", ExecutorLua1<GenericNPC,float>(&GenericNPC::setTime)) 45 ->addMethod("turnTo", ExecutorLua4ret<GenericNPC,bool,float,float,float,float>(&GenericNPC::turnTo)) 46 // Display 47 ->addMethod("hide", ExecutorLua0<WorldEntity>(&WorldEntity::hide)) 48 ->addMethod("unhide", ExecutorLua0<WorldEntity>(&WorldEntity::unhide)) 49 // Coordinates 50 ->addMethod("getAbsCoorX", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorX)) 51 ->addMethod("getAbsCoorY", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorY)) 52 ->addMethod("getAbsCoorZ", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorZ)) 53 ->addMethod("setAbsCoor", ExecutorLua3<PNode,float,float,float>(&PNode::setAbsCoor)) 54 ->addMethod("setAbsDir", ExecutorLua4<PNode,float,float,float,float>(&PNode::setAbsDir)) 55 56 ); 57 40 58 41 59 … … 52 70 } 53 71 72 73 GenericNPC::GenericNPC() 74 : NPC(NULL) 75 { 76 77 } 54 78 55 79 /** … … 75 99 this->soundBuffer = (OrxSound::SoundBuffer*)ResourceManager::getInstance()->load("sound/rain.wav", WAV); 76 100 101 time = 30.0f; 77 102 // collision reaction registration 78 103 // this->subscribeReaction(CREngine::CR_PHYSICS_GROUND_WALK, CL_BSP_ENTITY); … … 136 161 137 162 // check if this is the current goal 138 if( this->destCoor != destCoor &&this->destDir != destDir)163 if( this->destCoor != destCoor || this->destDir != destDir) 139 164 { 140 this->destCoor = Vector(x, y, 0.0f);141 this->destDir = Quaternion(Vector(qx, qy, qz), qu);142 143 float time = 5.0f;165 this->destCoor = destCoor; 166 this->destDir = destDir; 167 168 //float time = 100.0f; 144 169 145 170 if( this->currentAnim != NULL) … … 147 172 148 173 this->currentAnim = new Animation3D(this); 149 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), 0.0f); 150 this->currentAnim->addKeyFrame(this->destCoor, this->destDir, time); 174 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), 0.0f, ANIM_LINEAR, ANIM_LINEAR); 175 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), time, ANIM_LINEAR, ANIM_LINEAR); 176 this->currentAnim->addKeyFrame(this->destCoor, this->destDir, time, ANIM_LINEAR, ANIM_LINEAR); 177 178 this->currentAnim->setInfinity(ANIM_INF_CONSTANT); 179 this->currentAnim->play(); 180 181 this->setAnimation(RUN, MD2_ANIM_LOOP); 151 182 } 152 183 … … 157 188 158 189 190 /** 191 * walk to a specific place with direction 192 * 193 * @param x: x coordinate to go to 194 * @param y: y coordinate to go to 195 * @param z: z coordinate to go to 196 * 197 * without turning itself 198 */ 199 float GenericNPC::walkTo(float x, float y, float z) 200 { 201 Quaternion q = this->getAbsDir(); 202 203 //printf("%s moving to %f, %f, %f \n",this->getName(),x,y,z); 204 205 return this->walkTo(x, y, z, q.w, q.v.x, q.v.y, q.v.z); 206 } 159 207 160 208 /** … … 188 236 189 237 238 239 /** 240 * run to a specific place with direction 241 * 242 * @param x: x coordinate to go to 243 * @param y: y coordinate to go to 244 * @param z: z coordinate to go to 245 * @param qu: angle to rotate 246 * @param qx: x coordinate of rotation vector 247 * @param qy: y coordinate of rotation vector 248 * @param qz: z coordinate of rotation vector 249 * 250 */ 251 float GenericNPC::runTo(float x, float y, float z, float qu, float qx, float qy, float qz) 252 { 253 Vector destCoor = Vector(x, y, z); 254 Quaternion destDir = Quaternion(Vector(qx, qy, qz), qu); 255 256 // check if this is the current goal 257 if( this->destCoor != destCoor || this->destDir != destDir) 258 { 259 this->destCoor = destCoor; 260 this->destDir = destDir; 261 262 float time = 5.0f; 263 264 if( this->currentAnim != NULL) 265 delete this->currentAnim; 266 267 this->currentAnim = new Animation3D(this); 268 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), time, ANIM_LINEAR, ANIM_LINEAR); 269 this->currentAnim->addKeyFrame(this->destCoor, this->destDir, time, ANIM_LINEAR, ANIM_LINEAR); 270 271 272 this->currentAnim->setInfinity(ANIM_INF_CONSTANT); 273 this->currentAnim->play(); 274 275 this->setAnimation(RUN, MD2_ANIM_LOOP); 276 } 277 278 // calculate the distance 279 Vector distance = this->getAbsCoor() - this->destCoor; 280 return distance.len(); 281 } 282 283 284 /** 285 * run to a specific place with direction 286 * 287 * @param x: x coordinate to go to 288 * @param y: y coordinate to go to 289 * @param qu: angle to rotate 290 * @param qx: x coordinate of rotation vector 291 * @param qy: y coordinate of rotation vector 292 * @param qz: z coordinate of rotation vector 293 * 294 */ 295 float GenericNPC::runTo(float x, float y, float qu, float qx, float qy, float qz) 296 { 297 this->runTo(x, y, 0.0f, qu, qx, qy, qz); 298 } 299 300 301 /** 302 * run to a specific place with direction 303 * 304 * @param coor: vector place 305 * @param dir: direction 306 * 307 */ 308 float GenericNPC::runTo(const Vector& coordinate, const Quaternion& dir) 309 { 310 this->runTo(coordinate.x, coordinate.y, coordinate.z, dir.w, dir.v.x, dir.v.y, dir.v.z); 311 } 312 313 314 /** 315 * crouch to a specific place with direction 316 * 317 * @param x: x coordinate to go to 318 * @param y: y coordinate to go to 319 * @param z: z coordinate to go to 320 * @param qu: angle to rotate 321 * @param qx: x coordinate of rotation vector 322 * @param qy: y coordinate of rotation vector 323 * @param qz: z coordinate of rotation vector 324 * 325 */ 326 float GenericNPC::crouchTo(float x, float y, float z, float qu, float qx, float qy, float qz) 327 { 328 Vector destCoor = Vector(x, y, z); 329 Quaternion destDir = Quaternion(Vector(qx, qy, qz), qu); 330 331 // check if this is the current goal 332 if( this->destCoor != destCoor || this->destDir != destDir) 333 { 334 this->destCoor = destCoor; 335 this->destDir = destDir; 336 337 338 if( this->currentAnim != NULL) 339 delete this->currentAnim; 340 341 this->currentAnim = new Animation3D(this); 342 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), time, ANIM_LINEAR, ANIM_LINEAR); 343 this->currentAnim->addKeyFrame(this->destCoor, this->destDir, time, ANIM_LINEAR, ANIM_LINEAR); 344 345 346 this->currentAnim->setInfinity(ANIM_INF_CONSTANT); 347 this->currentAnim->play(); 348 349 this->setAnimation(CROUCH_WALK, MD2_ANIM_LOOP); 350 } 351 352 // calculate the distance 353 Vector distance = this->getAbsCoor() - this->destCoor; 354 return distance.len(); 355 } 356 357 358 /** 359 * couch to a specific place with direction 360 * 361 * @param x: x coordinate to go to 362 * @param y: y coordinate to go to 363 * @param qu: angle to rotate 364 * @param qx: x coordinate of rotation vector 365 * @param qy: y coordinate of rotation vector 366 * @param qz: z coordinate of rotation vector 367 * 368 */ 369 float GenericNPC::crouchTo(float x, float y, float qu, float qx, float qy, float qz) 370 { 371 this->crouchTo(x, y, 0.0f, qu, qx, qy, qz); 372 } 373 374 375 376 /** 377 * crouch to a specific place with direction 378 * 379 * @param coor: vector place 380 * @param dir: direction 381 * 382 */ 383 float GenericNPC::crouchTo(const Vector& coordinate, const Quaternion& dir) 384 { 385 this->crouchTo(coordinate.x, coordinate.y, coordinate.z, dir.w, dir.v.x, dir.v.y, dir.v.z); 386 } 387 388 389 /** 390 * stops the generic animation 391 */ 392 void GenericNPC::stop() 393 { 394 if( this->currentAnim != NULL) 395 { 396 this->currentAnim->stop(); 397 delete this->currentAnim; 398 this->currentAnim = NULL; 399 400 this->setAnimation(STAND, MD2_ANIM_LOOP); 401 } 402 } 403 404 405 /** 406 * lookat a world entity 407 * @param worldEntity: the worldentity to look at 408 */ 409 float GenericNPC::lookAt(WorldEntity* worldEntity) 410 {} 411 412 413 /** 414 * turns to a given direction 415 */ 416 bool GenericNPC::turnTo(float qu, float qx, float qy, float qz) 417 { 418 Quaternion destDir = Quaternion(Vector(qx, qy, qz).getNormalized(), qu); 419 420 printf("Turning: %f, %f, %f, %f \n",qu,qx,qy,qz); 421 // check if this is the current goal 422 if( this->destDir != destDir) 423 { 424 // if( this->currentAnim != NULL) 425 // this->currentAnim->stop(); 426 // 427 PRINTF(0)("SET ANIMATION\n"); 428 this->destDir = destDir; 429 // 430 431 432 if( this->currentAnim != NULL) 433 delete this->currentAnim; 434 435 this->setAbsDir(destDir); 436 /* 437 this->currentAnim = new Animation3D(this); 438 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), 0.0f, ANIM_LINEAR, ANIM_LINEAR); 439 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->getAbsDir(), time, ANIM_LINEAR, ANIM_LINEAR); 440 this->currentAnim->addKeyFrame(this->getAbsCoor(), this->destDir, time, ANIM_LINEAR, ANIM_LINEAR); 441 442 443 this->currentAnim->setInfinity(ANIM_INF_CONSTANT); 444 this->currentAnim->play();*/ 445 446 this->setAnimation(STAND, MD2_ANIM_LOOP); 447 } 448 449 // calculate the distance 450 Vector distance = this->getAbsCoor() - this->destCoor; 451 return distance.len(); 452 } 453 454 455 456 /** 457 * talk to a world entity and play a sound/music/voice 458 * @param worldEntity: entity 459 * @param dialogNr: sound nr to be played (from the xml load tags) 460 */ 461 float GenericNPC::talkTo(WorldEntity* worldEntity, int dialogNr) 462 {} 463 464 465 /** 466 * world entity to shoot at if there is any weapon on the npc 467 * @param entity: entity to shoot entity 468 */ 469 void GenericNPC::shootAt(WorldEntity* entity) 470 {} 471 472 473 474 475 476 477 478 479 480 190 481 /** 191 482 * tick this world entity … … 196 487 if( likely(this->getModel(0) != NULL)) 197 488 ((InteractiveModel*)this->getModel(0))->tick(time); 489 198 490 } 199 491 -
trunk/src/world_entities/npcs/generic_npc.h
r8802 r8894 28 28 { 29 29 public: 30 GenericNPC(); 30 31 GenericNPC(const TiXmlElement* root); 31 32 virtual ~GenericNPC (); … … 38 39 inline void setVolume(float vol) { this->soundVolume = vol; } 39 40 40 void playAnimation(int animationIndex, int animPlaybackMode);41 41 42 void playSound(std::string filename); 43 void playSound(int i); 42 /* npc controlling functions */ 44 43 45 float lookAt(WorldEntity* worldEntity); 46 44 /* walking functions */ 47 45 float walkTo(const Vector& coordinate, const Quaternion& dir); 46 float walkTo(float x, float y, float z); 48 47 float walkTo(float x, float y, float z, float qu, float qx, float qy, float qz); 49 48 float walkTo(float x, float y, float qu, float qx, float qy, float qz); 50 49 50 /* running functions */ 51 51 float runTo(const Vector& coordinate, const Quaternion& dir); 52 52 float runTo(float x, float y, float z, float qu, float qx, float qy, float qz); 53 53 float runTo(float x, float y, float qu, float qx, float qy, float qz); 54 54 55 /* couching functinos */ 55 56 float crouchTo(const Vector& coordinate, const Quaternion& dir); 56 57 float crouchTo(float x, float y, float z, float qu, float qx, float qy, float qz); 57 58 float crouchTo(float x, float y, float qu, float qx, float qy, float qz); 58 59 60 /* stopping the movement */ 61 void stop(); 62 63 /* some oriantation functions */ 64 float lookAt(WorldEntity* worldEntity); 65 bool turnTo(float qu, float qx, float qy, float qz); 66 67 /* talking funcitons*/ 59 68 float talkTo(WorldEntity* worldEntity, int dialogNr); 69 70 /* shooting functions */ 71 void shootAt(WorldEntity* entity); 72 73 74 /* some generic control funtions */ 75 void playAnimation(int animationIndex, int animPlaybackMode); 76 void playSound(std::string filename); 77 void playSound(int i); 78 79 void setTime(float newTime){ this->time = newTime; }; 80 81 virtual void tick (float time); 60 82 61 83 62 84 void destroy(); 63 64 virtual void tick (float time);65 85 66 86 … … 74 94 75 95 Animation3D* currentAnim; 96 float time; //!< Duration of the action 76 97 }; 77 98 -
trunk/src/world_entities/npcs/npc.cc
r8724 r8894 50 50 void NPC::loadParams(const TiXmlElement* root) 51 51 { 52 WorldEntity::loadParams(root); 52 if(root != NULL) 53 WorldEntity::loadParams(root); 53 54 } 54 55 -
trunk/src/world_entities/script_trigger.cc
r8783 r8894 24 24 CREATE_SCRIPTABLE_CLASS(ScriptTrigger, CL_SCRIPT_TRIGGER, 25 25 addMethod("setAbsCoor", ExecutorLua3<PNode,float,float,float>(&PNode::setAbsCoor)) 26 27 28 26 ->addMethod("getAbsCoorX", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorX)) 27 ->addMethod("getAbsCoorY", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorY)) 28 ->addMethod("getAbsCoorZ", ExecutorLua0ret<PNode, float>(&PNode::getAbsCoorZ)) 29 29 ); 30 30 … … 41 41 42 42 returnCount = 1; 43 actionFinished = false;43 scriptFinished = false; 44 44 doDebugDraw = false; 45 45 invert = false; 46 46 scriptCalled = false; 47 47 scriptIsOk = false; 48 triggerLasts = false;48 triggerLasts = true; 49 49 addToScript = false; 50 50 … … 54 54 loadParams(root); 55 55 56 if(addToScript )56 if(addToScript && scriptIsOk) 57 57 { 58 58 script->addObject( "ScriptTrigger", this->getName()); … … 102 102 .describe("The name of the parent as it is in the *.oxw file") 103 103 .defaultValues(""); 104 LoadParam(root, "callonce", this, ScriptTrigger, setCallOnce)105 .describe("True if the script shoul only be called once")106 .defaultValues("");107 104 LoadParam(root, "invert", this, ScriptTrigger, setInvert) 108 105 .describe("") 109 .defaultValues(" ");106 .defaultValues("false"); 110 107 LoadParam(root, "triggerlasts", this, ScriptTrigger, setTriggerLasts) 111 108 .describe("") 112 .defaultValues(" ");109 .defaultValues("true"); 113 110 LoadParam(root, "debugdraw", this, ScriptTrigger, setDebugDraw) 114 .describe(" True if the script should only be called once")115 .defaultValues(" ");111 .describe("") 112 .defaultValues("false"); 116 113 LoadParam(root, "addtoscript", this, ScriptTrigger, setAddToScript) 117 114 .describe("True if this scripttrigger should be aviable in the script") 118 .defaultValues(" ");115 .defaultValues("false"); 119 116 } 120 117 … … 159 156 void ScriptTrigger::tick(float timestep) 160 157 { 161 if( actionFinished) return;158 if(scriptFinished) return; 162 159 163 160 if(triggerLasts && scriptCalled) … … 169 166 if( !invert && this->distance(target) < radius) 170 167 { 171 if(!callOnce)172 {173 168 executeAction(timestep); 174 169 scriptCalled = true; 175 }176 else if(callOnce && !scriptCalled)177 {178 executeAction(timestep);179 scriptCalled = true;180 }181 170 182 171 } 183 172 else if( invert && this->distance(target) > radius) 184 173 { 185 if(!callOnce) 186 { 187 executeAction(timestep); 188 } 189 else if(callOnce && !scriptCalled) 190 { 191 executeAction(timestep); 174 executeAction(timestep); 192 175 scriptCalled = true; 193 }194 195 176 } 196 177 //else … … 202 183 void ScriptTrigger::executeAction(float timestep) 203 184 { 185 204 186 if(scriptIsOk) 205 187 { … … 213 195 printf("Error ScriptTrigger: Execution of %s in %s failed.\n",functionName.c_str(), script->getFileName().c_str()); 214 196 215 actionFinished = script->getReturnedBool();197 scriptFinished = script->getReturnedBool(); 216 198 } 217 199 -
trunk/src/world_entities/script_trigger.h
r8783 r8894 35 35 void setTarget(WorldEntity* target) { if(target!=NULL) this->target=target; } 36 36 void setTriggerParent(const std::string& name); 37 void setCallOnce(const bool call) { this->callOnce = call; }38 37 void setTriggerLasts(const bool lasts) { this->triggerLasts = lasts; } 39 38 void setInvert(const bool inv) { this->invert = invert; } … … 51 50 52 51 WorldEntity* target; 53 bool callOnce;54 52 bool triggerLasts; 55 53 bool invert; … … 63 61 bool scriptCalled; 64 62 bool scriptIsOk; 65 bool actionFinished;63 bool scriptFinished; 66 64 int returnCount; //TODO: set return count correctly 67 65 -
trunk/src/world_entities/world_entity.cc
r8778 r8894 193 193 PRINTF(1)("OBJ-File %s not found.\n", fileName.c_str()); 194 194 195 if( modelNumber == 0 )195 if( modelNumber == 0 && !this->isA(CL_WEAPON)) 196 196 this->buildObbTree(obbTreeDepth); 197 197 } … … 418 418 CollisionEvent* c = CREngine::getInstance()->popCollisionEventObject(); 419 419 assert(c != NULL); // if this should fail: we got not enough precached CollisionEvents: alter value in cr_defs.h 420 c->collide( entityA, entityB, bvA, bvB);420 c->collide(COLLISION_TYPE_OBB, entityA, entityB, bvA, bvB); 421 421 422 422 for( int i = 0; i < CREngine::CR_NUMBER; ++i) … … 433 433 * @param position it collides on the plane 434 434 */ 435 bool WorldEntity::registerCollision( WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position)435 bool WorldEntity::registerCollision(int type, WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position, bool bInWall) 436 436 { 437 437 // is there any handler listening? … … 442 442 CollisionEvent* c = CREngine::getInstance()->popCollisionEventObject(); 443 443 assert(c != NULL); // if this should fail: we got not enough precached CollisionEvents: alter value in cr_defs.h 444 c->collide( entity, groundEntity, normal, position);444 c->collide(type, entity, groundEntity, normal, position, bInWall); 445 445 446 446 for( int i = 0; i < CREngine::CR_NUMBER; ++i) -
trunk/src/world_entities/world_entity.h
r8777 r8894 88 88 89 89 bool registerCollision(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB); 90 bool registerCollision( WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position);90 bool registerCollision(int type, WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position, bool bInWall = false); 91 91 /** @return true if there is at least on collision reaction subscribed */ 92 92 inline bool isReactive() const { return this->bReactive; } … … 115 115 /** @returns a Reference to the Iterator */ 116 116 ObjectManager::EntityList::iterator& getEntityIterator() { return this->objectListIterator; } 117 118 void hide() { if( this->objectListNumber != OM_DEAD) this->lastObjectListNumber = this->objectListNumber; this->toList(OM_DEAD); } 119 void unhide() { this->toList(this->lastObjectListNumber); } 120 117 121 118 122 /* --- Character Attribute Block --- */ … … 176 180 OM_LIST objectListNumber; //!< The ObjectList from ObjectManager this Entity is in. 177 181 ObjectManager::EntityList::iterator objectListIterator; //!< The iterator position of this Entity in the given list of the ObjectManager. 182 OM_LIST lastObjectListNumber; //!< the last ObjectList from the ObjectManager this Entity was is in 178 183 179 184
Note: See TracChangeset
for help on using the changeset viewer.