[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