Index: code/branches/spacestationentry/data/levels/dockingToASpaceStation.oxw
===================================================================
--- code/branches/spacestationentry/data/levels/dockingToASpaceStation.oxw	(revision 9856)
+++ code/branches/spacestationentry/data/levels/dockingToASpaceStation.oxw	(revision 9857)
@@ -71,5 +71,5 @@
     </StaticEntity>
 
-   <!-- Docking (Andocken) -->
+<!-- Docking  -->
     <Dock position="2830,20,50" roll=0 yaw=0 >
         <animations>
@@ -83,4 +83,8 @@
                 <EventListener event="dockMe" />
             </execute>
+
+	    <undocking>
+		<EventListener event="undockMe" />
+	    </undocking>
 	
             <activity>
@@ -93,29 +97,14 @@
                 beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"
             />
+
+	    <Billboard position="-2730,-19970,50" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
+	    <DistanceTrigger position="-2730,-19970,50" distance="50" target="Pawn"
+                beaconMode="identify" targetname="bcnDestroyer" name="undockMe"
+            />
         </attached>
 
     </Dock>
-
-
-	
-
     
-    <!--SpaceShip
-        template            = "spaceshipcollateraldamage"
-        team                = "0"
-        position            = "2890,-40,6"
-        orientation         = "-0.14, 0.68, 0.68, 0.223"
-        lookat              = "0,0,0"
-        roll                = "180"
-        name                = "collateralDamage"
-        radarname           = "Collateral Damage" >
-      <attached>
-        <DockingTarget name="spaceShip" />
-        <DistanceTriggerBeacon name="bcnDestroyer" />
-        <DockingTarget name="destroyer" />
-      </attached>
-    </SpaceShip-->
-    
-<FpsPlayer template = "fps" radarname = "First Person Player" position = "0,-1900,0" >
+<FpsPlayer template = "fps" radarname = "First Person Player" position = "0,-19900,0" >
       <attached>
         <DockingTarget name="spaceShip" />
@@ -127,11 +116,10 @@
 <!-- Wuerfel -->
 
-  <StaticEntity position="0,-2000,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 >
+  <StaticEntity position="0,-20000,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 >
       <attached>
-        <Model position="0,0,0" mesh="crate.mesh" scale3D="66,15,5" />
-        
+        <Model position="0,0,0" mesh="crate.mesh" scale3D="80,80,5" />
       </attached>
       <collisionShapes>
-        <BoxCollisionShape position="0,0,0" halfExtents="330,330,10" />
+        <BoxCollisionShape position="0,0,0" halfExtents="400,400,25" />
       </collisionShapes>
   </StaticEntity>
@@ -139,22 +127,5 @@
 <!-- Schwerkraftfeld -->
 
-<ForceField position="2500,-92000,2500" mode="sphere" diameter="184000" velocity="-5000" />
-<ForceField position="2500,-92000,-2500" mode="sphere" diameter="184000" velocity="-5000" />
-<ForceField position="-2500,-92000,2500" mode="sphere" diameter="184000" velocity="-5000" />
-<ForceField position="-2500,-92000,-2500" mode="sphere" diameter="184000" velocity="-5000" />
-
-<!-- Ausgang - Trigger -->
-
-<Billboard position="150,-1950,150" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
-
-<DistanceTrigger name="ausgang" position="100,-1950,100"  target="Pawn" distance=50 stayActive="false" delay=0 />
-    <Script code="undock" onLoad="false">
-        <events>
-            <trigger>
-                <EventListener event=ausgang />
-            </trigger>
-        </events>
-    </Script>
-
+<ForceField position="0,-20000,0" mode="homogen" diameter="2000" forcedirection = "0,-400,0" />
 
 <!-- Rest -->
Index: code/branches/spacestationentry/src/modules/docking/Dock.cc
===================================================================
--- code/branches/spacestationentry/src/modules/docking/Dock.cc	(revision 9856)
+++ code/branches/spacestationentry/src/modules/docking/Dock.cc	(revision 9857)
@@ -69,5 +69,5 @@
         XMLPortObject(Dock, DockingAnimation, "animations", addAnimation, getAnimation, xmlelement, mode);
         XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
-        //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
+        XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
 
     }
@@ -79,16 +79,48 @@
         XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
 
-        //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
-    }
-
-    /*
+        XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
+    }
+
+
     bool Dock::undocking(bool bTriggered, BaseObject* trigger)
     {
-    	orxout(user_warning)<<"undocking"<<endl;
-
-    	return true;
-    }
-
-    */
+    	// Noch lange nicht fertig (leich veraenderte Kopie von execute())
+    	PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
+    	        PlayerInfo* player = NULL;
+
+    	        // Check whether it is a player trigger and extract pawn from it
+    	        if(pTrigger != NULL)
+    	        {
+    	            if(!pTrigger->isForPlayer()) {  // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one.
+    	                orxout(verbose, context::docking) << "Docking:execute PlayerTrigger was not triggered by a player.." << endl;
+    	                return false;
+    	            }
+    	            player = pTrigger->getTriggeringPlayer();
+    	        }
+    	        else
+    	        {
+    	            orxout(verbose, context::docking) << "Docking::execute Not a player trigger, can't extract pawn from it.." << endl;
+    	            return false;
+    	        }
+    	        if(player == NULL)
+    	        {
+    	            orxout(verbose, context::docking) << "Docking::execute Can't retrieve PlayerInfo from Trigger. (" << trigger->getIdentifier()->getName() << ")" << endl;
+    	            return false;
+    	        }
+
+    	        if(bTriggered)
+    	        {
+    	            cmdUndock();
+    	        }
+    	        else
+    	        {
+    	            // Remove player from candidates list
+    	            candidates_.erase(player);
+    	        }
+
+    	        return true;
+    }
+
+
 
     bool Dock::execute(bool bTriggered, BaseObject* trigger)
Index: code/branches/spacestationentry/src/modules/docking/Dock.h
===================================================================
--- code/branches/spacestationentry/src/modules/docking/Dock.h	(revision 9856)
+++ code/branches/spacestationentry/src/modules/docking/Dock.h	(revision 9857)
@@ -62,5 +62,5 @@
             // Trigger interface
             bool execute(bool bTriggered, BaseObject* trigger);
-            //bool undocking(bool bTriggered, BaseObject* trigger);
+            bool undocking(bool bTriggered, BaseObject* trigger);
 
             // XML interface
Index: code/branches/spacestationentry/src/modules/objects/ForceField.cc
===================================================================
--- code/branches/spacestationentry/src/modules/objects/ForceField.cc	(revision 9856)
+++ code/branches/spacestationentry/src/modules/objects/ForceField.cc	(revision 9857)
@@ -45,7 +45,11 @@
     /*static*/ const std::string ForceField::modeSphere_s = "sphere";
     /*static*/ const std::string ForceField::modeInvertedSphere_s = "invertedSphere";
+
+    /*static*/ const std::string ForceField::modeHomogen_s = "homogen";
+
     /*static*/ const std::string ForceField::modeNewtonianGravity_s = "newtonianGravity";
     /*static*/ const float ForceField::gravConstant_ = 6.673e-11;
     /*static*/ const float ForceField::attenFactor_ = 1;
+
 
     /**
@@ -89,4 +93,5 @@
         XMLPortParam(ForceField, "length", setLength  , getLength  , xmlelement, mode).defaultValues(2000);
         XMLPortParam(ForceField, "mode", setMode, getMode, xmlelement, mode);
+        XMLPortParam(ForceField, "forcedirection", setForceDirection, getForceDirection, xmlelement, mode).defaultValues(Vector3(0,-400,0));
     }
     
@@ -196,4 +201,19 @@
             }
         }
+        else if(this->mode_ == forceFieldMode::homogen)
+        {
+        	// Iterate over all objects that could possibly be affected by the ForceField.
+        	for (ObjectList<MobileEntity>::iterator it = ObjectList<MobileEntity>::begin(); it != ObjectList<MobileEntity>::end(); ++it)
+        	{
+        		Vector3 distanceVector = it->getWorldPosition() - this->getWorldPosition();
+        	    float distance = distanceVector.length();
+        	    if (distance < this->radius_ && distance > this->massRadius_)
+        	    {
+        	    	// Add a Acceleration in forceDirection_.
+        	    	// Vector3(0,0,0) is the direction, where the force should work.
+        	    	it->addAcceleration(forceDirection_ , Vector3(0,0,0));
+        	    }
+        	}
+        }
     }
 
@@ -214,4 +234,8 @@
         else if(mode == ForceField::modeNewtonianGravity_s)
             this->mode_ = forceFieldMode::newtonianGravity;
+
+        else if(mode == ForceField::modeHomogen_s)
+            this->mode_ = forceFieldMode::homogen;
+
         else
         {
@@ -239,4 +263,8 @@
             case forceFieldMode::newtonianGravity:
                 return ForceField::modeNewtonianGravity_s;
+
+            case forceFieldMode::homogen:
+                return ForceField::modeHomogen_s;
+
             default:
                 return ForceField::modeTube_s;
Index: code/branches/spacestationentry/src/modules/objects/ForceField.h
===================================================================
--- code/branches/spacestationentry/src/modules/objects/ForceField.h	(revision 9856)
+++ code/branches/spacestationentry/src/modules/objects/ForceField.h	(revision 9857)
@@ -1,2 +1,3 @@
+
 /*
  *   ORXONOX - the hottest 3D action shooter ever to exist
@@ -57,5 +58,6 @@
             sphere, //!< The ForceField has a spherical shape.
             invertedSphere, //!< The ForceField has a spherical shape but "inverted" behavior.
-            newtonianGravity //!< The ForceField imitates Newtonian gravitation for use in stellar bodies.
+            newtonianGravity, //!< The ForceField imitates Newtonian gravitation for use in stellar bodies.
+            homogen //!< Local homogenous Force field with changeable direction for the Space Station
         };
     }
@@ -66,4 +68,5 @@
 
         The following parameters can be set to specify the behavior of the ForceField.
+        - @b forcedirection The direction and the strength of the homogenous force field. Default is 0,-400,0.
         - @b velocity The amount of force the ForceField excerts. Default is 100.
         - @b diameter The diameter of the ForceField. Default is 500.
@@ -147,4 +150,11 @@
                 { return this->halfLength_*2; }
 
+            inline void setForceDirection(Vector3 forcedir)
+                { this->forceDirection_ = forcedir; }
+
+            inline Vector3 getForceDirection()
+                { return this->forceDirection_; }
+
+
             void setMode(const std::string& mode); //!< Set the mode of the ForceField.
             const std::string& getMode(void); //!< Get the mode of the ForceField.
@@ -156,4 +166,6 @@
             static const std::string modeInvertedSphere_s;
             static const std::string modeNewtonianGravity_s;
+
+            static const std::string modeHomogen_s;
 
             float velocity_; //!< The velocity of the ForceField.
@@ -167,4 +179,5 @@
             //! Attenuation factor for Newtonian ForceFields
             static const float attenFactor_;
+            Vector3 forceDirection_;
   };
 }
