Math: Add serialization specialization for all types
Former-commit-id: 7e45c50d3b4eabfc581736f290fc208592d3d46c
This commit is contained in:
@@ -28,7 +28,6 @@ namespace Nz
|
||||
* \param Y Y component
|
||||
* \param Z Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(T X, T Y, T Z)
|
||||
{
|
||||
@@ -41,7 +40,6 @@ namespace Nz
|
||||
* \param X X component
|
||||
* \param vec vec.X = Y component and vec.y = Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(T X, const Vector2<T>& vec)
|
||||
{
|
||||
@@ -53,7 +51,6 @@ namespace Nz
|
||||
*
|
||||
* \param scale X component = Y component = Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(T scale)
|
||||
{
|
||||
@@ -65,7 +62,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec[3] vec[0] is X component, vec[1] is Y component and vec[2] is Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(const T vec[3])
|
||||
{
|
||||
@@ -78,7 +74,6 @@ namespace Nz
|
||||
* \param vec vec.X = X component and vec.y = Y component
|
||||
* \param Z Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(const Vector2<T>& vec, T Z)
|
||||
{
|
||||
@@ -90,7 +85,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Vector of type U to convert to type T
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
template<typename U>
|
||||
Vector3<T>::Vector3(const Vector3<U>& vec)
|
||||
@@ -103,7 +97,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Vector4 where only the first three components are taken
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::Vector3(const Vector4<T>& vec)
|
||||
{
|
||||
@@ -118,7 +111,6 @@ namespace Nz
|
||||
*
|
||||
* \see DotProduct
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::AbsDotProduct(const Vector3& vec) const
|
||||
{
|
||||
@@ -137,7 +129,6 @@ namespace Nz
|
||||
*
|
||||
* \see NormalizeAngle
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::AngleBetween(const Vector3& vec) const
|
||||
{
|
||||
@@ -166,7 +157,6 @@ namespace Nz
|
||||
*
|
||||
* \see CrossProduct
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::CrossProduct(const Vector3& vec) const
|
||||
{
|
||||
@@ -181,7 +171,6 @@ namespace Nz
|
||||
*
|
||||
* \see SquaredDistance
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::Distance(const Vector3& vec) const
|
||||
{
|
||||
@@ -194,7 +183,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to measure the distance with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
float Vector3<T>::Distancef(const Vector3& vec) const
|
||||
{
|
||||
@@ -209,7 +197,6 @@ namespace Nz
|
||||
*
|
||||
* \see AbsDotProduct, DotProduct
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::DotProduct(const Vector3& vec) const
|
||||
{
|
||||
@@ -222,7 +209,6 @@ namespace Nz
|
||||
*
|
||||
* \see GetSquaredLength
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::GetLength() const
|
||||
{
|
||||
@@ -233,7 +219,6 @@ namespace Nz
|
||||
* \brief Calculates the length (magnitude) of the vector
|
||||
* \return The length in float of the vector
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
float Vector3<T>::GetLengthf() const
|
||||
{
|
||||
@@ -250,7 +235,6 @@ namespace Nz
|
||||
*
|
||||
* \see Normalize
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::GetNormal(T* length) const
|
||||
{
|
||||
@@ -266,7 +250,6 @@ namespace Nz
|
||||
*
|
||||
* \see GetLength
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::GetSquaredLength() const
|
||||
{
|
||||
@@ -279,7 +262,6 @@ namespace Nz
|
||||
*
|
||||
* \see Backward
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeBackward()
|
||||
{
|
||||
@@ -292,7 +274,6 @@ namespace Nz
|
||||
*
|
||||
* \see Down
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeDown()
|
||||
{
|
||||
@@ -305,7 +286,6 @@ namespace Nz
|
||||
*
|
||||
* \see Forward
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeForward()
|
||||
{
|
||||
@@ -318,7 +298,6 @@ namespace Nz
|
||||
*
|
||||
* \see Left
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeLeft()
|
||||
{
|
||||
@@ -331,7 +310,6 @@ namespace Nz
|
||||
*
|
||||
* \see Right
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeRight()
|
||||
{
|
||||
@@ -344,7 +322,6 @@ namespace Nz
|
||||
*
|
||||
* \see Unit
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeUnit()
|
||||
{
|
||||
@@ -357,7 +334,6 @@ namespace Nz
|
||||
*
|
||||
* \see UnitX
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeUnitX()
|
||||
{
|
||||
@@ -370,7 +346,6 @@ namespace Nz
|
||||
*
|
||||
* \see UnitY
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeUnitY()
|
||||
{
|
||||
@@ -383,7 +358,6 @@ namespace Nz
|
||||
*
|
||||
* \see UnitZ
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeUnitZ()
|
||||
{
|
||||
@@ -396,7 +370,6 @@ namespace Nz
|
||||
*
|
||||
* \see Up
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeUp()
|
||||
{
|
||||
@@ -409,7 +382,6 @@ namespace Nz
|
||||
*
|
||||
* \see Zero
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::MakeZero()
|
||||
{
|
||||
@@ -424,7 +396,6 @@ namespace Nz
|
||||
*
|
||||
* \see Minimize
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Maximize(const Vector3& vec)
|
||||
{
|
||||
@@ -448,7 +419,6 @@ namespace Nz
|
||||
*
|
||||
* \see Maximize
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Minimize(const Vector3& vec)
|
||||
{
|
||||
@@ -474,7 +444,6 @@ namespace Nz
|
||||
*
|
||||
* \see GetNormal
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Normalize(T* length)
|
||||
{
|
||||
@@ -501,7 +470,6 @@ namespace Nz
|
||||
* \param Y Y component
|
||||
* \param Z Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(T X, T Y, T Z)
|
||||
{
|
||||
@@ -518,7 +486,6 @@ namespace Nz
|
||||
* \param X X component
|
||||
* \param vec vec.X = Y component and vec.y = Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(T X, const Vector2<T>& vec)
|
||||
{
|
||||
@@ -535,7 +502,6 @@ namespace Nz
|
||||
*
|
||||
* \param scale X component = Y component = Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(T scale)
|
||||
{
|
||||
@@ -552,7 +518,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec[3] vec[0] is X component, vec[1] is Y component and vec[2] is Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(const T vec[3])
|
||||
{
|
||||
@@ -567,7 +532,6 @@ namespace Nz
|
||||
* \param vec vec.X = X component and vec.y = Y component
|
||||
* \param Z Z component
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(const Vector2<T>& vec, T Z)
|
||||
{
|
||||
@@ -584,7 +548,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(const Vector3& vec)
|
||||
{
|
||||
@@ -599,7 +562,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Vector of type U to convert its components
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
template<typename U>
|
||||
Vector3<T>& Vector3<T>::Set(const Vector3<U>& vec)
|
||||
@@ -617,7 +579,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Vector4 where only the first three components are taken
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::Set(const Vector4<T>& vec)
|
||||
{
|
||||
@@ -636,7 +597,6 @@ namespace Nz
|
||||
*
|
||||
* \see Distance
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::SquaredDistance(const Vector3& vec) const
|
||||
{
|
||||
@@ -647,7 +607,6 @@ namespace Nz
|
||||
* \brief Gives a string representation
|
||||
* \return A string representation of the object: "Vector3(x, y, z)"
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
String Vector3<T>::ToString() const
|
||||
{
|
||||
@@ -662,7 +621,6 @@ namespace Nz
|
||||
*
|
||||
* \remark Access to index greather than 2 is undefined behavior
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::operator T* ()
|
||||
{
|
||||
@@ -675,7 +633,6 @@ namespace Nz
|
||||
*
|
||||
* \remark Access to index greather than 2 is undefined behavior
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>::operator const T* () const
|
||||
{
|
||||
@@ -686,7 +643,6 @@ namespace Nz
|
||||
* \brief Helps to represent the sign of the vector
|
||||
* \return A constant reference to this vector
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
const Vector3<T>& Vector3<T>::operator+() const
|
||||
{
|
||||
@@ -697,7 +653,6 @@ namespace Nz
|
||||
* \brief Negates the components of the vector
|
||||
* \return A constant reference to this vector with negate components
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator-() const
|
||||
{
|
||||
@@ -710,7 +665,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to add components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator+(const Vector3& vec) const
|
||||
{
|
||||
@@ -723,7 +677,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to substract components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator-(const Vector3& vec) const
|
||||
{
|
||||
@@ -736,7 +689,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to multiply components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator*(const Vector3& vec) const
|
||||
{
|
||||
@@ -749,7 +701,6 @@ namespace Nz
|
||||
*
|
||||
* \param scale The scalar to multiply components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator*(T scale) const
|
||||
{
|
||||
@@ -765,7 +716,6 @@ namespace Nz
|
||||
* \remark Produce a NazaraError if one of the vec components is null with NAZARA_MATH_SAFE defined
|
||||
* \throw std::domain_error if NAZARA_MATH_SAFE is defined and one of the vec components is null
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator/(const Vector3& vec) const
|
||||
{
|
||||
@@ -791,7 +741,6 @@ namespace Nz
|
||||
* \remark Produce a NazaraError if scale is null with NAZARA_MATH_SAFE defined
|
||||
* \throw std::domain_error if NAZARA_MATH_SAFE is defined and scale is null
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::operator/(T scale) const
|
||||
{
|
||||
@@ -814,7 +763,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to add components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator+=(const Vector3& vec)
|
||||
{
|
||||
@@ -831,7 +779,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to substract components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator-=(const Vector3& vec)
|
||||
{
|
||||
@@ -848,7 +795,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to multiply components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator*=(const Vector3& vec)
|
||||
{
|
||||
@@ -865,7 +811,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec The other vector to multiply components with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator*=(T scale)
|
||||
{
|
||||
@@ -885,7 +830,6 @@ namespace Nz
|
||||
* \remark Produce a NazaraError if one of the vec components is null with NAZARA_MATH_SAFE defined
|
||||
* \throw std::domain_error if NAZARA_MATH_SAFE is defined and one of the vec components is null
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator/=(const Vector3& vec)
|
||||
{
|
||||
@@ -913,7 +857,6 @@ namespace Nz
|
||||
* \remark Produce a NazaraError if scale is null with NAZARA_MATH_SAFE defined
|
||||
* \throw std::domain_error if NAZARA_MATH_SAFE is defined and scale is null
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T>& Vector3<T>::operator/=(T scale)
|
||||
{
|
||||
@@ -938,7 +881,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator==(const Vector3& vec) const
|
||||
{
|
||||
@@ -953,7 +895,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator!=(const Vector3& vec) const
|
||||
{
|
||||
@@ -966,7 +907,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator<(const Vector3& vec) const
|
||||
{
|
||||
@@ -987,7 +927,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator<=(const Vector3& vec) const
|
||||
{
|
||||
@@ -1008,7 +947,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator>(const Vector3& vec) const
|
||||
{
|
||||
@@ -1021,7 +959,6 @@ namespace Nz
|
||||
*
|
||||
* \param vec Other vector to compare with
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
bool Vector3<T>::operator>=(const Vector3& vec) const
|
||||
{
|
||||
@@ -1037,7 +974,6 @@ namespace Nz
|
||||
*
|
||||
* \see CrossProduct
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::CrossProduct(const Vector3& vec1, const Vector3& vec2)
|
||||
{
|
||||
@@ -1053,7 +989,6 @@ namespace Nz
|
||||
*
|
||||
* \see AbsDotProduct, DotProduct
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
T Vector3<T>::DotProduct(const Vector3& vec1, const Vector3& vec2)
|
||||
{
|
||||
@@ -1066,7 +1001,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeBackward
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Backward()
|
||||
{
|
||||
@@ -1082,7 +1016,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeDown
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Down()
|
||||
{
|
||||
@@ -1098,7 +1031,6 @@ namespace Nz
|
||||
*
|
||||
* \see Forward
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Forward()
|
||||
{
|
||||
@@ -1114,7 +1046,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeLeft
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Left()
|
||||
{
|
||||
@@ -1136,7 +1067,6 @@ namespace Nz
|
||||
*
|
||||
* \see Lerp
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Lerp(const Vector3& from, const Vector3& to, T interpolation)
|
||||
{
|
||||
@@ -1158,7 +1088,6 @@ namespace Nz
|
||||
*
|
||||
* \see GetNormal
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Normalize(const Vector3& vec)
|
||||
{
|
||||
@@ -1171,7 +1100,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeRight
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Right()
|
||||
{
|
||||
@@ -1187,7 +1115,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeUnit
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Unit()
|
||||
{
|
||||
@@ -1203,7 +1130,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeUnitX
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::UnitX()
|
||||
{
|
||||
@@ -1219,7 +1145,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeUnitY
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::UnitY()
|
||||
{
|
||||
@@ -1235,7 +1160,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeUnitZ
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::UnitZ()
|
||||
{
|
||||
@@ -1251,7 +1175,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeUp
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Up()
|
||||
{
|
||||
@@ -1267,7 +1190,6 @@ namespace Nz
|
||||
*
|
||||
* \see MakeZero
|
||||
*/
|
||||
|
||||
template<typename T>
|
||||
Vector3<T> Vector3<T>::Zero()
|
||||
{
|
||||
@@ -1276,6 +1198,50 @@ namespace Nz
|
||||
|
||||
return vector;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Serializes a Vector3
|
||||
* \return true if successfully serialized
|
||||
*
|
||||
* \param context Serialization context
|
||||
* \param vector Input Vector3
|
||||
*/
|
||||
template<typename T>
|
||||
bool Serialize(SerializationContext& context, const Vector3<T>& vector)
|
||||
{
|
||||
if (!Serialize(context, vector.x))
|
||||
return false;
|
||||
|
||||
if (!Serialize(context, vector.y))
|
||||
return false;
|
||||
|
||||
if (!Serialize(context, vector.z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Unserializes a Vector3
|
||||
* \return true if successfully unserialized
|
||||
*
|
||||
* \param context Serialization context
|
||||
* \param vector Output Vector3
|
||||
*/
|
||||
template<typename T>
|
||||
bool Unserialize(SerializationContext& context, Vector3<T>* vector)
|
||||
{
|
||||
if (!Unserialize(context, &vector->x))
|
||||
return false;
|
||||
|
||||
if (!Unserialize(context, &vector->y))
|
||||
return false;
|
||||
|
||||
if (!Unserialize(context, &vector->z))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user