Index: trunk/src/world_entities/camera.cc
===================================================================
--- trunk/src/world_entities/camera.cc	(revision 10390)
+++ trunk/src/world_entities/camera.cc	(revision 10391)
@@ -41,15 +41,20 @@
 {
   this->registerObject(this, Camera::_objectList);
+
   this->init();
 }
 
-/*
+
 Camera::Camera(const TiXmlElement* root)
 {
   this->registerObject(this, Camera::_objectList);
+
+  if( root != NULL)
+    this->loadParams(root);
+
   this->init();
-  this->loadParams(root);
-}
-*/
+
+}
+
 
 /**
@@ -87,11 +92,9 @@
   this->viewLeftDistance = 10;
 
-  //this->loadParams(doc.RootElement());
-
   this->setViewMode(Camera::ViewNormal);
 
   this->setParentMode(PNODE_ALL);
   this->eventHandling = true;
-  
+
   //add to track
   if(this->entityTrack)
@@ -213,5 +216,5 @@
   if (fabsf(tmpFovy) > 0.01)
     this->fovy += tmpFovy * fabsf(dt);
-    
+
   if(this->entityTrack)
     this->entityTrack->tick(dt);
@@ -302,5 +305,5 @@
 {
   // Do the PNode loading stuff
-  PNode::loadParams(root);
+  WorldEntity::loadParams(root);
 
   LoadParam(root, "viewTopFovy", this, Camera, setViewTopFovy);
Index: trunk/src/world_entities/planet.cc
===================================================================
--- trunk/src/world_entities/planet.cc	(revision 10390)
+++ trunk/src/world_entities/planet.cc	(revision 10391)
@@ -45,4 +45,7 @@
   this->toList(OM_GROUP_01);
 
+  this->rotSpeedPlanet = 0.0;
+  this->rotSpeedCloud = 0.0;
+
   //this->materialPlanet->setIllum(20);
   //this->materialPlanet->setAmbient(0.1, 0.1, 0.1);
@@ -54,6 +57,5 @@
   this->setModel(model);
 
-
-
+  this->cloudModel = new PrimitiveModel(PRIM_SPHERE, this->size + 10, 50);
 }
 
@@ -77,4 +79,7 @@
   LoadParam(root, "cloud-texture", this, Planet, setCloudTexture)
       .describe("Sets the cloud texture of the planet");
+
+  LoadParam(root, "cloud-rotation", this, Planet, setCloudRotation)
+      .describe("Sets the cloud rotation speed");
 
   LoadParam(root, "size", this, Planet, setSize)
@@ -103,4 +108,9 @@
 
 
+void Planet::setCloudRotation(float rotationSpeed)
+{
+  this->rotSpeedCloud = rotationSpeed;
+}
+
 /**
  * @param size The new size of the Planet
@@ -114,10 +124,23 @@
 
 
+void Planet::tick( float dt)
+{
+  if( dt != 0.)
+    this->shiftDir( Quaternion( this->rotSpeedPlanet * dt, Vector(1,0,0)));
+}
 
+
+/**
+ * draws the planet
+ */
 void Planet::draw() const
 {
+  // draw the clouds
   this->materialPlanet.select();
+  WorldEntity::draw();
 
-  WorldEntity::draw();
+  this->materialCloud.select();
+  WorldEntity::draw(this->cloudModel);
+
 }
 
Index: trunk/src/world_entities/planet.h
===================================================================
--- trunk/src/world_entities/planet.h	(revision 10390)
+++ trunk/src/world_entities/planet.h	(revision 10391)
@@ -29,7 +29,9 @@
   void setTexture(const std::string& textureName);
   void setCloudTexture(const std::string& textureName);
+  void setCloudRotation(float rotationSpeed);
 
 
 
+  virtual void tick( float dt);
   virtual void draw() const;
 
@@ -42,5 +44,6 @@
   Model*          cloudModel;      //!< the model for the cloud
 
-
+  float           rotSpeedCloud;   //! cloud rotation speed
+  float           rotSpeedPlanet;  //! planet rotation speed
   float           size;            //!< Size of the Planet. This should match the frustum maximum range.
   float           textureSize;     //!< this is the length of a texture (assumes a square texture)
Index: trunk/src/world_entities/world_entity.cc
===================================================================
--- trunk/src/world_entities/world_entity.cc	(revision 10390)
+++ trunk/src/world_entities/world_entity.cc	(revision 10391)
@@ -68,5 +68,5 @@
  */
 WorldEntity::WorldEntity()
-  : Synchronizeable(), _collisionFilter(this)
+    : Synchronizeable(), _collisionFilter(this)
 {
   this->registerObject(this, WorldEntity::_objectList);
@@ -171,5 +171,5 @@
   // Track
   LoadParamXML(root, "Track", this, WorldEntity, addTrack)
-   .describe("creates and adds a track to this WorldEntity");
+  .describe("creates and adds a track to this WorldEntity");
 }
 
@@ -191,5 +191,5 @@
   }
   LOAD_PARAM_END_CYCLE(element);*/
-  
+
 
 }
@@ -252,7 +252,7 @@
         this->setModel(model, modelNumber);
 
-	if( modelNumber == 0)
+        if( modelNumber == 0)
         {
-	  this->buildObbTree(obbTreeDepth);
+          this->buildObbTree(obbTreeDepth);
         }
       }
@@ -275,6 +275,6 @@
     {
       PRINTF(4)("fetching MD3 file: %s\n", fileName.c_str());
-//      Model* m = new md3::MD3Model(fileName, this->scaling);
-//      this->setModel(m, 0);
+      //      Model* m = new md3::MD3Model(fileName, this->scaling);
+      //      this->setModel(m, 0);
 
       //       if( m != NULL)
@@ -448,5 +448,5 @@
 void WorldEntity::unmount(int slot)
 {
-    if( this->mountPoints[slot] == NULL)
+  if( this->mountPoints[slot] == NULL)
   {
     PRINTF(0)("you tried to remove an entity from a mount point that doesn't exist (slot %i)\n", slot);
@@ -649,6 +649,5 @@
 */
 void WorldEntity::tick(float time)
-{
-}
+{}
 
 
@@ -689,7 +688,7 @@
       this->models[0]->draw();
     }
-    
+
     //if (this->entityTrack)
-       //this->entityTrack->drawGraph(0.02);
+    //this->entityTrack->drawGraph(0.02);
 
     //     if( this->aabbNode != NULL)
@@ -699,4 +698,32 @@
   }
 }
+
+
+/**
+ *  the entity is drawn onto the screen with this function
+ *
+ * This is a central function of an entity: call it to let the entity painted to the screen.
+ * Just override this function with whatever you want to be drawn.
+*/
+void WorldEntity::draw(const Model* model) const
+{
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+
+  /* translate */
+  glTranslatef (this->getAbsCoor ().x,
+                this->getAbsCoor ().y,
+                this->getAbsCoor ().z);
+  Vector tmpRot = this->getAbsDir().getSpacialAxis();
+  glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
+
+
+  // This Draws the LOD's
+  if( model != NULL)
+    model->draw();
+
+  glPopMatrix();
+}
+
 
 /**
Index: trunk/src/world_entities/world_entity.h
===================================================================
--- trunk/src/world_entities/world_entity.h	(revision 10390)
+++ trunk/src/world_entities/world_entity.h	(revision 10391)
@@ -75,4 +75,5 @@
   virtual void tick (float time);
   virtual void draw () const;
+  void draw(const Model* model) const;
   void debugDrawMountPoints() const;
 
