Index: orxonox/trunk/src/camera.cc
===================================================================
--- orxonox/trunk/src/camera.cc	(revision 3672)
+++ orxonox/trunk/src/camera.cc	(revision 3675)
@@ -139,8 +139,8 @@
   if (tmpFovy > .001)
     this->fovy += (this->toFovy - this->fovy) * dt;
-  Vector tmpPos = (this->toRelCoor - this->getRelCoor()) * dt;
+  Vector tmpPos = (this->toRelCoor - *this->getRelCoor()) * dt;
   if (tmpPos.len() >= .001)
     {
-      tmpPos = tmpPos + this->getRelCoor();
+      tmpPos = tmpPos + *this->getRelCoor();
       this->setRelCoor(&tmpPos);
     }
Index: orxonox/trunk/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3672)
+++ orxonox/trunk/src/glmenu/glmenu_imagescreen.cc	(revision 3675)
@@ -110,30 +110,11 @@
 void GLMenuImageScreen::draw ()
 {
-  /*
-  // Display a quad texture to the screen
-  glEnable(GL_TEXTURE_2D);
-  glBegin(GL_QUADS);
-  
-  // Display the top left vertice
-  glTexCoord2f(0.0f, 1.0f);
-  glVertex3f(-2.5, 2.5, 0);
-  
-  // Display the bottom left vertice
-  glTexCoord2f(0.0f, 0.0f);
-  glVertex3f(-2.5, -2.5, 0);
-  
-  // Display the bottom right vertice
-  glTexCoord2f(1.0f, 0.0f);
-  glVertex3f(2.5, -2.5, 0);
-  
-  // Display the top right vertice
-  glTexCoord2f(1.0f, 1.0f);
-  glVertex3f(2.5, 2.5, 0);
-
-  glEnd();
-  glEnable(GL_TEXTURE_2D);  
-  */
 
   glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+
+
+  //PRINTF()();
+  printf("GLMenuImagEscreen::draw() - drawing step %i/%i\n", 
+	 this->currentValue, this->maxValue);
 
   /* screen size */
@@ -154,6 +135,8 @@
   int barWidth = 230;
   int barHeight = 30;
-
-  int val = (int)((float)this->currentValue/(float)this->maxValue) * barWidth;
+  
+  float val = ((float)this->currentValue/(float)this->maxValue) * barWidth;
+  if( val > (float)barWidth)
+    val = (float)barWidth;
 
   glMatrixMode(GL_PROJECTION);
@@ -170,9 +153,10 @@
   glDisable(GL_LIGHTING);
 
+  /* draw the progress bar */
   glBegin(GL_QUADS);
   glColor3f(0.96, 0.84, 0.34);
   glVertex2i(barX, barY);
-  glVertex2i(barX + val, barY);
-  glVertex2i(barX + val, barY + barHeight);
+  glVertex2i(barX + (int)val, barY);
+  glVertex2i(barX + (int)val, barY + barHeight);
   glVertex2i(barX, barY + barHeight);
   glColor3f(1.0, 1.0, 1.0);
@@ -223,5 +207,5 @@
   glPopAttrib();
 
-  SDL_GL_SwapBuffers();                    
+  SDL_GL_SwapBuffers();              
 }
  
Index: orxonox/trunk/src/glmenu/glmenu_imagescreen.h
===================================================================
--- orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3672)
+++ orxonox/trunk/src/glmenu/glmenu_imagescreen.h	(revision 3675)
@@ -45,4 +45,6 @@
   float offsetX, offsetY;    //!< offset of the image from left and up
   Material* backMat;         //!< Background Material.
+
+  /* progress bar values */
   int currentValue;          //!< the current count of step() calls fired yet
   int maxValue;              //!< total count of steps
Index: orxonox/trunk/src/lib/coord/p_node.cc
===================================================================
--- orxonox/trunk/src/lib/coord/p_node.cc	(revision 3672)
+++ orxonox/trunk/src/lib/coord/p_node.cc	(revision 3675)
@@ -142,9 +142,12 @@
    \brief get relative coordinates
    \returns relative coordinates to its parent
-*/
-Vector PNode::getRelCoor ()
-{
-  Vector r = *this->relCoordinate; /* return a copy, so it can't be modified */
-  return r;
+   
+   the reference that is returned is a pointer to the real relCoor, so don't 
+   change it unless you realy know what you are doing.
+*/
+Vector* PNode::getRelCoor ()
+{
+  //Vector r = *this->relCoordinate; /* return a copy, so it can't be modified */
+  return this->relCoordinate;
 }
 
@@ -166,4 +169,19 @@
 
 /**
+   \brief set relative coordinates
+   \param relCoord relative coordinates to its parent
+
+   it is very importand, that you use this function, if you want to update the
+   relCoordinates. If you don't use this, the PNode won't recognize, that something
+   has changed and won't update the children Nodes.
+*/
+void PNode::setRelCoor (Vector relCoord)
+{
+  this->bRelCoorChanged = true;
+  *this->relCoordinate = relCoord;
+}
+
+
+/**
    \brief get absolute coordinates
    \returns absolute coordinates from (0,0,0)
@@ -186,4 +204,19 @@
   this->bAbsCoorChanged = true;
   *this->absCoordinate = *absCoord;
+}
+
+
+
+/**
+   \param absCoord set absolute coordinate
+
+   it is very importand, that you use this function, if you want to update the
+   absCoordinates. If you don't use this, the PNode won't recognize, that something
+   has changed and won't update the children Nodes.
+*/
+void PNode::setAbsCoor (Vector absCoord)
+{
+  this->bAbsCoorChanged = true;
+  *this->absCoordinate = absCoord;
 }
 
@@ -249,4 +282,11 @@
 
 
+void PNode::setRelDir (Quaternion relDir)
+{
+  this->bRelCoorChanged = true;
+  *this->relDirection = relDir;
+}
+
+
 /**
    \brief gets the absolute direction (0,0,1)
@@ -272,4 +312,21 @@
   *this->absDirection = *absDir;
 }
+
+
+
+/**
+   \brief sets the absolute direction (0,0,1)
+   \param absDir absolute coordinates
+
+   it is very importand, that you use this function, if you want to update the
+   absDirection. If you don't use this, the PNode won't recognize, that something
+   has changed and won't update the children Nodes.
+*/
+void PNode::setAbsDir (Quaternion absDir)
+{
+  this->bAbsDirChanged = true;
+  *this->absDirection = absDir;
+}
+
 
 
Index: orxonox/trunk/src/lib/coord/p_node.h
===================================================================
--- orxonox/trunk/src/lib/coord/p_node.h	(revision 3672)
+++ orxonox/trunk/src/lib/coord/p_node.h	(revision 3675)
@@ -57,10 +57,10 @@
 
 
-  Vector getRelCoor ();
+  Vector* getRelCoor ();
   void setRelCoor (Vector* relCoord);
-  //void setRelCoor (Vector relCoord);
+  void setRelCoor (Vector relCoord);
   Vector getAbsCoor ();
   void setAbsCoor (Vector* absCoord);
-  //void setAbsCoor (Vector absCoord);
+  void setAbsCoor (Vector absCoord);
   void shiftCoor (Vector* shift);
   //void shiftCoor (Vector shift);
@@ -68,6 +68,8 @@
   Quaternion getRelDir ();
   void setRelDir (Quaternion* relDir);
+  void setRelDir (Quaternion relDir);
   Quaternion getAbsDir ();
   void setAbsDir (Quaternion* absDir);
+  void setAbsDir (Quaternion absDir);
   void shiftDir (Quaternion* shift);
 
Index: orxonox/trunk/src/story_entities/world.cc
===================================================================
--- orxonox/trunk/src/story_entities/world.cc	(revision 3672)
+++ orxonox/trunk/src/story_entities/world.cc	(revision 3675)
@@ -201,4 +201,5 @@
       testFont = new FontSet();
       testFont->buildFont("../data/pictures/font.tga");
+      this->glmis->step();
 
       // initializing the TrackManager
@@ -299,5 +300,6 @@
 	    this->spawn (this->localPlayer);
 	    /*monitor progress*/
-	    this->glmis->step();	    
+	    //this->glmis->step();	    
+	    this->glmis->step();
 
 	    // bind input
@@ -312,5 +314,5 @@
 	    
 	    /*monitor progress*/
-	    this->glmis->step();	    
+	    this->glmis->step();
 
 	    // Create SkySphere
@@ -350,4 +352,5 @@
 	    //Vector* cameraOffset = new Vector (0, 5, -10);
 	    trackManager->condition(2, LEFTRIGHT, this->localPlayer);
+	    this->glmis->step();
 
 	    break;
@@ -485,5 +488,5 @@
   this->glmis = GLMenuImageScreen::getInstance();
   this->glmis->init();
-  this->glmis->setMaximum(10);
+  this->glmis->setMaximum(8);
   this->glmis->draw();
  
@@ -500,5 +503,5 @@
   PRINTF(3)("World::releaseLoadScreen - start\n"); 
   this->glmis->setValue(this->glmis->getMaximum());
-  SDL_Delay(500);
+  //SDL_Delay(500);
   PRINTF(3)("World::releaseLoadScreen - end\n"); 
 }
Index: orxonox/trunk/src/track_manager.cc
===================================================================
--- orxonox/trunk/src/track_manager.cc	(revision 3672)
+++ orxonox/trunk/src/track_manager.cc	(revision 3675)
@@ -268,5 +268,5 @@
   PNode* tmpNode = (PNode*)node;
 
-  if (tmpNode->getRelCoor().z < 0)
+  if (tmpNode->getRelCoor()->z < 0)
     return 0;
   else 
@@ -289,5 +289,5 @@
   PNode* tmpNode = (PNode*)node;
 
-  Vector nodeRelCoord = tmpNode->getRelCoor();
+  Vector nodeRelCoord = *tmpNode->getRelCoor();
   float minDist = 100000000;
   int childNumber = 0;
Index: orxonox/trunk/src/world_entities/player.cc
===================================================================
--- orxonox/trunk/src/world_entities/player.cc	(revision 3672)
+++ orxonox/trunk/src/world_entities/player.cc	(revision 3675)
@@ -178,11 +178,11 @@
   //orthDirection = orthDirection.cross (direction);
 
-  if( this->bUp && this->getRelCoor().x < 20)
+  if( this->bUp && this->getRelCoor()->x < 20)
     accel = accel+(direction*acceleration);
-  if( this->bDown && this->getRelCoor().x > -5)
+  if( this->bDown && this->getRelCoor()->x > -5)
     accel = accel-(direction*acceleration);
-  if( this->bLeft &&  TrackManager::getInstance()->getWidth() > -this->getRelCoor().z*2)
+  if( this->bLeft &&  TrackManager::getInstance()->getWidth() > -this->getRelCoor()->z*2)
     accel = accel - (orthDirection*acceleration); 
-  if( this->bRight &&  TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2)
+  if( this->bRight &&  TrackManager::getInstance()->getWidth() > this->getRelCoor()->z*2)
     accel = accel + (orthDirection*acceleration);
   if( this->bAscend )
Index: orxonox/trunk/src/world_entities/projectile.cc
===================================================================
--- orxonox/trunk/src/world_entities/projectile.cc	(revision 3672)
+++ orxonox/trunk/src/world_entities/projectile.cc	(revision 3675)
@@ -101,5 +101,5 @@
   if( this->ttl < this->currentLifeTime)
     {
-      *this->flightDirection = *this->flightDirection * this->speed;
+      *this->flightDirection = *this->flightDirection * this->speed * time;
       this->shiftCoor(this->flightDirection);
       this->flightDirection->debug();
Index: orxonox/trunk/src/world_entities/test_gun.cc
===================================================================
--- orxonox/trunk/src/world_entities/test_gun.cc	(revision 3672)
+++ orxonox/trunk/src/world_entities/test_gun.cc	(revision 3675)
@@ -84,4 +84,5 @@
   //printf("TestGun::fire() - firing weapon now ---------------------------\n");
   Projectile* pj = new Projectile();
+
   Vector* v = new Vector();
   *v = this->getAbsCoor();
@@ -93,4 +94,5 @@
   pj->setFlightDirection(q);
   //pj->setSpeed(this->getSpeed() * 0.025);
+
 
 
