- Timestamp:
- May 6, 2010, 4:01:25 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h
r6857 r6860 38 38 39 39 #include "worldentities/WorldEntity.h" 40 #include <set> 40 #include "core/WeakPtr.h" 41 #include <map> 41 42 42 43 #include "MultiTrigger.h" … … 79 80 80 81 /** 81 @brief Check whether a given entity is currently (since the last update) in range of the DistanceMultiTrigger.82 @param entity A pointer to the entity.83 @return Returns true if the entity is in the range.84 */85 inline bool inRange(WorldEntity* entity)86 { return this->range_.find(entity) != this->range_.end(); }87 /**88 82 @brief Add a given entity to the entities, that currently are in range of the DistanceMultiTrigger. 89 83 @param entity A pointer to the entity. … … 91 85 */ 92 86 inline bool addToRange(WorldEntity* entity) 93 { std::pair<std:: set<WorldEntity*>::iterator, bool> pair = this->range_.insert(entity); return pair.second; }87 { std::pair<std::map<WorldEntity*, WeakPtr<WorldEntity>* >::iterator, bool> pair = this->range_.insert(std::pair<WorldEntity*, WeakPtr<WorldEntity>* >(entity, new WeakPtr<WorldEntity>(entity))); return pair.second; } 94 88 /** 95 89 @brief Remove a given entity from the set of entities, that currently are in range of the DistanceMultiTrigger. … … 98 92 */ 99 93 inline bool removeFromRange(WorldEntity* entity) 100 { return this->range_.erase(entity) > 0; }94 { (*this->range_.find(entity)->second)->destroy(); bool erased = this->range_.erase(entity) > 0; return erased; } 101 95 102 96 private: 103 97 float distance_; //!< The distance at which the DistanceMultiTrigger triggers. 104 std:: set<WorldEntity*> range_; //!< The set of entities that currently are in range of the DistanceMultiTrigger.98 std::map<WorldEntity*, WeakPtr<WorldEntity>* > range_; //!< The set of entities that currently are in range of the DistanceMultiTrigger. 105 99 106 100 };
Note: See TracChangeset
for help on using the changeset viewer.