- Timestamp:
- May 17, 2010, 1:22:26 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/modules/objects/triggers/DistanceTrigger.cc
r6417 r6906 32 32 #include "core/XMLPort.h" 33 33 #include "worldentities/pawns/Pawn.h" 34 #include "DistanceTriggerBeacon.h" 34 35 35 36 namespace orxonox … … 43 44 this->distance_ = 100; 44 45 this->targetMask_.exclude(Class(BaseObject)); 46 this->targetName_ = BLANKSTRING; 47 this->singleTargetMode_ = false; 45 48 this->setForPlayer(false); //!< Normally hasn't just players as targets. 46 49 } … … 55 58 56 59 XMLPortParam(DistanceTrigger, "distance", setDistance, getDistance, xmlelement, mode).defaultValues(100.0f); 57 XMLPortParamLoadOnly(DistanceTrigger, "target", addTargets, xmlelement, mode).defaultValues("ControllableEntity"); 60 XMLPortParamLoadOnly(DistanceTrigger, "target", addTargets, xmlelement, mode).defaultValues("Pawn"); 61 XMLPortParam(DistanceTrigger, "targetname", setTargetName, getTargetName, xmlelement, mode); 58 62 } 59 63 … … 84 88 85 89 //! Checks whether the target is (or is derived from) a ControllableEntity. 86 Identifier* controllableEntityId = Class(ControllableEntity); 87 if(targetId->isA(controllableEntityId)) 90 Identifier* pawnId = Class(Pawn); 91 Identifier* distanceTriggerBeaconId = Class(DistanceTriggerBeacon); 92 if(targetId->isA(pawnId) || targetId->isA(distanceTriggerBeaconId)) 88 93 { 89 94 this->setForPlayer(true); … … 124 129 continue; 125 130 131 if(this->singleTargetMode_) 132 { 133 if(!(*it)->isA(ClassIdentifier<DistanceTriggerBeacon>::getIdentifier())) 134 this->singleTargetMode_ = false; 135 else if(entity->getName().compare(this->targetName_) != 0) 136 continue; 137 } 138 126 139 Vector3 distanceVec = entity->getWorldPosition() - this->getWorldPosition(); 127 140 if (distanceVec.length() < this->distance_) … … 131 144 if(this->isForPlayer()) 132 145 { 146 147 if(this->singleTargetMode_) 148 entity = entity->getParent(); 149 133 150 Pawn* player = orxonox_cast<Pawn*>(entity); 134 151 this->setTriggeringPlayer(player);
Note: See TracChangeset
for help on using the changeset viewer.