Index: branches/cleanup/src/world_entities/effects/billboard.cc
===================================================================
--- branches/cleanup/src/world_entities/effects/billboard.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/effects/billboard.cc	(revision 10593)
@@ -134,6 +134,5 @@
   this->material->select();
 
-  const CameraMan* man = State::getCameraman();
-  const Camera* camera = man->getCurrentCam(); //!< @todo MUST be different
+  const Camera* camera = State::getCamera();
   Vector cameraPos = camera->getAbsCoor();
   Vector cameraTargetPos = camera->getTarget()->getAbsCoor();
Index: branches/cleanup/src/world_entities/effects/wobblegrid.cc
===================================================================
--- branches/cleanup/src/world_entities/effects/wobblegrid.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/effects/wobblegrid.cc	(revision 10593)
@@ -201,7 +201,6 @@
 void Wobblegrid::orient()
 {
-     
-     CameraMan* cman = State::getCameraman();
-     Camera* c = cman->getCurrentCam();
+
+  Camera* c = State::getCamera();
 
   Vector view = this->getAbsCoor() - c->getAbsCoor();
Index: branches/cleanup/src/world_entities/particles/sprite_particles.cc
===================================================================
--- branches/cleanup/src/world_entities/particles/sprite_particles.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/particles/sprite_particles.cc	(revision 10593)
@@ -141,6 +141,5 @@
 //     Vector view = cameraTargetPos - cameraPos;
 
-    const CameraMan* man = State::getCameraman();
-    const Camera* camera = man->getCurrentCam(); //!< @todo MUST be different
+    Camera* camera = State::getCamera();
     Vector cameraPos = camera->getAbsCoor();
     Vector cameraTargetPos = camera->getTarget()->getAbsCoor();
Index: branches/cleanup/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/cleanup/src/world_entities/space_ships/space_ship.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/space_ships/space_ship.cc	(revision 10593)
@@ -1141,7 +1141,5 @@
 void SpaceShip::setCameraDistance(float dist)
 {
-
-  CameraMan* cm = State::getCameraman();
-  Camera* c = cm->getCurrentCam();
+  Camera* c = State::getCamera();
   c->setViewTopDistance(dist);
 
@@ -1153,6 +1151,5 @@
 {
 
-  CameraMan* cm = State::getCameraman();
-  Camera* c = cm->getCurrentCam();
+  Camera* c = State::getCamera();
   c->setViewTopFovy(fovy);
 
@@ -1163,7 +1160,6 @@
 void SpaceShip::updateTravelDistance()
 {
-     CameraMan* cm = State::getCameraman();
-     Camera* c = cm->getCurrentCam();
-
+
+  Camera* c = State::getCamera();
 
   float x = 1.25 * this->actionWidthPercentage * fabsf(c->getAbsCoor().y) * tan(c->getFovy()*M_PI /360.0);
Index: branches/cleanup/src/world_entities/tools/cameraman.cc
===================================================================
--- branches/cleanup/src/world_entities/tools/cameraman.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/tools/cameraman.cc	(revision 10593)
@@ -1,3 +1,3 @@
-  /*
+/*
    orxonox - the future of 3D-vertical-scrollers
 
@@ -14,42 +14,40 @@
 */
 
-#include "shell_command.h"
 #include "cameraman.h"
-#include "game_world_data.h"
-#include "state.h"
+#include "blackscreen.h"
+#include "loading/load_param_xml.h"
 #include "sound_engine.h"
-#include <string>
 #include "script_class.h"
-#include "loading/load_param_xml.h"
-#include "blackscreen.h"
-#include "p_node.h"
-#include "camera.h"
 
 ObjectListDefinition(CameraMan);
 
-SHELL_COMMAND(camerainfo, CameraMan, cameraInfo);
-
-
 CREATE_SCRIPTABLE_CLASS(CameraMan,
-                        addMethod("changeCurrTarget", Executor2<CameraMan, lua_State*,const std::string&,const std::string&>(&CameraMan::changeCurrTarget))
-                        ->addMethod("atachCurrCameraToWorldEntity", Executor2<CameraMan, lua_State*,const std::string&,const std::string&>(&CameraMan::atachCurrCameraToWorldEntity))
-                        ->addMethod("changeTarget", Executor3<CameraMan, lua_State*, const std::string&, const std::string&,const std::string&>(&CameraMan::changeTarget))
-                        ->addMethod("atachCameraToWorldEntity", Executor3<CameraMan, lua_State*,const std::string&,const std::string&,const std::string&>(&CameraMan::atachCameraToWorldEntity))
-                        ->addMethod("detachCurrCamera", Executor0<CameraMan, lua_State*>(&CameraMan::detachCurrCamera))
-                        ->addMethod("setCam", Executor1<CameraMan, lua_State*, const std::string&>(&CameraMan::setCam))
+			/// Camera management
+                        addMethod("changeTarget", Executor3<CameraMan, lua_State*, const std::string&, const std::string&,const std::string&>(&CameraMan::changeTarget))
+                        ->addMethod("attachCamera", Executor3<CameraMan, lua_State*,const std::string&,const std::string&,const std::string&>(&CameraMan::attachCamera))
+			->addMethod("jumpCam", Executor4<CameraMan, lua_State*,const std::string&,float,float,float>(&CameraMan::jumpCam))
+			->addMethod("moveCam", Executor4<CameraMan, lua_State*,const std::string&,float,float,float>(&CameraMan::moveCam))
+                        ->addMethod("setRelCoor", Executor4<CameraMan, lua_State*,const std::string&,float,float,float>(&CameraMan::setRelCameraCoor))
+                        ->addMethod("setRelCoorSoft", Executor5<CameraMan, lua_State*,const std::string&,float,float,float,float>(&CameraMan::setRelCameraCoorSoft))
+			->addMethod("setCam", Executor1<CameraMan, lua_State*, const std::string&>(&CameraMan::setCam))
+                        /// Current Camera
+                        ->addMethod("changeCurrTarget", Executor2<CameraMan, lua_State*,const std::string&,const std::string&>(&CameraMan::changeCurrTarget))
+                        ->addMethod("attachCurrCamera", Executor2<CameraMan, lua_State*,const std::string&,const std::string&>(&CameraMan::attachCurrCamera))
+                        ->addMethod("jumpCurrCam", Executor3<CameraMan, lua_State*,float,float,float>(&CameraMan::jumpCurrCam))
+                        ->addMethod("moveCurrCam", Executor3<CameraMan, lua_State*,float,float,float>(&CameraMan::moveCurrCam))
+                        /// Fading
                         ->addMethod("toggleFade", Executor0<CameraMan, lua_State*>(&CameraMan::togglFade))
                         ->addMethod("initFadeBlack", Executor0<CameraMan, lua_State*>(&CameraMan::initFadeBlack))
+			/// Polling
                         ->addMethod("getCurrCameraCoorX", Executor0ret<CameraMan, lua_State*,float>(&CameraMan::getCurrCameraCoorX))
                         ->addMethod("getCurrCameraCoorY", Executor0ret<CameraMan, lua_State*,float>(&CameraMan::getCurrCameraCoorY))
                         ->addMethod("getCurrCameraCoorZ", Executor0ret<CameraMan, lua_State*,float>(&CameraMan::getCurrCameraCoorZ))
-                        ->addMethod("jumpCurrCam", Executor3<CameraMan, lua_State*,float,float,float>(&CameraMan::jumpCurrCam))
-                        ->addMethod("jumpCam", Executor4<CameraMan, lua_State*,const std::string&,float,float,float>(&CameraMan::jumpCam))
-                        //->addMethod("setViewMode", Executor2<CameraMan, lua_State*,const std::string&,const std::string&>(&CameraMan::setViewMode))
-                        ->addMethod("setRelCoor", Executor4<CameraMan, lua_State*,const std::string&,float,float,float>(&CameraMan::setRelCameraCoor))
-                        ->addMethod("setRelCoorSoft", Executor5<CameraMan, lua_State*,const std::string&,float,float,float,float>(&CameraMan::setRelCameraCoorSoft))
-                        ->addMethod("pauseCamera", Executor2<CameraMan, lua_State*, const std::string&, bool>(&CameraMan::pauseCamera))
                        );
 
 
+
+/**
+ * constructor of the CameraManager
+ */
 CameraMan::CameraMan(const TiXmlElement* root)
 {
@@ -61,5 +59,5 @@
   this->fadeToBlack=new BlackScreen();
 
-  this->setCam( State::getCamera());
+  this->setCam( State::getCamera() );
 
   if (root != NULL)
@@ -67,5 +65,8 @@
 }
 
-
+/**
+ *  Loads the parameters of the CameraManager from the xml file
+ * @param root reference to the xml root element
+ */
 void CameraMan::loadParams(const TiXmlElement* root)
 {
@@ -74,8 +75,10 @@
 }
 
-
+/**
+ *  Creates all the Cameras
+ * @param root reference to the xml root element
+ */
 void CameraMan::createCameras(const TiXmlElement* camerasTag)
 {
-
     LOAD_PARAM_START_CYCLE(camerasTag, object);
     {
@@ -83,88 +86,153 @@
     }
     LOAD_PARAM_END_CYCLE(object);
-
-}
-
-
+}
+
+/**
+ *  Creates a Camera from a xml node
+ * @param root reference to the xml node
+ */
 void CameraMan::createCam(const TiXmlElement* root)
 {
-  this->cameras.push_back(new Camera(root));
-  cameras[cameras.size()-1]->setClipRegion(nearClip, farClip);
-}
-
-/*void CameraMan::setViewMode(const std::string& cameraName, const std::string& viewMode)
-{
-     BaseObject* newCam = ObjectListBase::getBaseObject("Camera", cameraName);
-     
-     if (!strcmp(viewMode, "ViewNormal"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewNormal);
-     }
-     else if (!strcmp(viewMode, "ViewTop"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewTop);
-     }
-     else if (!strcmp(viewMode, "ViewBehind"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewBehind);
-     }
-     else if (!strcmp(viewMode, "ViewFront"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewFront);
-     }
-     else if (!strcmp(viewMode, "ViewLeft"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewLeft);
-     }
-     else if (!strcmp(viewMode, "ViewRight"))
-     {
-         dynamic_cast<Camera*>(newCam)->setViewMode(Camera::ViewRight);
-     }
-}*/
-
-void CameraMan::setRelCameraCoor(const std::string& camName, float x, float y, float z)
-{
-     BaseObject* newCam = ObjectListBase::getBaseObject("Camera", camName);
-     dynamic_cast<Camera*>(newCam)->setRelCoor(x,y,z);
-     dynamic_cast<Camera*>(newCam)->target->setRelCoor(0,0,0);
-}
-
-void CameraMan::setRelCameraCoorSoft(const std::string& camName, float x, float y, float z, float bias)
-{
-     BaseObject* newCam = ObjectListBase::getBaseObject("Camera", camName);
-     dynamic_cast<Camera*>(newCam)->setRelCoorSoft(x,y,z,bias);
-     dynamic_cast<Camera*>(newCam)->target->setRelCoorSoft(0,0,0,bias);
-}
-
-void CameraMan::pauseCamera(const std::string& camName, bool stop)
-{
-     BaseObject* newCam = ObjectListBase::getBaseObject("Camera", camName);
-     dynamic_cast<Camera*>(newCam)->pauseTrack(stop);
-}
-
-void CameraMan::setCam(unsigned int cameraNo)
-{
-  if (cameraNo<cameras.size())
-  {
-    this->setCam( cameras[cameraNo]);
-  }
-}
-
-void CameraMan::setCam(const std::string& camName)
-{
-  BaseObject* object = ObjectListBase::getBaseObject("Camera", camName);
-
-  if(object != NULL)
-  {
-    this->setCam(dynamic_cast<Camera*>(object));
+  Camera* newCam = new Camera(root);
+  newCam->setClipRegion(nearClip, farClip);
+}
+
+/**
+ *  Changes the target of a camera. (where the camera looks at)
+ *
+ * @param cameraName the name of the camera whose target is changed
+ * @param className the class of the new target
+ * @param objectName the name of the new target
+ */
+void CameraMan::changeTarget(const std::string& cameraName,const std::string& className, const std::string& objectName)
+{
+  BaseObject* object = ObjectListBase::getBaseObject(className, objectName);
+  Camera* camera = Camera::objectList().getObject(cameraName);
+
+  if( object != NULL && camera != NULL && object->isA(PNode::staticClassID()))
+  {
+    camera->lookAt(dynamic_cast<PNode*>(object));
+    State::setCamera( camera,  dynamic_cast<CameraTarget*>(object));
     return;
   }
-  printf("ERROR CAMERAMANAGER: Couldn't set camera : %s \n", camName.c_str());
-}
-
-
-void CameraMan::setCam(Camera* camera)
-{
-  if( camera == NULL)
+
+ printf("ERROR CAMERAMANAGER: Couldn't change target for camera %s to: %s %s \n", cameraName.c_str(), className.c_str(),objectName.c_str() );
+
+}
+
+/**
+ *  Attaches a camera to a new pnode. (the camera follows the pnode)
+ *
+ * @param cameraName the name of the camera
+ * @param className the class of the new parent node
+ * @param objectName the name of the new parent node
+ */
+void CameraMan::attachCamera(const std::string& cameraName, const std::string& className, const std::string& targetEntity)
+{
+  BaseObject* object = ObjectListBase::getBaseObject(className, targetEntity);
+  Camera* camera = Camera::objectList().getObject(cameraName);
+
+  if( object != NULL && camera != NULL && object->isA(PNode::staticClassID()) )
+  {
+    camera->target->atach(dynamic_cast<PNode*>(object));
+    camera->setViewMode(Camera::ViewNormal);
+    State::setCamera( camera,  dynamic_cast<CameraTarget*>(object));
+    return;
+  }
+
+  printf("ERROR CAMERAMANAGER: Couldn't attach camera %s to: %s %s \n", cameraName.c_str(), className.c_str(),targetEntity.c_str() );
+
+}
+
+
+/**
+ *  Sets a camera to a new position
+ *
+ * @param cameraName the name of the camera
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
+void CameraMan::jumpCam(const std::string& cameraName, float x, float y, float z)
+{
+  Camera* camera = Camera::objectList().getObject(cameraName);
+  if( camera != NULL )
+  {
+    camera->target->jump( x, y, z );
+  }
+}
+
+/**
+ *  Moves a camera slowly to a new position
+ *
+ * @param cameraName the name of the camera
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
+void CameraMan::moveCam(const std::string& cameraName, float x, float y, float z)
+{
+  Camera* camera = Camera::objectList().getObject(cameraName);
+  if( camera != NULL )
+  {
+    camera->target->trans( x, y, z );
+  }
+}
+
+/**
+ *  Sets the coordinate of a camera relative to its target.
+ *
+ * @param cameraName the name of the camera
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
+void CameraMan::setRelCameraCoor(const std::string& cameraName, float x, float y, float z)
+{
+  Camera* camera = Camera::objectList().getObject(cameraName);
+  camera->setRelCoor(x,y,z);
+  camera->target->setRelCoor(0,0,0);
+}
+
+/**
+ *  Sets the coordinate of a camera relative to its target. (softly) 
+ *
+ * @param cameraName the name of the camera
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
+void CameraMan::setRelCameraCoorSoft(const std::string& cameraName, float x, float y, float z, float bias)
+{
+  Camera* newCam = Camera::objectList().getObject(cameraName);
+  newCam->setRelCoor(x,y,z);
+  newCam->target->setRelCoorSoft(0,0,0);
+}
+
+/**
+ *  Sets a new camera as the current one.
+ *
+ * @param cameraName the name of the new camera
+ */
+void CameraMan::setCam(const std::string& cameraName)
+{
+  Camera* camera = Camera::objectList().getObject(cameraName);
+
+  if(camera != NULL)
+  {
+    this->setCam(camera);
+    return;
+  }
+  printf("ERROR CAMERAMANAGER: Couldn't set camera : %s \n", cameraName.c_str());
+}
+
+/**
+ *  Sets a new camera as the current one.
+ *
+ * @param camera a pointer to the new camera
+ */
+void CameraMan::setCam(Camera* newCamera)
+{
+  if( newCamera == NULL)
   {
     PRINTF(0)("trying to add a zero camera! uiuiui!\n");
@@ -172,69 +240,89 @@
   }
   
-  this->currentCam = camera;
-
-  State::setCamera(currentCam, currentCam->getTarget());
-  OrxSound::SoundEngine::getInstance()->setListener(currentCam);
-
-  // check if it is already added
-  if( ! this->cameraIsInVector(currentCam) )
-    this->cameras.push_back(currentCam);
+  State::setCamera(newCamera, newCamera->getTarget());
+  OrxSound::SoundEngine::getInstance()->setListener(newCamera);
 
   this->fadeToBlack->setRelCoor(0., 0., 0.);
-  this->fadeToBlack->setParent(this->currentCam);
-}
-
-
-void CameraMan::moveCurrCam(int x, int y, int z)
-{
-  currentCam->target->trans(x,y,z);
-}
-
-
+  this->fadeToBlack->setParent(newCamera);
+
+}
+
+/**
+ *  Sets the clipregion of all the cameras
+ *
+ * @param nearClip the new near clip
+ * @param nearClip the new far clip
+ */
+void CameraMan::setClipRegion(float nearClip, float farClip)
+{
+  this->nearClip=nearClip;
+  this->farClip=farClip;
+
+  for (ObjectList<Camera>::const_iterator it = Camera::objectList().begin();
+       it != Camera::objectList().end();
+       ++it)
+  {
+     (*it)->setClipRegion(this->nearClip, this->farClip);
+  }
+}
+
+/**
+ *  Changes the target of the current camera. (where the camera looks at)
+ *
+ * @param className the class of the new target
+ * @param objectName the name of the new target
+ */
 void CameraMan::changeCurrTarget(const std::string& className, const std::string& objectName)
 {
-  BaseObject* object = ObjectListBase::getBaseObject(className, objectName);
-  if( object != NULL && object->isA(PNode::staticClassID()))
-  {
-    currentCam->lookAt(dynamic_cast<PNode*>(object));
-    State::setCamera(this->currentCam,  dynamic_cast<CameraTarget*>(object));
-  }
-}
-
-
-void CameraMan::atachCurrCameraToWorldEntity(const std::string& className, const std::string& targetEntity)
-{
-  BaseObject* object = ObjectListBase::getBaseObject(className, targetEntity);
-
-  if(object != NULL && object->isA(PNode::staticClassID()))
-  {
-   this->atachTarget(this->currentCam, dynamic_cast<PNode*>(object));
-   return;
-  }
-
-printf("ERROR CAMERAMANAGER: Couldn't set camera to: %s %s \n", className.c_str(),targetEntity.c_str() );
-}
-
-
-
-void CameraMan::detachCurrCamera()
-{
-  currentCam->target->detach();
-}
-
-
-
+  this->changeTarget( (State::getCamera())->getName() , className, objectName);
+}
+
+/**
+ *  Attaches the current camera to a new pnode. (the camera follows the pnode)
+ *
+ * @param className the class of the new parent node
+ * @param objectName the name of the new parent node
+ */
+void CameraMan::attachCurrCamera(const std::string& className, const std::string& targetEntity)
+{
+  this->attachCamera( (State::getCamera())->getName(), className,  targetEntity);
+}
+
+/**
+ *  Sets the current camera to a new position
+ *
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
 void CameraMan::jumpCurrCam(float x, float y, float z)
 {
-  currentCam->target->jump(x, y, z);
-}
-
+  this->jumpCam((State::getCamera())->getName(), x, y, z);
+}
+
+/**
+ *  Moves the current camera slowly to a new position
+ *
+ * @param x the new x coordinate
+ * @param y the new y coordinate
+ * @param z the new z coordinate
+ */
+void CameraMan::moveCurrCam(float x, float y, float z)
+{
+  this->moveCam( (State::getCamera())->getName(), x, y, z);
+}
+
+/**
+ *  Toggles the fadestate (from in to out and via versa)
+ */
 void CameraMan::togglFade()
 {
-  if( this->fadeToBlack)
+ if( this->fadeToBlack)
     fadeToBlack->toggleFade();
 }
 
-
+/**
+ *  Sets the fadestate immediately to black (fade out)
+ */
 void CameraMan::initFadeBlack()
 {
@@ -242,143 +330,2 @@
     fadeToBlack->initFadeBlack();
 }
-
-
-void CameraMan::moveCam(int x, int y, int z, int camNo)
-{
-  cameras[camNo]->target->trans(x,y,z);
-}
-
-
-void CameraMan::changeTarget(int camNo,const std::string& className, const std::string& objectName)
-{
-  BaseObject* object = ObjectListBase::getBaseObject(className, objectName);
-  if( object != NULL && object->isA(PNode::staticClassID()))
-  {
-    cameras[camNo]->lookAt(dynamic_cast<PNode*>(object));
-  }
-}
-
-
-void CameraMan::changeTarget(const std::string& camName,const std::string& className, const std::string& objectName)
-{
-  BaseObject* object = ObjectListBase::getBaseObject(className, objectName);
-  BaseObject* newCam = ObjectListBase::getBaseObject("Camera", camName);
-  if( object != NULL && newCam != NULL && object->isA(PNode::staticClassID()))
-  {
-    dynamic_cast<Camera*>(newCam)->lookAt(dynamic_cast<PNode*>(object));
-    State::setCamera( dynamic_cast<Camera*>(newCam),  dynamic_cast<CameraTarget*>(object));
-  }
-}
-
-
-void CameraMan::atachCameraToWorldEntity(const std::string& cameraName, const std::string& className, const std::string& targetEntity)
-{
-  BaseObject* object = ObjectListBase::getBaseObject(className, targetEntity);
-  BaseObject* targetCam = ObjectListBase::getBaseObject("Camera", cameraName);
-
-  if( object != NULL && targetCam != NULL && object->isA(PNode::staticClassID()) )
-  {
-    this->atachTarget(dynamic_cast<Camera*>(targetCam), dynamic_cast<PNode*>( object ));
-    return;
-  }
-
-  printf("ERROR CAMERAMANAGER: Couldn't set camera %s to: %s %s \n", cameraName.c_str(), className.c_str(),targetEntity.c_str() );
-}
-
-
-
-void CameraMan::jumpCam(int x, int y, int z, int camNo)
-{
-  cameras[camNo]->target->jump(x, y, z);
-}
-
-
-void CameraMan::jumpCam(const std::string& cameraName, float x, float y, float z)
-{
-  BaseObject* targetCam = ObjectListBase::getBaseObject("Camera", cameraName);
-  if( targetCam != NULL )
-  {
-    dynamic_cast<Camera*>(targetCam)->target->jump( x, y, z );
-  }
-
-}
-
-
-void CameraMan::setClipRegion(float nearCli, float farCli)
-{
-  this->nearClip=nearCli;
-  this->farClip=farCli;
-
-  for(unsigned int i = 0; i < this->cameras.size(); i++)
-    cameras[i]->setClipRegion(nearCli, farCli);
-}
-
-
-
-bool CameraMan::cameraIsInVector(Camera* camera)
-{
-
-  for(std::vector<Camera*>::const_iterator it = cameras.begin(); it != cameras.end(); it++ )
-  {
-    if( (*it) == camera)
-    {
-      return true;
-    }
-  }
-  return false;
-
-
-}
-
-
-void CameraMan::cameraInfo()
-{
-  bool sameCam = (this->currentCam == State::getCamera());
-
-
-  PRINT(0)("==== CameraMan::cameraInfo ===\n");
-  PRINT(0)("=  Camera Name: %s\n", this->currentCam->getName().c_str());
-  PRINT(0)("=  Tests:\n");
-  PRINT(0)("==  State::Cam == this::Cam  %i\n", sameCam);
-  PRINT(0)("==  Parenting Informations:\n");
-  this->currentCam->debugNode(10);
-  PRINT(0)("==============================\n");
-}
-
-
-float CameraMan::getCurrCameraCoorX()
-{ return this->currentCam->getAbsCoorX(); }
-
-float CameraMan::getCurrCameraCoorY()
-{ return this->currentCam->getAbsCoorY(); }
-
-float CameraMan::getCurrCameraCoorZ()
-{ return this->currentCam->getAbsCoorZ(); }
-
-
-
-void CameraMan::atachTarget(Camera* cam ,PNode* target)
-{
-  cam->target->atach(target);
-  cam->setViewMode(Camera::ViewNormal);
-  State::setCamera( cam,  dynamic_cast<CameraTarget*>(target));
-
-}
-
-//how to get a class fkt pointer
-
-//BaseObject* object = ObjectListBase::getBaseObject(className, objectName);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: branches/cleanup/src/world_entities/tools/cameraman.h
===================================================================
--- branches/cleanup/src/world_entities/tools/cameraman.h	(revision 10591)
+++ branches/cleanup/src/world_entities/tools/cameraman.h	(revision 10593)
@@ -2,7 +2,7 @@
 #define _CAMERAMAN_H
 
-
-#include <vector>
 #include "base_object.h"
+#include "state.h"
+#include "camera.h"
 
 class BlackScreen;
@@ -11,60 +11,48 @@
 
 class CameraMan : public BaseObject {
+
   ObjectListDeclaration(CameraMan);
 
-  private:
-    Camera* currentCam;
-    float nearClip;
-    float farClip;
-    BlackScreen* fadeToBlack;
-
   public:
-    std::vector<Camera*> cameras;
     CameraMan(const TiXmlElement* root = NULL);
-    void setCam(unsigned int CameraNo);
-    void setCam(const std::string& camName);
-    void setCam(Camera* camera);
-
-    /// LOADING
+  
+    /// Loading
     virtual void loadParams(const TiXmlElement* root);
     void createCameras(const TiXmlElement* camerasTag);
     void createCam(const TiXmlElement* root);
 
-    /// POLLING
-    float getCurrCameraCoorX();
-    float getCurrCameraCoorY();
-    float getCurrCameraCoorZ();
-    const Camera* getCurrentCam() const { return this->currentCam; }
-    Camera* getCurrentCam() { return this->currentCam; }
+    /// Camera management
+    void changeTarget(const std::string& cameraName,const std::string& className, const std::string& objectName);
+    void attachCamera(const std::string& cameraName, const std::string& className, const std::string& targetEntity);
 
-    
-    /// Current camera
-    void moveCurrCam(int x, int y, int z);
-    void changeCurrTarget(const std::string& className, const std::string& objectName);
-    void atachCurrCameraToWorldEntity(const std::string& className, const std::string& targetEntity);
-    void detachCurrCamera();
-    void jumpCurrCam(float x, float y, float z);
-    void togglFade();
-    void initFadeBlack();
-    
-    /// Camera
-    void moveCam(int x, int y, int z,  int camNo);
-    void changeTarget(int camNo, const std::string& className,const std::string& objectName);
-    void changeTarget(const std::string& camName,const std::string& className, const std::string& objectName);
-    void atachCameraToWorldEntity(const std::string& cameraName, const std::string& className, const std::string& targetEntity);
-    void jumpCam(int x, int y, int z, int camNo);
     void jumpCam(const std::string& cameraName, float x, float y, float z);
+    void moveCam(const std::string& cameraName, float x, float y, float z);
     void setRelCameraCoor(const std::string& cameraName, float x, float y, float z);
     void setRelCameraCoorSoft(const std::string& cameraName, float x, float y, float z, float bias);
-    //void setViewMode(const std::string& camName, const std::string& viewMode);
-    void pauseCamera(const std::string& camName, bool stop);
-    
-    void changeSpeed(float speed);
+
+    void setCam(const std::string& cameraName);
+    void setCam(Camera* newCamera);
     void setClipRegion(float nearClip, float farClip);
-    void cameraInfo();
-    
+   
+    /// Managing the current camera
+    void changeCurrTarget(const std::string& className, const std::string& objectName);
+    void attachCurrCamera(const std::string& className, const std::string& targetEntity);
+    void jumpCurrCam(float x, float y, float z);
+    void moveCurrCam(float x, float y, float z);
+
+    /// Fading
+    void togglFade();
+    void initFadeBlack(); 
+
+    /// Polling
+    float getCurrCameraCoorX(){return (State::getCamera())->getAbsCoorX();}
+    float getCurrCameraCoorY(){return (State::getCamera())->getAbsCoorY();}
+    float getCurrCameraCoorZ(){return (State::getCamera())->getAbsCoorZ();}
+    const std::string& getCurrCamName(){ return (State::getCamera())->getName(); }
+
   private:
-    bool cameraIsInVector(Camera* camera);
-    void atachTarget(Camera* cam, PNode* pnode);
+    float nearClip;
+    float farClip;
+    BlackScreen* fadeToBlack;
     
 
@@ -72,2 +60,3 @@
 
 #endif /* _CAMERAMAN_H */
+ 
Index: branches/cleanup/src/world_entities/tools/scrolling_screen.cc
===================================================================
--- branches/cleanup/src/world_entities/tools/scrolling_screen.cc	(revision 10591)
+++ branches/cleanup/src/world_entities/tools/scrolling_screen.cc	(revision 10593)
@@ -257,6 +257,5 @@
     return;
 
-  CameraMan* cm = State::getCameraman();
-  const Camera* cam = cm->getCurrentCam();
+  Camera* cam = State::getCamera();
   PNode* tar = cam->getTargetNode();
 
