public override float WorldDirection()
        {
            PhysicalObject parentObj = (PhysicalObject)this.Parent;

            if (parentObj != null)
            {
                return(this.DirectionRelativeToParent + parentObj.WorldDirection());
            }
            else
            {
                return(0);
            }
        }
 public override Vector2 WorldPosition()
 {
     if (this.Parent == null)
     {
         return(new Vector2(0));
     }
     else
     {
         PhysicalObject parentObj = (PhysicalObject)this.Parent;
         if (parentObj != null)
         {
             return(Vector2Utils.RotateVector2(this.PositionRelativeToParent, parentObj.WorldDirection()) + parentObj.WorldPosition());
         }
         else
         {
             return(new Vector2(float.NaN));
         }
     }
 }