Index: orxonox/branches/parenting/src/Makefile.am
===================================================================
--- orxonox/branches/parenting/src/Makefile.am	(revision 3275)
+++ orxonox/branches/parenting/src/Makefile.am	(revision 3276)
@@ -28,5 +28,6 @@
 		 importer/material.cc \
 		 list.cc \
-		 p_node.cc
+		 p_node.cc \
+		 null_parent.cc
 
 noinst_HEADERS = ability.h \
@@ -62,5 +63,7 @@
 		 game_loader.h \
 		 campaign.h \
-		 p_node.h
+		 p_node.h \
+		 null_parent.h
+
 
 ## orxonox.conf will be used from home-dir instead.
Index: orxonox/branches/parenting/src/Makefile.in
===================================================================
--- orxonox/branches/parenting/src/Makefile.in	(revision 3275)
+++ orxonox/branches/parenting/src/Makefile.in	(revision 3276)
@@ -60,5 +60,6 @@
 	campaign.$(OBJEXT) story_entity.$(OBJEXT) \
 	environment.$(OBJEXT) object.$(OBJEXT) array.$(OBJEXT) \
-	material.$(OBJEXT) list.$(OBJEXT) p_node.$(OBJEXT)
+	material.$(OBJEXT) list.$(OBJEXT) p_node.$(OBJEXT) \
+	null_parent.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
 orxonox_LDADD = $(LDADD)
@@ -75,9 +76,9 @@
 @AMDEP_TRUE@	./$(DEPDIR)/ini_parser.Po ./$(DEPDIR)/keynames.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/list.Po ./$(DEPDIR)/material.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/object.Po ./$(DEPDIR)/orxonox.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/p_node.Po ./$(DEPDIR)/player.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/story_entity.Po ./$(DEPDIR)/track.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/vector.Po ./$(DEPDIR)/world.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/world_entity.Po
+@AMDEP_TRUE@	./$(DEPDIR)/null_parent.Po ./$(DEPDIR)/object.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox.Po ./$(DEPDIR)/p_node.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/player.Po ./$(DEPDIR)/story_entity.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/track.Po ./$(DEPDIR)/vector.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/world.Po ./$(DEPDIR)/world_entity.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -218,5 +219,6 @@
 		 importer/material.cc \
 		 list.cc \
-		 p_node.cc
+		 p_node.cc \
+		 null_parent.cc
 
 noinst_HEADERS = ability.h \
@@ -252,5 +254,6 @@
 		 game_loader.h \
 		 campaign.h \
-		 p_node.h
+		 p_node.h \
+		 null_parent.h
 
 EXTRA_DIST = orxonox.conf
@@ -343,4 +346,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/material.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/null_parent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox.Po@am__quote@
Index: orxonox/branches/parenting/src/null_parent.cc
===================================================================
--- orxonox/branches/parenting/src/null_parent.cc	(revision 3276)
+++ orxonox/branches/parenting/src/null_parent.cc	(revision 3276)
@@ -0,0 +1,85 @@
+
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer: ...
+*/
+
+
+#include "null_parent.h"
+
+
+using namespace std;
+
+
+/**
+   \brief standard constructor
+
+   \todo this constructor is not jet implemented - do it
+*/
+NullParent::NullParent () 
+{
+  this->parent = this;
+  this->mode = ALL;
+}
+
+
+NullParent::NullParent (Vector* absCoordinate)
+{
+  this->parent = this;
+  this->mode = ALL;
+  this->absCoordinate = *absCoordinate;
+}
+
+
+/**
+   \brief standard deconstructor
+
+   \todo this deconstructor is not jet implemented - do it
+*/
+NullParent::~NullParent () {}
+
+
+
+
+/**
+   \brief updates the absCoordinate/absDirection
+
+   this is used to go through the parent-tree to update all the absolute coordinates
+   and directions. this update should be done by the engine, so you don't have to 
+   worry, normaly...
+*/
+void NullParent::update (long timeStamp)
+{
+  this->absCoordinate = this->relCoordinate;
+  this->absDirection = parent->getAbsDir () * this->relDirection;
+    
+  
+  PNode* pn = this->children->enumerate ();
+  while( pn != NULL) 
+    { 
+      /* if this node has changed, make sure, that all children are updated also */
+      if( this->bRelCoorChanged || this->bAbsCoorChanged)
+	pn->parentCoorChanged ();
+      if( this->bRelDirChanged || this->bAbsDirChanged)
+	pn->parentDirChanged ();
+      pn->update (timeStamp);
+      pn = this->children->nextElement ();
+    }
+
+  this->timeStamp = timeStamp;
+  this->bRelCoorChanged = false;
+  this->bAbsCoorChanged = false;
+  this->bRelDirChanged = false;
+  this->bAbsDirChanged = false;
+}
Index: orxonox/branches/parenting/src/null_parent.h
===================================================================
--- orxonox/branches/parenting/src/null_parent.h	(revision 3276)
+++ orxonox/branches/parenting/src/null_parent.h	(revision 3276)
@@ -0,0 +1,25 @@
+/*! 
+    \file proto_class.h
+    \brief Definition of the proto class template, used quickly start work
+*/
+
+
+#ifndef _NULL_PARENT_H
+#define _NULL_PARENT_H
+
+#include "stdincl.h"
+#include "p_node.h"
+
+
+class NullParent : public PNode {
+
+ public:
+  NullParent ();
+  NullParent (Vector* absCoordinate);
+  ~NullParent ();
+
+  virtual void update (long timeStamp);
+
+};
+
+#endif /* _NULL_PARENT_H */
Index: orxonox/branches/parenting/src/p_node.cc
===================================================================
--- orxonox/branches/parenting/src/p_node.cc	(revision 3275)
+++ orxonox/branches/parenting/src/p_node.cc	(revision 3276)
@@ -17,4 +17,5 @@
    \todo Null-Parent => center of the coord system - singleton
    \todo Smooth-Parent: delay, speed
+   \todo destroy the stuff again, delete...
 */
 
Index: orxonox/branches/parenting/src/p_node.h
===================================================================
--- orxonox/branches/parenting/src/p_node.h	(revision 3275)
+++ orxonox/branches/parenting/src/p_node.h	(revision 3276)
@@ -64,5 +64,4 @@
   void debug ();
 
- private:
   long timeStamp;   //! this the timeStamp of when the abs{Coordinat, Direction} has been calculated
   bool bAbsCoorChanged;
Index: orxonox/branches/parenting/src/world.cc
===================================================================
--- orxonox/branches/parenting/src/world.cc	(revision 3275)
+++ orxonox/branches/parenting/src/world.cc	(revision 3276)
@@ -24,4 +24,5 @@
 #include "environment.h"
 #include "p_node.h"
+#include "null_parent.h"
 
 using namespace std;
@@ -81,5 +82,5 @@
 
   /* this is only for test purposes */
-  this->debug ();
+  //this->debug ();
 }
 
@@ -145,4 +146,6 @@
 	    // !\todo old track-system has to be removed
 
+	    //this->nullParent = new NullParent ();
+
 	    // create a player
 	    WorldEntity* myPlayer = new Player();
@@ -576,14 +579,8 @@
 {
   printf ("World::debug() - starting debug\n");
-  PNode* p1 = new PNode ();
+  PNode* p1 = new NullParent ();
   PNode* p2 = new PNode (new Vector(2, 2, 2), p1);
   PNode* p3 = new PNode (new Vector(4, 4, 4), p1);
   PNode* p4 = new PNode (new Vector(6, 6, 6), p2);
-
-  p1->setMode (ALL);
-
-  //p1->addChild (p2);
-  // p1->addChild (p3);
-  //p2->addChild (p4);
 
   p1->debug ();
Index: orxonox/branches/parenting/src/world.h
===================================================================
--- orxonox/branches/parenting/src/world.h	(revision 3275)
+++ orxonox/branches/parenting/src/world.h	(revision 3276)
@@ -15,4 +15,5 @@
 class WorldEntity;
 class Camera;
+class PNode;
 
 //! The game environment
@@ -75,5 +76,7 @@
 
   WorldEntity* localPlayer;
-  
+ 
+  PNode* nullParent;
+ 
   void mainLoop ();
   void synchronize ();
