[Orxonox-commit 2841] r7544 - in code/trunk: data/levels/templates src/modules/pickup/items

dafrick at orxonox.net dafrick at orxonox.net
Fri Oct 15 08:14:03 CEST 2010


Author: dafrick
Date: 2010-10-15 08:14:03 +0200 (Fri, 15 Oct 2010)
New Revision: 7544

Modified:
   code/trunk/data/levels/templates/pickup_representation_templates.oxt
   code/trunk/src/modules/pickup/items/InvisiblePickup.cc
   code/trunk/src/modules/pickup/items/InvisiblePickup.h
Log:
Fixing bug I introduced.


Modified: code/trunk/data/levels/templates/pickup_representation_templates.oxt
===================================================================
--- code/trunk/data/levels/templates/pickup_representation_templates.oxt	2010-10-14 21:58:56 UTC (rev 7543)
+++ code/trunk/data/levels/templates/pickup_representation_templates.oxt	2010-10-15 06:14:03 UTC (rev 7544)
@@ -343,7 +343,7 @@
   <InvisiblePickup 
     duration = 5.0
     activaionType = "immediate"
-    durationType = "once"
+    durationType = "continuous"
   />
 </Template>
 
@@ -367,7 +367,7 @@
   <InvisiblePickup 
     duration = 10.0
     activaionType = "immediate"
-    durationType = "once"
+    durationType = "continuous"
   />
 </Template>
 
@@ -391,7 +391,7 @@
   <InvisiblePickup 
     duration = 20.0
     activaionType = "immediate"
-    durationType = "once"
+    durationType = "continuous"
   />
 </Template>
 

Modified: code/trunk/src/modules/pickup/items/InvisiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.cc	2010-10-14 21:58:56 UTC (rev 7543)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.cc	2010-10-15 06:14:03 UTC (rev 7544)
@@ -115,7 +115,7 @@
 
         if (this->isUsed())
         {
-            if(this->isContinuous()
+            if(this->isContinuous())
             {
                 if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() > 0.0f)
                 {
@@ -134,7 +134,7 @@
         {
             this->setInvisible(false);
 
-            if(!this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() == this->getDuration())
+            if(this->isContinuous() || !this->durationTimer_.isActive() && this->durationTimer_.getRemainingTime() == this->getDuration())
             {
                 this->Pickupable::destroy();
             }
@@ -212,9 +212,9 @@
 
     /**
     @brief
-        Sets the duration.
+        Sets the time the InvisibilityPickup will last.
     @param duration
-        The duration
+        The duration in seconds.
     */
     void InvisiblePickup::setDuration(float duration)
     {
@@ -229,6 +229,10 @@
         }
     }
 
+    /**
+    @brief
+        Helper method. Is called by the Timer as soon as it expires.
+    */
     void InvisiblePickup::pickupTimerCallback(void)
     {
         this->setUsed(false);

Modified: code/trunk/src/modules/pickup/items/InvisiblePickup.h
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.h	2010-10-14 21:58:56 UTC (rev 7543)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.h	2010-10-15 06:14:03 UTC (rev 7544)
@@ -64,6 +64,7 @@
 
             InvisiblePickup(BaseObject* creator); //!< Constructor.
             virtual ~InvisiblePickup(); //!< Destructor.
+            
             virtual void XMLPort(Element& xmlelement, orxonox::XMLPort::Mode mode); //!< Method for creating a HealthPickup object through XML.
             virtual void changedUsed(void); //!< Is called when the pickup has transited from used to unused or the other way around.
             virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the input OrxonoxClass.
@@ -74,15 +75,21 @@
             */
             inline bool getInvisibility(bool)
                 { return this->invisible_; }
-            inline float getDuration()
+            /**
+            @brief Get the time the InvisibilityPickup lasts.
+            @return Returns the time in seconds the InvisibiltyPickup lasts.
+            */
+            inline float getDuration(void)
                 { return this->duration_; }
 
         protected:
-            bool setInvisible(bool invisibility); //!< Set the Pawn to be invisible or visible again.
-            void setDuration(float duration);
             void initializeIdentifier(void);
-            void pickupTimerCallback(void); //!< Function that gets called when the timer ends.
 
+            bool setInvisible(bool invisibility); //!< Set the Pawn to be invisible or visible again.
+            void setDuration(float duration); //!< Sets the time the InvisibilityPickup will last.
+
+            void pickupTimerCallback(void); //!< Helper method. Is called by the Timer as soon as it expires.
+
         private:
             void initialize(void); //!< Initializes the member variables.
             Pawn* carrierToPawnHelper(void); //!< Helper to transform the PickupCarrier to a Pawn, and throw an error message if the conversion fails.




More information about the Orxonox-commit mailing list