[Orxonox-commit 1767] r6485 - code/branches/pickup3/src/orxonox/worldentities

dafrick at orxonox.net dafrick at orxonox.net
Sun Mar 7 23:16:04 CET 2010


Author: dafrick
Date: 2010-03-07 23:16:03 +0100 (Sun, 07 Mar 2010)
New Revision: 6485

Modified:
   code/branches/pickup3/src/orxonox/worldentities/WorldEntity.cc
   code/branches/pickup3/src/orxonox/worldentities/WorldEntity.h
Log:
Added changedActivity and changedVisibility method to WorldEntity, such that, when either is changed it is changed for all attached objects as well.
If this is already implemented somehow and somehwere, my mistake, but I looked and found nothing.


Modified: code/branches/pickup3/src/orxonox/worldentities/WorldEntity.cc
===================================================================
--- code/branches/pickup3/src/orxonox/worldentities/WorldEntity.cc	2010-03-07 22:00:05 UTC (rev 6484)
+++ code/branches/pickup3/src/orxonox/worldentities/WorldEntity.cc	2010-03-07 22:16:03 UTC (rev 6485)
@@ -200,6 +200,34 @@
         // Attach to parent if necessary
         registerVariable(this->parentID_,       VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::networkcallback_parentChanged));
     }
+    
+    /**
+    @brief
+        When the activity is changed, it is changed for all attached objects as well.
+    */
+    void WorldEntity::changedActivity(void)
+    {
+        SUPER(WorldEntity, changedActivity);
+        
+        for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
+        {
+            (*it)->setActive(this->isActive());
+        }
+    }
+    
+    /**
+    @brief
+        When the visibility is changed, it is changed for all attached objects as well.
+    */
+    void WorldEntity::changedVisibility(void)
+    {
+        SUPER(WorldEntity, changedVisibility);
+        
+        for (std::set<WorldEntity*>::const_iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); it++)
+        {
+            (*it)->setVisible(this->isVisible());
+        }
+    }
 
     /**
     @brief

Modified: code/branches/pickup3/src/orxonox/worldentities/WorldEntity.h
===================================================================
--- code/branches/pickup3/src/orxonox/worldentities/WorldEntity.h	2010-03-07 22:00:05 UTC (rev 6484)
+++ code/branches/pickup3/src/orxonox/worldentities/WorldEntity.h	2010-03-07 22:16:03 UTC (rev 6485)
@@ -105,6 +105,9 @@
             static const Vector3 RIGHT;
             static const Vector3 DOWN;
             static const Vector3 UP;
+            
+            virtual void changedActivity(void);
+            virtual void changedVisibility(void);
 
             virtual void setPosition(const Vector3& position) = 0;
             inline void setPosition(float x, float y, float z)




More information about the Orxonox-commit mailing list