Index: orxonox/trunk/src/lib/physics/physics_interface.cc
===================================================================
--- orxonox/trunk/src/lib/physics/physics_interface.cc	(revision 4375)
+++ orxonox/trunk/src/lib/physics/physics_interface.cc	(revision 4376)
@@ -21,4 +21,7 @@
 
 #include "physics_interface.h"
+
+#include "p_node.h"
+
 #include "list.h"
 #include "string.h"
@@ -33,5 +36,5 @@
 PhysicsInterface::PhysicsInterface () 
 {
-   this->setClassName ("PhysicsInterface");
+  //   this->setClassName ("PhysicsInterface");
    this->mass = 0;
    this->massChildren = 0;
@@ -49,46 +52,44 @@
 }
 
+/**
+   \brief recalculates the total mass of all the children of this node
+
+   (only availiable for PNodes)
+*/
 void PhysicsInterface::recalcMass()
 {
-	float massSum = 0;
-	
-	tIterator<PNode>* iterator = this->children->getIterator();
-	PNode* pn = iterator->nextElement();
-	while( pn != NULL) 
+  PNode* massCalcPNode = dynamic_cast<PNode*>(this);  //! \todo not sure if this will work ....
+  float massSum = 0;
+  
+  tIterator<PNode>* iterator = massCalcPNode->children->getIterator();
+  PNode* pn = iterator->nextElement();
+  while( pn != NULL) 
     { 
-    	// todo: find out if children are PhysicsInterface in an efficient way
-    	if (strcmp( pn->getClassName(), "PhysicsInterface")) {
-			massSum += ((PhysicsInterface*)pn)->getTotalMass();
-    	}
+      // todo: find out if children are PhysicsInterface in an efficient way
+      if (strcmp( pn->getClassName(), "PhysicsInterface")) {
+	massSum += ((PhysicsInterface*)pn)->getTotalMass();
+      }
       pn = iterator->nextElement();
     }
-	delete iterator;
+  delete iterator;
 	
-	if (massSum != this->massChildren ) {
-		this->massChildren = massSum;
-		if (strcmp( parent->getClassName(), "PhysicsInterface"))
-			((PhysicsInterface*)parent)->recalcMass();
-	} else {
-		this->massChildren = massSum;
-	}
+  if (massSum != this->massChildren ) {
+    this->massChildren = massSum;
+    if (strcmp( massCalcPNode->parent->getClassName(), "PhysicsInterface"))
+      ((PhysicsInterface*)massCalcPNode->parent)->recalcMass();
+  } else {
+    this->massChildren = massSum;
+  }
 }
 	
 	
-void PhysicsInterface::addForce( Vector force )
+void PhysicsInterface::applyForce( Vector force )
 {
-	forceSum += force;
+  this->forceSum += force;
 }
 
-void PhysicsInterface::addForce(Vector force, Vector grip)
+void PhysicsInterface::tickPhys( float dt )
 {
-	// add central force
-	forceSum += force;
-	// add momentum
-	// todo: some vector math
+  Vector acc = this->forceSum / ( this->massChildren + this->mass );
+  // todo: introduce kinematics
 }
-	
-void PhysicsInterface::tick( float dt )
-{
-	Vector acc = forceSum / ( massChildren + mass );
-	// todo: introduce kinematics
-}
Index: orxonox/trunk/src/lib/physics/physics_interface.h
===================================================================
--- orxonox/trunk/src/lib/physics/physics_interface.h	(revision 4375)
+++ orxonox/trunk/src/lib/physics/physics_interface.h	(revision 4376)
@@ -7,5 +7,5 @@
 #define _PHYSICS_INTERFACE_H
 
-#include "p_node.h"
+#include "vector.h"
 
 //! A Physics interface
@@ -13,25 +13,28 @@
    here can be some longer description of this class
 */
-class PhysicsInterface : public PNode {
+class PhysicsInterface {
 
  public:
   PhysicsInterface();
   virtual ~PhysicsInterface();
-  
-  inline void setMass( float mass ) { this->mass = mass; };					//!< Set the mass of this node
-  inline float getMass( void ) const { return mass; };						//!< Get the mass of this node
-  inline float getTotalMass( void ) const { return mass + massChildren; };	//!< Get the sum of the masses of this node and all subnodes
-  void addForce( Vector force );									//!< Add a central force on this rigid body
-  void addForce( Vector force, Vector grip );						//!< Add a decentral force on this rigid body
-  void tick( float dt );											//!< Update kinematics, reset force sum
+  /** \param mass the mass to set for this node. */
+  inline void setMass( float mass ) { this->mass = mass; };
+  /** \returns the mass of the node. */
+  inline float getMass( void ) const { return mass; };
+  /** \returns the mass of this node plus all its children (only valid for PNodes). */
+  inline float getTotalMass( void ) const { return mass + massChildren; };
+
+  virtual void applyForce( Vector force );					//!< Add a central force on this rigid body
+  virtual void tickPhys( float dt );						//!< Update kinematics, reset force sum
 
  protected:
-  void recalcMass();		//!< Recalculate the mass of the children
-  float mass;				//!< Mass of this node
+  void recalcMass();
+
+  
+ private:
+  float mass;			//!< Mass of this object
   float massChildren;		//!< Sum of the masses of the children nodes
-  Vector forceSum;			//!< Total central force for this tick
+  Vector forceSum;		//!< Total central force for this tick
   Quaternion momentumSum;	//!< Total momentum in this tick
-
- private:
 	
 
