[Orxonox-commit 4006] r8680 - in code/branches/presentation/src: modules/tetris orxonox/worldentities

dafrick at orxonox.net dafrick at orxonox.net
Mon May 30 09:55:38 CEST 2011


Author: dafrick
Date: 2011-05-30 09:55:38 +0200 (Mon, 30 May 2011)
New Revision: 8680

Modified:
   code/branches/presentation/src/modules/tetris/Tetris.cc
   code/branches/presentation/src/orxonox/worldentities/ControllableEntity.cc
   code/branches/presentation/src/orxonox/worldentities/ControllableEntity.h
Log:
Make the camera position stay the same between differnet stones in Tetris.


Modified: code/branches/presentation/src/modules/tetris/Tetris.cc
===================================================================
--- code/branches/presentation/src/modules/tetris/Tetris.cc	2011-05-30 07:07:31 UTC (rev 8679)
+++ code/branches/presentation/src/modules/tetris/Tetris.cc	2011-05-30 07:55:38 UTC (rev 8680)
@@ -232,15 +232,21 @@
     {
         if(this->player_ == NULL)
             return;
-        
+
+        unsigned int cameraIndex = 0;
         if(this->activeStone_ != NULL)
+        {
+            // Get camera settings
+            cameraIndex = this->activeStone_->getCurrentCameraIndex();
             this->player_->stopControl();
+        }
         
         // Make the last stone to be created the active stone.
         this->activeStone_ = this->stones_.back();
         
         this->player_->startControl(this->activeStone_);
         this->activeStone_->setVelocity(0.0f, -this->center_->getStoneSpeed(), 0.0f);
+        this->activeStone_->setCameraPosition(cameraIndex);
     }
 
     /**

Modified: code/branches/presentation/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/presentation/src/orxonox/worldentities/ControllableEntity.cc	2011-05-30 07:07:31 UTC (rev 8679)
+++ code/branches/presentation/src/orxonox/worldentities/ControllableEntity.cc	2011-05-30 07:55:38 UTC (rev 8680)
@@ -119,7 +119,7 @@
         SUPER(ControllableEntity, XMLPort, xmlelement, mode);
 
         XMLPortParam(ControllableEntity, "hudtemplate", setHudTemplate, getHudTemplate, xmlelement, mode);
-        XMLPortParam(ControllableEntity, "camerapositiontemplate", setCameraPositionTemplate, getCameraPositionTemkplate, xmlelement, mode);
+        XMLPortParam(ControllableEntity, "camerapositiontemplate", setCameraPositionTemplate, getCameraPositionTemplate, xmlelement, mode);
 
         XMLPortObject(ControllableEntity, CameraPosition, "camerapositions", addCameraPosition, getCameraPosition, xmlelement, mode);
         XMLPortObject(ControllableEntity, Controller,     "controller",      setXMLController,  getXMLController,  xmlelement, mode);
@@ -171,6 +171,40 @@
         return 0;
     }
 
+    unsigned int ControllableEntity::getCurrentCameraIndex() const
+    {
+        if (this->cameraPositions_.size() <= 0)
+            return 0;
+
+        unsigned int counter = 0;
+        for (std::list<SmartPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+        {
+            if ((*it) == this->currentCameraPosition_)
+                break;
+            counter++;
+        }
+        if (counter >= this->cameraPositions_.size())
+            return 0;
+
+        return counter;
+    }
+    
+    bool ControllableEntity::setCameraPosition(unsigned int index)
+    {
+        if(this->camera_ != NULL && this->cameraPositions_.size() > 0)
+        {
+            if(index >= this->cameraPositions_.size())
+                index = 0;
+
+            CameraPosition* position = this->getCameraPosition(index);
+            position->attachCamera(this->camera_);
+            this->currentCameraPosition_ = position;
+            return true;
+        }
+
+        return false;
+    }
+
     void ControllableEntity::switchCamera()
     {
         if (this->camera_)

Modified: code/branches/presentation/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/branches/presentation/src/orxonox/worldentities/ControllableEntity.h	2011-05-30 07:07:31 UTC (rev 8679)
+++ code/branches/presentation/src/orxonox/worldentities/ControllableEntity.h	2011-05-30 07:55:38 UTC (rev 8680)
@@ -115,10 +115,12 @@
             CameraPosition* getCameraPosition(unsigned int index) const;
             inline const std::list<SmartPtr<CameraPosition> >& getCameraPositions() const
                 { return this->cameraPositions_; }
+            unsigned int getCurrentCameraIndex() const;
+            bool setCameraPosition(unsigned int index);
 
             inline void setCameraPositionTemplate(const std::string& name)
                 { this->cameraPositionTemplate_ = name; }
-            inline const std::string& getCameraPositionTemkplate() const
+            inline const std::string& getCameraPositionTemplate() const
                 { return this->cameraPositionTemplate_; }
 
             inline void setReverseCamera(CameraPosition* camera)




More information about the Orxonox-commit mailing list