message: Math lib: added vector type recast methods
diff: @@ -221,6 +221,16 @@ template <class T> struct Vector2
  static_cast<T>(*it++)
  };
  }
  +
  + template<typename Y>
  + Vector2<Y> Recast()const
  + {
  + return Vector2<Y>
  + {
  + static_cast<Y>(x),
  + static_cast<Y>(y)
  + };
  + }
  };
  template <class T>
  @@ -406,6 +416,17 @@ template <class T> struct Vector3
  };
  }
  + template<typename Y>
  + Vector3<Y> Recast()const
  + {
  + return Vector3<Y>
  + {
  + static_cast<Y>(x),
  + static_cast<Y>(y),
  + static_cast<Y>(z)
  + };
  + }
  +
  operator Vector2<T>()const{return Vector2<T>(x,y);}
  };
  @@ -613,6 +634,18 @@ template <class T> struct Vector4
  };
  }
  + template<typename Y>
  + Vector4<Y> Recast()const
  + {
  + return Vector4<Y>
  + {
  + static_cast<Y>(x),
  + static_cast<Y>(y),
  + static_cast<Y>(z),
  + static_cast<Y>(w)
  + };
  + }
  +
  operator Vector3<T>() const
  {
  return Vector3<T>(x, y, z);
  