Index: trunk/src/lib/coord/p_node.cc
===================================================================
--- trunk/src/lib/coord/p_node.cc	(revision 7002)
+++ trunk/src/lib/coord/p_node.cc	(revision 7003)
@@ -215,5 +215,4 @@
 
   *this->toCoordinate = relCoordSoft;
-  this->toStep = 0.0f;
   this->bias = bias;
 }
@@ -301,5 +300,4 @@
       *this->toCoordinate = absCoordSoft;
   }
-  this->toStep = 0.0f;
 }
 
@@ -373,5 +371,4 @@
   *this->toDirection = relDirSoft;
   this->bias = bias;
-  this->toStep = 0.0f;
   this->bRelDirChanged = true;
 }
@@ -443,5 +440,4 @@
 
   this->bias = bias;
-  this->toStep = 0.0f;
   this->bRelDirChanged = true;
 }
@@ -650,5 +646,4 @@
   }
   this->bias = bias;
-  this->toStep = 0.0f;
 
   Vector tmpV = this->getAbsCoor();
@@ -781,8 +776,7 @@
         if (unlikely(this->toDirection != NULL))
         {
-          this->toStep += fabs(dt) * bias;
           //printf("%s::%s %f\n", this->getClassName(), this->getName(), this->toStep );
-          Quaternion rotQuat = Quaternion::quatSlerp(this->relDirection,*this->toDirection, toStep);
-          if (this->relDirection.distance(rotQuat) >PNODE_ITERATION_DELTA)
+          Quaternion rotQuat = Quaternion::quatSlerp(this->relDirection,*this->toDirection, .1);
+          if (this->relDirection.distance(rotQuat) > PNODE_ITERATION_DELTA)
           {
             this->relDirection = rotQuat;
@@ -794,4 +788,5 @@
             this->toDirection = NULL;
             PRINTF(5)("SmoothRotate of %s finished\n", this->getName());
+            this->bRelDirChanged;
           }
         }
@@ -817,5 +812,5 @@
           this->absCoordinate = this->parent->getAbsCoor() + this->relCoordinate;
         }
-        else if( this->parentMode & PNODE_ROTATE_MOVEMENT && this->bRelCoorChanged)
+        else if( this->parentMode & PNODE_ROTATE_MOVEMENT && (this->bRelCoorChanged || this->bRelDirChanged))
         {
           /* update the current absCoordinate */
Index: trunk/src/lib/coord/p_node.h
===================================================================
--- trunk/src/lib/coord/p_node.h	(revision 7002)
+++ trunk/src/lib/coord/p_node.h	(revision 7003)
@@ -224,5 +224,4 @@
   Quaternion*        toDirection;        //!< a direction to which to iterate. (This is used in conjunction with setParentSoft and set*DirSoft)
   float              bias;               //!< how fast to iterate to the given position (default is 1)
-  float              toStep;
 
   PNode*             parent;             //!< a pointer to the parent node.
Index: trunk/src/lib/math/quaternion.cc
===================================================================
--- trunk/src/lib/math/quaternion.cc	(revision 7002)
+++ trunk/src/lib/math/quaternion.cc	(revision 7003)
@@ -227,10 +227,10 @@
  *  outputs some nice formated debug information about this quaternion
 */
-void Quaternion::debug()
+void Quaternion::debug() const
 {
   PRINT(0)("real a=%f; imag: x=%f y=%f z=%f\n", w, v.x, v.y, v.z);
 }
 
-void Quaternion::debug2()
+void Quaternion::debug2() const
 {
   Vector axis = this->getSpacialAxis();
Index: trunk/src/lib/math/quaternion.h
===================================================================
--- trunk/src/lib/math/quaternion.h	(revision 7002)
+++ trunk/src/lib/math/quaternion.h	(revision 7003)
@@ -103,6 +103,6 @@
   static Quaternion quatSlerp(const Quaternion& from, const Quaternion& to, float t);
 
-  void debug();
-  void debug2();
+  void debug() const;
+  void debug2() const;
 
 
Index: trunk/src/world_entities/space_ships/turbine_hover.cc
===================================================================
--- trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 7002)
+++ trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 7003)
@@ -121,5 +121,5 @@
   this->cameraNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
   //this->cameraNode.setParentMode(PNODE_ROTATE_MOVEMENT);
-  this->cameraNode.setParent(this);
+  //this->cameraNode.setParent(this);
 
   // rotors
@@ -273,6 +273,7 @@
 
   // TRYING TO FIX PNode.
-/*  this->cameraNode.setAbsCoorSoft(this->getAbsCoor() + Vector(0,5,0), 30);
-  this->cameraNode.setAbsDirSoft(this->getAbsDir(), 30);*/
+  this->cameraNode.setAbsCoorSoft(this->getAbsCoor() + Vector(0.0f, 5.0f, 0.0f), 30.0f);
+  this->cameraNode.setRelDirSoft(this->getAbsDir(), 30.0f);
+  this->cameraNode.getAbsDir().debug();
 }
 
