[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