- Timestamp:
- Apr 7, 2011, 10:19:16 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/dockingsystem2/src/modules/objects/triggers/DistanceMultiTrigger.h
r7601 r8206 51 51 /** 52 52 @brief 53 The DistanceMultiTrigger is a MultiTrigger that triggers whenever an object (that is of the specified target type) is in a specified range of the DistanceMultiTrigger. The object can be specified further by adding a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" (by just attaching it) to the objects that can trigger this DistanceMultiTrigger and specify the name of the @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" with the parameter <em>targetname</em> and only objects that have a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" with that name will trigger the DistanceMultiTrigger. 53 Enum for the beacon mode of the DistanceMultiTrigger. 54 55 @ingroup MultiTrigger 56 */ 57 namespace distanceMultiTriggerBeaconMode 58 { 59 enum Value { 60 off, 61 identify, 62 exclude 63 }; 64 } 65 66 /** 67 @brief 68 The DistanceMultiTrigger is a MultiTrigger that triggers whenever an object (that is of the specified target type) is in a specified range of the DistanceMultiTrigger. The object can be specified further by setting the <em>beaconMode</em> and attaching a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" to the object. 54 69 Parameters are (additional to the ones of MultiTrigger): 55 70 - @b distance Which specifies the maximum distance at which the DistanceMultiTrigger still triggers. Default is 100. 56 - @b targetname Which, if not left blank, causes the DistancMultiTrigger to be in <em>single-target</em> mode, meaning, that it only reacts to objects that have a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" (therefore the target has to be set to @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" for it to work), with the name specified by <em>targetname</em>, attached. 71 - @b beaconMode Which specifies, whether the DistanceMultiTrigger operates on @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacons" or not. If <em>off</em> the DistanceMultiTrigger works as usual. If set to <em>identify</em> the DistanceMultiTrigger is only triggered by objects that have a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon", with the same name as specified in <em>targetname</em>, attached to them. If set to <em>exclude</em> the DistanceMultiTrigger is only triggered by objects that don't have a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon", with the same name as specified in <em>targetname</em>, attached to them. Default is <em>off</em>. 72 - @b targetname Which, if not left blank, causes the DistanceMultiTrigger to be in <em>identify</em> beaconMode (unless otherwise specified), meaning, that it only reacts to objects that have a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" with the name specified by <em>targetname</em>, attached. 57 73 58 74 A simple DistanceMultiTrigger would look like this: … … 63 79 An implementation that only reacts to objects with a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" attached would look like this: 64 80 @code 65 <DistanceMultiTrigger position="0,0,0" target=" DistanceMultiTrigger" targetname="beacon1" distance="30" />81 <DistanceMultiTrigger position="0,0,0" target="Pawn" beaconMode="identify" targetname="beacon1" distance="30" /> 66 82 @endcode 67 83 This particular DistanceMultiTrigger would only react if an object was in range, that had a @ref orxonox::DistanceTriggerBeacon "DistanceTriggerBeacon" with the name <em>beacon1</em> attached. … … 83 99 84 100 void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a DistanceMultiTrigger object through XML. 85 86 void setTargetName(const std::string& targetname); //!< Set the target name of DistanceTriggerBeacons that triggers this DistanceMultiTrigger. 87 /** 88 @brief Get the target name of the DistanceTriggerbeacon, that triggers this DistanceMultiTrigger. 89 @return Returns the target name as a string. 90 */ 91 inline const std::string& getTargetName(void) 92 { return this->targetName_; } 93 101 94 102 /** 95 103 @brief Set the distance at which the DistanceMultiTrigger triggers. … … 104 112 inline float getDistance() const 105 113 { return this->distance_; } 114 115 void setBeaconModeDirect(distanceMultiTriggerBeaconMode::Value mode); //!< Set the beacon mode. 116 /** 117 @brief Get the beacon mode. 118 @return Returns the mode as an enum. 119 */ 120 inline distanceMultiTriggerBeaconMode::Value getBeaconModeDirect(void) const 121 { return this->beaconMode_; } 122 void setBeaconMode(const std::string& mode); //!< Set the beacon mode. 123 const std::string& getBeaconMode(void) const; //!< Get the beacon mode. 124 125 /** 126 @brief Set the target name of DistanceTriggerBeacons that triggers this DistanceMultiTrigger. 127 @param targetname The name of the DistanceTriggerBeacon as a string. 128 */ 129 inline void setTargetName(const std::string& targetname) 130 { this->targetName_ = targetname; } 131 /** 132 @brief Get the target name of the DistanceTriggerbeacon, that triggers this DistanceMultiTrigger. 133 @return Returns the target name as a string. 134 */ 135 inline const std::string& getTargetName(void) const 136 { return this->targetName_; } 106 137 107 138 protected: … … 112 143 113 144 private: 145 //! Strings for the beacon modes. 146 static const std::string beaconModeOff_s; 147 static const std::string beaconModeIdentify_s; 148 static const std::string beaconModeExlcude_s; 149 114 150 float distance_; //!< The distance at which the DistanceMultiTrigger triggers. 151 152 distanceMultiTriggerBeaconMode::Value beaconMode_; //!< The beacon mode, the DistanceMultiTrigger is in. 115 153 std::string targetName_; //!< The target name, used in <em>single-target</em> mode. 116 bool singleTargetMode_; //!< To indicate whe the MultiDistanceTrigger is in <em>single-target</em> mode.154 ClassTreeMask* beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons. 117 155 118 156 std::map<WorldEntity*, WeakPtr<WorldEntity>* > range_; //!< The set of entities that currently are in range of the DistanceMultiTrigger.
Note: See TracChangeset
for help on using the changeset viewer.