[Orxonox-commit 1173] r5894 - code/branches/core5/src/orxonox/worldentities

landauf at orxonox.net landauf at orxonox.net
Tue Oct 6 18:58:10 CEST 2009


Author: landauf
Date: 2009-10-06 18:58:10 +0200 (Tue, 06 Oct 2009)
New Revision: 5894

Modified:
   code/branches/core5/src/orxonox/worldentities/ControllableEntity.cc
   code/branches/core5/src/orxonox/worldentities/ControllableEntity.h
Log:
Using SmartPtr for CameraPositions in ControllableEntity.
This fixes a crash when finishing the pong level, because the static top-down camera was attached to the PongCenter and therefore destroyed before before the PongBat.

Modified: code/branches/core5/src/orxonox/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/core5/src/orxonox/worldentities/ControllableEntity.cc	2009-10-06 11:55:05 UTC (rev 5893)
+++ code/branches/core5/src/orxonox/worldentities/ControllableEntity.cc	2009-10-06 16:58:10 UTC (rev 5894)
@@ -103,7 +103,7 @@
             if (this->camera_)
                 this->camera_->destroy();
 
-            for (std::list<CameraPosition*>::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+            for (std::list<SmartPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
                 (*it)->destroy();
 
             if (this->getScene()->getSceneManager())
@@ -152,7 +152,7 @@
     CameraPosition* ControllableEntity::getCameraPosition(unsigned int index) const
     {
         unsigned int i = 0;
-        for (std::list<CameraPosition*>::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+        for (std::list<SmartPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
         {
             if (i == index)
                 return (*it);
@@ -171,7 +171,7 @@
             }
             else if (this->cameraPositions_.size() > 0)
             {
-                for (std::list<CameraPosition*>::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+                for (std::list<SmartPtr<CameraPosition> >::const_iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
                 {
                     if ((*it) == this->camera_->getParent())
                     {
@@ -332,7 +332,7 @@
         WorldEntity* parent = this->getParent();
         if (parent)
         {
-            for (std::list<CameraPosition*>::iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
+            for (std::list<SmartPtr<CameraPosition> >::iterator it = this->cameraPositions_.begin(); it != this->cameraPositions_.end(); ++it)
                 if ((*it)->getIsAbsolute())
                     parent->attach((*it));
         }

Modified: code/branches/core5/src/orxonox/worldentities/ControllableEntity.h
===================================================================
--- code/branches/core5/src/orxonox/worldentities/ControllableEntity.h	2009-10-06 11:55:05 UTC (rev 5893)
+++ code/branches/core5/src/orxonox/worldentities/ControllableEntity.h	2009-10-06 16:58:10 UTC (rev 5894)
@@ -103,7 +103,7 @@
 
             void addCameraPosition(CameraPosition* position);
             CameraPosition* getCameraPosition(unsigned int index) const;
-            inline const std::list<CameraPosition*>& getCameraPositions() const
+            inline const std::list<SmartPtr<CameraPosition> >& getCameraPositions() const
                 { return this->cameraPositions_; }
 
             inline void setCameraPositionTemplate(const std::string& name)
@@ -197,7 +197,7 @@
             bool bMouseLook_;
             float mouseLookSpeed_;
             Ogre::SceneNode* cameraPositionRootNode_;
-            std::list<CameraPosition*> cameraPositions_;
+            std::list<SmartPtr<CameraPosition> > cameraPositions_;
             std::string cameraPositionTemplate_;
             Controller* xmlcontroller_;
             CameraPosition* reverseCamera_;




More information about the Orxonox-commit mailing list