Index: orxonox/branches/dave/src/Makefile.am
===================================================================
--- orxonox/branches/dave/src/Makefile.am	(revision 3154)
+++ orxonox/branches/dave/src/Makefile.am	(revision 3155)
@@ -7,5 +7,5 @@
 bin_PROGRAMS=orxonox
 
-orxonox_SOURCES=orxonox.cc world.cc player.cc data_tank.cc world_entity.cc vector.cc camera.cc collision.cc command_node.cc ini_parser.cc keynames.cc track.cc base_entity.cc game_loader.cc campaign.cc story_entity.cc object.cc environment.cc array.cc material.cc list.cc
+orxonox_SOURCES=orxonox.cc world.cc player.cc data_tank.cc world_entity.cc vector.cc camera.cc collision.cc command_node.cc ini_parser.cc keynames.cc track.cc base_entity.cc game_loader.cc campaign.cc story_entity.cc object.cc environment.cc array.cc material.cc list.cc 
 noinst_HEADERS=ability.h data_tank.h npc.h stdincl.h ai.h environment.h orxonox.h synchronisable.h base_entity.h error.h player.h track.h camera.h ini_parser.h power_up.h vector.h collision.h keynames.h proto_class.h world.h command_node.h list.h shoot_laser.h world_entity.h coordinates.h message_structures.h shoot_rocket.h object.h array.h material.h list_template.h story_entity.h story_def.h game_loader.h campaign.h
 
Index: orxonox/branches/dave/src/command_node.cc
===================================================================
--- orxonox/branches/dave/src/command_node.cc	(revision 3154)
+++ orxonox/branches/dave/src/command_node.cc	(revision 3155)
@@ -186,4 +186,6 @@
 	  strcpy( cmd.cmd, aliases->keys[event.key.keysym.sym]);
 	  cmd.bUp = true;
+	  cmd.tottime=0.0f;
+	  
 	  if( strlen (cmd.cmd) > 0) relay (&cmd);
 	  break;
Index: orxonox/branches/dave/src/command_node.h
===================================================================
--- orxonox/branches/dave/src/command_node.h	(revision 3154)
+++ orxonox/branches/dave/src/command_node.h	(revision 3155)
@@ -23,5 +23,5 @@
 */
 typedef struct
-{
+{ 
   char keys[N_STD_KEYS][CMD_LENGHT];
   char buttons[N_BUTTONS][CMD_LENGHT];
@@ -43,4 +43,5 @@
   List* bound;	//!< List of WorldEntites that recieve commands from this CommandNode
   Sint32 coord[2];
+  
   
 
Index: orxonox/branches/dave/src/message_structures.h
===================================================================
--- orxonox/branches/dave/src/message_structures.h	(revision 3154)
+++ orxonox/branches/dave/src/message_structures.h	(revision 3155)
@@ -11,5 +11,5 @@
 //! structure that contains a command message
 typedef struct
-{
+{	float tottime;
 	char cmd[CMD_LENGHT];	//!< the command delivered
 	bool bUp;	//!< false = command was activated / true = command was deactivated
Index: orxonox/branches/dave/src/player.cc
===================================================================
--- orxonox/branches/dave/src/player.cc	(revision 3154)
+++ orxonox/branches/dave/src/player.cc	(revision 3155)
@@ -19,4 +19,5 @@
 #include "stdincl.h"
 #include "collision.h"
+#include "command_node.h"
 
 using namespace std;
@@ -27,4 +28,6 @@
 
   obj = new Object ("reaplow.obj");
+  tottime=0.0f;
+ 
   /*
   objectList = glGenLists(1);
@@ -90,4 +93,5 @@
 {
   //printf("Player|recieved command [%s]\n", cmd->cmd);
+  tottime=cmd->tottime;
   if( !strcmp( cmd->cmd, "up")) bUp = !cmd->bUp;
   else if( !strcmp( cmd->cmd, "down")) bDown = !cmd->bUp;
@@ -137,9 +141,12 @@
   Vector orthDirection(0.0, 0.0, 1.0);
   orthDirection = orthDirection.cross(direction);
-
-  if( bUp) { accel = accel+(direction*acceleration); }
-  if( bDown) { accel = accel-(direction*acceleration); }
-  if( bLeft ) { accel = accel + (orthDirection*acceleration); }
-  if( bRight ) { accel = accel - (orthDirection*acceleration); }
+  if(tottime<1.5f)
+	  tottime=tottime+4.0f*time;
+  else
+	  tottime=1.5f;
+  if( bUp) { accel = accel+(direction*acceleration*pow(tottime,2.0f)); }
+  if( bDown) { accel = accel-(direction*acceleration*pow(tottime,2.0f)); }
+  if( bLeft ) { accel = accel + (orthDirection*acceleration*pow(tottime,2.0f)); }
+  if( bRight ) { accel = accel - (orthDirection*acceleration*pow(tottime,2.0f));}
   if( bAscend ) { /* not yet implemented but just: (0,0,1)*acceleration */}
   if( bDescend) {/* FIXME */}
@@ -156,5 +163,5 @@
 
   /* this updates the player position on the track - user interaction */
-  l->pos = l->pos + accel*time;
+  l->pos = l->pos + (accel*time);
 }
 
Index: orxonox/branches/dave/src/player.h
===================================================================
--- orxonox/branches/dave/src/player.h	(revision 3154)
+++ orxonox/branches/dave/src/player.h	(revision 3155)
@@ -9,4 +9,5 @@
 #include "world_entity.h"
 #include "object.h"
+#include <math.h>
 
 //! Basic controllable WorldEntity
@@ -39,4 +40,5 @@
   GLuint objectList;
   Object* obj;
+  float tottime;
   
   void move (float time);
Index: orxonox/branches/dave/src/world.cc
===================================================================
--- orxonox/branches/dave/src/world.cc	(revision 3154)
+++ orxonox/branches/dave/src/world.cc	(revision 3155)
@@ -185,22 +185,12 @@
   glColor3f(1.0,0,0);
   glBegin(GL_QUADS);
-  float height [500][50];
-  Vector normal_vectors[500][50];
+  float height [500][100];
+  Vector normal_vectors[500][100];
   float size = 2;
-    for(int i=0;i<400;i+=1){
-		for(int j=0;j<50;j+=1){
-	normal_vectors[i][j].x=0;
-    normal_vectors[i][j].y=1;
-	normal_vectors[i][j].z=0;
-	
-	
-	
-	}
-	}
-	
+   
 	
 	for ( int i = 0; i<400; i+=1)
       {
-	for (int j = 0; j<50;j+=1)
+	for (int j = 0; j<100;j+=1)
 	  {
 	    //height[i][j] = rand()/20046 + (j-25)*(j-25)/30;
@@ -208,23 +198,23 @@
 	  }
       }
-	 for(int a=0;a<2;a+=1){
+	 //Die Hügel ein wenig glätten
 	 for (int i=1;i<399 ;i+=1 ){
-		 for(int j=1;j<49;j+=1){
+		 for(int j=1;j<99;j+=1){
 			 height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4;
 
 		 }
 	 }
-	 }
+	 
     //Berechnung von normalen Vektoren
 
 	for(int i=1;i<399;i+=1){
-    for(int j=1;j<49 ;j+=1)
-
-    {
-		Vector* v1 = new Vector (size*i,        size*(j-25),      height[i][j]-20 );
-	    Vector* v2 = new Vector (size*(i+1),    size*(j-25),      height[i+1][j]-20);
-	    Vector* v3 = new Vector (size*(i),    size*(j-24),  height[i][j+1]-20);
-	    Vector* v4 = new Vector (size*(i-1),        size*(j-25),  height[i-1][j]-20);
-		Vector* v5 = new Vector (size*(i), size*(j-26), height[i][j-1]-20);
+    for(int j=1;j<99 ;j+=1)
+
+    {
+		Vector* v1 = new Vector (size*i,size*(j-25)-50,height[i][j]-20 );
+	    Vector* v2 = new Vector (size*(i+1),size*(j-25)-50,height[i+1][j]-20);
+	    Vector* v3 = new Vector (size*(i),size*(j-24)-50,height[i][j+1]-20);
+	    Vector* v4 = new Vector (size*(i-1),size*(j-25)-50,height[i-1][j]-20);
+		Vector* v5 = new Vector (size*(i),size*(j-26)-50,height[i][j-1]-20);
 		
 		Vector c1 = *v1 - *v2;
@@ -243,10 +233,10 @@
 	for ( int i = 0; i<400; i+=1)
       {
-	for (int j = 0; j<50;j+=1)
+	for (int j = 0; j<100;j+=1)
 	  {	  
-	    Vector* v1 = new Vector (size*i,        size*(j-25),      height[i][j]-20 );
-	    Vector* v2 = new Vector (size*(i+1),    size*(j-25),      height[i+1][j]-20);
-	    Vector* v3 = new Vector (size*(i+1),    size*(j-24),  height[i+1][j+1]-20);
-	    Vector* v4 = new Vector (size*(i),        size*(j-24),  height[i][j+1]-20);
+	   Vector* v1 = new Vector (size*i,        size*(j-25)-50,      height[i][j]-20 );
+	   Vector* v2 = new Vector (size*(i+1),    size*(j-25)-50,      height[i+1][j]-20);
+	   Vector* v3 = new Vector (size*(i+1),    size*(j-24)-50,  height[i+1][j+1]-20);
+	   Vector* v4 = new Vector (size*(i),        size*(j-24)-50,  height[i][j+1]-20);
 	    float a[3];
 		if(height[i][j]<snowheight){
