Index: /orxonox/trunk/src/lib/graphics/particles/particle_system.h
===================================================================
--- /orxonox/trunk/src/lib/graphics/particles/particle_system.h	(revision 4395)
+++ /orxonox/trunk/src/lib/graphics/particles/particle_system.h	(revision 4396)
@@ -99,4 +99,5 @@
 
   virtual void applyField(Field* field);
+  virtual void tickPhys(float dt) {};
 
   void addParticle(const Vector& position, const Vector& velocity, unsigned int data = 0);
Index: /orxonox/trunk/src/lib/physics/fields/gravity.cc
===================================================================
--- /orxonox/trunk/src/lib/physics/fields/gravity.cc	(revision 4395)
+++ /orxonox/trunk/src/lib/physics/fields/gravity.cc	(revision 4396)
@@ -47,5 +47,5 @@
 Vector Gravity::calcForce(const Vector& data) const
 {
-  return /*(this->getAbsDir().apply(Vector(0,1,0)))*/ Vector(0,-1,0) * this->getMagnitude();
+  return Vector(0,-1,0) * this->getMagnitude();
 }
 
Index: /orxonox/trunk/src/lib/physics/physics_engine.cc
===================================================================
--- /orxonox/trunk/src/lib/physics/physics_engine.cc	(revision 4395)
+++ /orxonox/trunk/src/lib/physics/physics_engine.cc	(revision 4396)
@@ -140,12 +140,22 @@
 void PhysicsEngine::tick(float dt)
 {
-  tIterator<PhysicsConnection>* iterator = this->connections->getIterator();
-  PhysicsConnection* enumConn = iterator->nextElement();
-  while (enumConn)
+  tIterator<PhysicsConnection>* itPC = this->connections->getIterator();
+  PhysicsConnection* enumPC = itPC->nextElement();
+  while (enumPC)
     {
-      enumConn->apply();
-      enumConn = iterator->nextElement();
+      enumPC->apply();
+      enumPC = itPC->nextElement();
     }
-  delete iterator;
+  delete itPC;
+
+
+  tIterator<PhysicsInterface>* itPI = this->interfaces->getIterator();
+  PhysicsInterface* enumPI = itPI->nextElement();
+  while (enumPI)
+    {
+      enumPI->tickPhys(dt);
+      enumPI = itPI->nextElement();
+    }
+  delete itPI;
 }
 
Index: /orxonox/trunk/src/lib/physics/physics_interface.cc
===================================================================
--- /orxonox/trunk/src/lib/physics/physics_interface.cc	(revision 4395)
+++ /orxonox/trunk/src/lib/physics/physics_interface.cc	(revision 4396)
@@ -39,5 +39,5 @@
 {
   //   this->setClassName ("PhysicsInterface");
-   this->mass = 0;
+   this->mass = 1;
    this->massChildren = 0;
    this->forceSum = Vector(0, 0, 0);
@@ -90,5 +90,5 @@
 void PhysicsInterface::applyField(Field* field)
 {
-  //  this->forceSum += force;
+  this->forceSum += field->calcForce(dynamic_cast<PNode*>(this)->getAbsCoor());
 }
 
@@ -96,4 +96,8 @@
 {
   Vector acc = this->forceSum / ( this->massChildren + this->mass );
+  PNode* coorTick =  (PNode*) this;
+  coorTick->setRelCoor(coorTick->getRelCoor() + (this->forceSum / this->mass * dt));
+
+  this->forceSum = Vector(0,0,0);
   // todo: introduce kinematics
 }
Index: /orxonox/trunk/src/story_entities/world.cc
===================================================================
--- /orxonox/trunk/src/story_entities/world.cc	(revision 4395)
+++ /orxonox/trunk/src/story_entities/world.cc	(revision 4396)
@@ -48,4 +48,5 @@
 #include "graphics_engine.h"
 #include "physics_engine.h"
+#include "fields.h"
 
 #include "command_node.h"
@@ -181,4 +182,5 @@
   TextEngine::getInstance()->flush();
   delete AnimationPlayer::getInstance(); // this should be at the end of the unloading sequence.
+  delete PhysicsEngine::getInstance();
   //delete garbagecollecor
   //delete animator
@@ -473,8 +475,15 @@
   emitter->setParent(this->localPlayer);
   emitter->setRelCoor(Vector(-3,0,0));
+
+  Field* gravity = new Gravity();
+  gravity->setMagnitude(1000);
+  //  gravity->setParent(this->localCamera->getTarget());
   
   // Add the Flow from the Emitter into the System
   particleEngine->addConnection(emitter, system);
 
+  new PhysicsConnection(system, gravity);
+    new PhysicsConnection(this->localPlayer, gravity);
+  
 
   WorldEntity* testEntity = new TestEntity();
@@ -1002,4 +1011,7 @@
       AnimationPlayer::getInstance()->tick(this->dtS);
 
+      PhysicsEngine::getInstance()->tick(this->dtS);
+
+
       particleEngine->tick(this->dtS);
       this->garbageCollector->tick(this->dtS);
Index: /orxonox/trunk/src/story_entities/world.h
===================================================================
--- /orxonox/trunk/src/story_entities/world.h	(revision 4395)
+++ /orxonox/trunk/src/story_entities/world.h	(revision 4396)
@@ -16,4 +16,5 @@
 class TrackManager;
 class Camera;
+class Player;
 class PNode;
 class GLMenuImageScreen;
@@ -123,5 +124,5 @@
   GLuint objectList;                  //!< temporary: \todo this will be ereased soon
   tList<WorldEntity>* entities;       //!< A template List of all entities. Every moving thing should be included here, and world automatically updates them.
-  WorldEntity* localPlayer;           //!< The Player, you fly through the level.
+  Player* localPlayer;                //!< The Player, you fly through the level.
   PilotNode* pilotNode;               //!< THe pilot node to fly with the mouse
 
