[Orxonox-commit 4001] r8675 - code/branches/presentation/src/modules/objects/triggers

dafrick at orxonox.net dafrick at orxonox.net
Mon May 30 00:14:57 CEST 2011


Author: dafrick
Date: 2011-05-30 00:14:57 +0200 (Mon, 30 May 2011)
New Revision: 8675

Modified:
   code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.cc
   code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.h
   code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.cc
   code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.h
Log:
Fixing problems with beaconMask being NULL.


Modified: code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.cc
===================================================================
--- code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.cc	2011-05-29 22:01:33 UTC (rev 8674)
+++ code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.cc	2011-05-29 22:14:57 UTC (rev 8675)
@@ -52,13 +52,15 @@
     @brief
         Default Constructor. Registers the object and initializes default values.
     */
-    DistanceMultiTrigger::DistanceMultiTrigger(BaseObject* creator) : MultiTrigger(creator), beaconMask_(NULL)
+    DistanceMultiTrigger::DistanceMultiTrigger(BaseObject* creator) : MultiTrigger(creator)
     {
         RegisterObject(DistanceMultiTrigger);
 
         this->distance_ = 100.0f;
         this->setBeaconModeDirect(distanceMultiTriggerBeaconMode::off);
         this->targetName_ = "";
+        this->beaconMask_.exclude(Class(BaseObject));
+        this->beaconMask_.include(Class(DistanceTriggerBeacon));
     }
 
     /**
@@ -67,8 +69,7 @@
     */
     DistanceMultiTrigger::~DistanceMultiTrigger()
     {
-        if(this->beaconMask_ != NULL)
-            delete this->beaconMask_;
+
     }
 
     /**
@@ -134,7 +135,7 @@
         ClassTreeMask targetMask = this->getTargetMask();
         // If we are in identify-mode another target mask has to be applies to find the DistanceTriggerBeacons.
         if(this->beaconMode_ == distanceMultiTriggerBeaconMode::identify)
-            targetMask = *this->beaconMask_;
+            targetMask = this->beaconMask_;
 
         // Iterate through all objects that are targets of the DistanceMultiTrigger.
         for(ClassTreeMaskObjectIterator it = targetMask.begin(); it != targetMask.end(); ++it)
@@ -206,12 +207,6 @@
     void DistanceMultiTrigger::setBeaconModeDirect(distanceMultiTriggerBeaconMode::Value mode)
     {
         this->beaconMode_ = mode;
-        if(this->beaconMode_ == distanceMultiTriggerBeaconMode::identify && this->beaconMask_ == NULL)
-        {
-            this->beaconMask_ = new ClassTreeMask();
-            this->beaconMask_->exclude(Class(BaseObject));
-            this->beaconMask_->include(Class(DistanceTriggerBeacon));
-        }
     }
     
     /**

Modified: code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.h
===================================================================
--- code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.h	2011-05-29 22:01:33 UTC (rev 8674)
+++ code/branches/presentation/src/modules/objects/triggers/DistanceMultiTrigger.h	2011-05-29 22:14:57 UTC (rev 8675)
@@ -151,7 +151,7 @@
 
             distanceMultiTriggerBeaconMode::Value beaconMode_; //!< The beacon mode, the DistanceMultiTrigger is in.
             std::string targetName_; //!< The target name, used in <em>single-target</em> mode.
-            ClassTreeMask* beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
+            ClassTreeMask beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
 
             std::map<WorldEntity*, WeakPtr<WorldEntity>* > range_; //!< The set of entities that currently are in range of the DistanceMultiTrigger.
 

Modified: code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.cc
===================================================================
--- code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.cc	2011-05-29 22:01:33 UTC (rev 8674)
+++ code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.cc	2011-05-29 22:14:57 UTC (rev 8675)
@@ -56,13 +56,15 @@
     @param creator
         The creator of this trigger.
     */
-    DistanceTrigger::DistanceTrigger(BaseObject* creator) : Trigger(creator), beaconMask_(NULL)
+    DistanceTrigger::DistanceTrigger(BaseObject* creator) : Trigger(creator)
     {
         RegisterObject(DistanceTrigger);
 
         this->distance_ = 100;
         this->targetMask_.exclude(Class(BaseObject));
         this->targetName_ = "";
+        this->beaconMask_.exclude(Class(BaseObject));
+        this->beaconMask_.include(Class(DistanceTriggerBeacon));
     }
 
     /**
@@ -71,9 +73,7 @@
     */
     DistanceTrigger::~DistanceTrigger()
     {
-        // Delete the beacon mask if it exists.
-        if(this->beaconMask_ != NULL)
-            delete this->beaconMask_;
+
     }
 
     /**
@@ -158,7 +158,7 @@
         ClassTreeMask targetMask = this->targetMask_;
         // If we are in identify-mode another target mask has to be applies to find the DistanceTriggerBeacons.
         if(this->beaconMode_ == distanceTriggerBeaconMode::identify)
-            targetMask = *this->beaconMask_;
+            targetMask = this->beaconMask_;
 
         // Iterate through all objects that are targets of the DistanceTrigger.
         for (ClassTreeMaskObjectIterator it = targetMask.begin(); it != targetMask.end(); ++it)
@@ -230,12 +230,6 @@
     void DistanceTrigger::setBeaconModeDirect(distanceTriggerBeaconMode::Value mode)
     {
         this->beaconMode_ = mode;
-        if(this->beaconMode_ == distanceTriggerBeaconMode::identify && this->beaconMask_ == NULL)
-        {
-            this->beaconMask_ = new ClassTreeMask();
-            this->beaconMask_->exclude(Class(BaseObject));
-            this->beaconMask_->include(Class(DistanceTriggerBeacon));
-        }
     }
 
     /**

Modified: code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.h
===================================================================
--- code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.h	2011-05-29 22:01:33 UTC (rev 8674)
+++ code/branches/presentation/src/modules/objects/triggers/DistanceTrigger.h	2011-05-29 22:14:57 UTC (rev 8675)
@@ -161,7 +161,7 @@
             
             distanceTriggerBeaconMode::Value beaconMode_; //!< The beacon mode.
             std::string targetName_; //!< The name a DistanceTriggerBeacon needs to have to make the DistanceTrigger react to it if in beacon-mode.
-            ClassTreeMask* beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
+            ClassTreeMask beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
             
             WeakPtr<WorldEntity> cache_; //!< Caches the entity that triggered the DistanceTrigger last.
     };




More information about the Orxonox-commit mailing list