diff options
| -rw-r--r-- | core/math/vector2i.h | 2 | ||||
| -rw-r--r-- | core/math/vector3i.h | 2 | ||||
| -rw-r--r-- | core/math/vector4.cpp | 19 | ||||
| -rw-r--r-- | core/math/vector4i.cpp | 10 | ||||
| -rw-r--r-- | core/math/vector4i.h | 2 | 
5 files changed, 25 insertions, 10 deletions
diff --git a/core/math/vector2i.h b/core/math/vector2i.h index 13b70031bd..0245900a3b 100644 --- a/core/math/vector2i.h +++ b/core/math/vector2i.h @@ -115,7 +115,7 @@ struct _NO_DISCARD_ Vector2i {  	real_t aspect() const { return width / (real_t)height; }  	Vector2i sign() const { return Vector2i(SIGN(x), SIGN(y)); } -	Vector2i abs() const { return Vector2i(ABS(x), ABS(y)); } +	Vector2i abs() const { return Vector2i(Math::abs(x), Math::abs(y)); }  	Vector2i clamp(const Vector2i &p_min, const Vector2i &p_max) const;  	operator String() const; diff --git a/core/math/vector3i.h b/core/math/vector3i.h index b49c1142ed..825ce40318 100644 --- a/core/math/vector3i.h +++ b/core/math/vector3i.h @@ -128,7 +128,7 @@ double Vector3i::length() const {  }  Vector3i Vector3i::abs() const { -	return Vector3i(ABS(x), ABS(y), ABS(z)); +	return Vector3i(Math::abs(x), Math::abs(y), Math::abs(z));  }  Vector3i Vector3i::sign() const { diff --git a/core/math/vector4.cpp b/core/math/vector4.cpp index fb651fafce..3c25f454a3 100644 --- a/core/math/vector4.cpp +++ b/core/math/vector4.cpp @@ -80,15 +80,26 @@ real_t Vector4::length() const {  }  void Vector4::normalize() { -	*this /= length(); +	real_t lengthsq = length_squared(); +	if (lengthsq == 0) { +		x = y = z = w = 0; +	} else { +		real_t length = Math::sqrt(lengthsq); +		x /= length; +		y /= length; +		z /= length; +		w /= length; +	}  }  Vector4 Vector4::normalized() const { -	return *this / length(); +	Vector4 v = *this; +	v.normalize(); +	return v;  }  bool Vector4::is_normalized() const { -	return Math::is_equal_approx(length_squared(), 1, (real_t)UNIT_EPSILON); // Use less epsilon. +	return Math::is_equal_approx(length_squared(), (real_t)1, (real_t)UNIT_EPSILON);  }  real_t Vector4::distance_to(const Vector4 &p_to) const { @@ -187,3 +198,5 @@ Vector4 Vector4::clamp(const Vector4 &p_min, const Vector4 &p_max) const {  Vector4::operator String() const {  	return "(" + String::num_real(x, false) + ", " + String::num_real(y, false) + ", " + String::num_real(z, false) + ", " + String::num_real(w, false) + ")";  } + +static_assert(sizeof(Vector4) == 4 * sizeof(real_t)); diff --git a/core/math/vector4i.cpp b/core/math/vector4i.cpp index 2dc5b74202..a89b802675 100644 --- a/core/math/vector4i.cpp +++ b/core/math/vector4i.cpp @@ -84,8 +84,10 @@ Vector4i::operator Vector4() const {  }  Vector4i::Vector4i(const Vector4 &p_vec4) { -	x = p_vec4.x; -	y = p_vec4.y; -	z = p_vec4.z; -	w = p_vec4.w; +	x = (int32_t)p_vec4.x; +	y = (int32_t)p_vec4.y; +	z = (int32_t)p_vec4.z; +	w = (int32_t)p_vec4.w;  } + +static_assert(sizeof(Vector4i) == 4 * sizeof(int32_t)); diff --git a/core/math/vector4i.h b/core/math/vector4i.h index 37d905878f..d08e40d754 100644 --- a/core/math/vector4i.h +++ b/core/math/vector4i.h @@ -132,7 +132,7 @@ double Vector4i::length() const {  }  Vector4i Vector4i::abs() const { -	return Vector4i(ABS(x), ABS(y), ABS(z), ABS(w)); +	return Vector4i(Math::abs(x), Math::abs(y), Math::abs(z), Math::abs(w));  }  Vector4i Vector4i::sign() const {  |