|
@@ -56,18 +56,18 @@ struct Vector3 {
|
|
|
real_t coord[3] = { 0 };
|
|
|
};
|
|
|
|
|
|
- _FORCE_INLINE_ const real_t &operator[](int p_axis) const {
|
|
|
+ _FORCE_INLINE_ const real_t &operator[](const int p_axis) const {
|
|
|
return coord[p_axis];
|
|
|
}
|
|
|
|
|
|
- _FORCE_INLINE_ real_t &operator[](int p_axis) {
|
|
|
+ _FORCE_INLINE_ real_t &operator[](const int p_axis) {
|
|
|
return coord[p_axis];
|
|
|
}
|
|
|
|
|
|
- void set_axis(int p_axis, real_t p_value);
|
|
|
- real_t get_axis(int p_axis) const;
|
|
|
+ void set_axis(const int p_axis, const real_t p_value);
|
|
|
+ real_t get_axis(const int p_axis) const;
|
|
|
|
|
|
- _FORCE_INLINE_ void set_all(real_t p_value) {
|
|
|
+ _FORCE_INLINE_ void set_all(const real_t p_value) {
|
|
|
x = y = z = p_value;
|
|
|
}
|
|
|
|
|
@@ -90,17 +90,17 @@ struct Vector3 {
|
|
|
|
|
|
_FORCE_INLINE_ void zero();
|
|
|
|
|
|
- void snap(Vector3 p_val);
|
|
|
- Vector3 snapped(Vector3 p_val) const;
|
|
|
+ void snap(const Vector3 p_val);
|
|
|
+ Vector3 snapped(const Vector3 p_val) const;
|
|
|
|
|
|
- void rotate(const Vector3 &p_axis, real_t p_phi);
|
|
|
- Vector3 rotated(const Vector3 &p_axis, real_t p_phi) const;
|
|
|
+ void rotate(const Vector3 &p_axis, const real_t p_phi);
|
|
|
+ Vector3 rotated(const Vector3 &p_axis, const real_t p_phi) const;
|
|
|
|
|
|
/* Static Methods between 2 vector3s */
|
|
|
|
|
|
- _FORCE_INLINE_ Vector3 lerp(const Vector3 &p_to, real_t p_weight) const;
|
|
|
- _FORCE_INLINE_ Vector3 slerp(const Vector3 &p_to, real_t p_weight) const;
|
|
|
- Vector3 cubic_interpolate(const Vector3 &p_b, const Vector3 &p_pre_a, const Vector3 &p_post_b, real_t p_weight) const;
|
|
|
+ _FORCE_INLINE_ Vector3 lerp(const Vector3 &p_to, const real_t p_weight) const;
|
|
|
+ _FORCE_INLINE_ Vector3 slerp(const Vector3 &p_to, const real_t p_weight) const;
|
|
|
+ Vector3 cubic_interpolate(const Vector3 &p_b, const Vector3 &p_pre_a, const Vector3 &p_post_b, const real_t p_weight) const;
|
|
|
Vector3 move_toward(const Vector3 &p_to, const real_t p_delta) const;
|
|
|
|
|
|
_FORCE_INLINE_ Vector3 cross(const Vector3 &p_b) const;
|
|
@@ -143,10 +143,10 @@ struct Vector3 {
|
|
|
_FORCE_INLINE_ Vector3 &operator/=(const Vector3 &p_v);
|
|
|
_FORCE_INLINE_ Vector3 operator/(const Vector3 &p_v) const;
|
|
|
|
|
|
- _FORCE_INLINE_ Vector3 &operator*=(real_t p_scalar);
|
|
|
- _FORCE_INLINE_ Vector3 operator*(real_t p_scalar) const;
|
|
|
- _FORCE_INLINE_ Vector3 &operator/=(real_t p_scalar);
|
|
|
- _FORCE_INLINE_ Vector3 operator/(real_t p_scalar) const;
|
|
|
+ _FORCE_INLINE_ Vector3 &operator*=(const real_t p_scalar);
|
|
|
+ _FORCE_INLINE_ Vector3 operator*(const real_t p_scalar) const;
|
|
|
+ _FORCE_INLINE_ Vector3 &operator/=(const real_t p_scalar);
|
|
|
+ _FORCE_INLINE_ Vector3 operator/(const real_t p_scalar) const;
|
|
|
|
|
|
_FORCE_INLINE_ Vector3 operator-() const;
|
|
|
|
|
@@ -168,7 +168,7 @@ struct Vector3 {
|
|
|
y = p_ivec.y;
|
|
|
z = p_ivec.z;
|
|
|
}
|
|
|
- _FORCE_INLINE_ Vector3(real_t p_x, real_t p_y, real_t p_z) {
|
|
|
+ _FORCE_INLINE_ Vector3(const real_t p_x, const real_t p_y, const real_t p_z) {
|
|
|
x = p_x;
|
|
|
y = p_y;
|
|
|
z = p_z;
|
|
@@ -208,14 +208,14 @@ Vector3 Vector3::round() const {
|
|
|
return Vector3(Math::round(x), Math::round(y), Math::round(z));
|
|
|
}
|
|
|
|
|
|
-Vector3 Vector3::lerp(const Vector3 &p_to, real_t p_weight) const {
|
|
|
+Vector3 Vector3::lerp(const Vector3 &p_to, const real_t p_weight) const {
|
|
|
return Vector3(
|
|
|
x + (p_weight * (p_to.x - x)),
|
|
|
y + (p_weight * (p_to.y - y)),
|
|
|
z + (p_weight * (p_to.z - z)));
|
|
|
}
|
|
|
|
|
|
-Vector3 Vector3::slerp(const Vector3 &p_to, real_t p_weight) const {
|
|
|
+Vector3 Vector3::slerp(const Vector3 &p_to, const real_t p_weight) const {
|
|
|
real_t theta = angle_to(p_to);
|
|
|
return rotated(cross(p_to).normalized(), theta * p_weight);
|
|
|
}
|
|
@@ -303,29 +303,41 @@ Vector3 Vector3::operator/(const Vector3 &p_v) const {
|
|
|
return Vector3(x / p_v.x, y / p_v.y, z / p_v.z);
|
|
|
}
|
|
|
|
|
|
-Vector3 &Vector3::operator*=(real_t p_scalar) {
|
|
|
+Vector3 &Vector3::operator*=(const real_t p_scalar) {
|
|
|
x *= p_scalar;
|
|
|
y *= p_scalar;
|
|
|
z *= p_scalar;
|
|
|
return *this;
|
|
|
}
|
|
|
|
|
|
-_FORCE_INLINE_ Vector3 operator*(real_t p_scalar, const Vector3 &p_vec) {
|
|
|
+_FORCE_INLINE_ Vector3 operator*(const float p_scalar, const Vector3 &p_vec) {
|
|
|
return p_vec * p_scalar;
|
|
|
}
|
|
|
|
|
|
-Vector3 Vector3::operator*(real_t p_scalar) const {
|
|
|
+_FORCE_INLINE_ Vector3 operator*(const double p_scalar, const Vector3 &p_vec) {
|
|
|
+ return p_vec * p_scalar;
|
|
|
+}
|
|
|
+
|
|
|
+_FORCE_INLINE_ Vector3 operator*(const int32_t p_scalar, const Vector3 &p_vec) {
|
|
|
+ return p_vec * p_scalar;
|
|
|
+}
|
|
|
+
|
|
|
+_FORCE_INLINE_ Vector3 operator*(const int64_t p_scalar, const Vector3 &p_vec) {
|
|
|
+ return p_vec * p_scalar;
|
|
|
+}
|
|
|
+
|
|
|
+Vector3 Vector3::operator*(const real_t p_scalar) const {
|
|
|
return Vector3(x * p_scalar, y * p_scalar, z * p_scalar);
|
|
|
}
|
|
|
|
|
|
-Vector3 &Vector3::operator/=(real_t p_scalar) {
|
|
|
+Vector3 &Vector3::operator/=(const real_t p_scalar) {
|
|
|
x /= p_scalar;
|
|
|
y /= p_scalar;
|
|
|
z /= p_scalar;
|
|
|
return *this;
|
|
|
}
|
|
|
|
|
|
-Vector3 Vector3::operator/(real_t p_scalar) const {
|
|
|
+Vector3 Vector3::operator/(const real_t p_scalar) const {
|
|
|
return Vector3(x / p_scalar, y / p_scalar, z / p_scalar);
|
|
|
}
|
|
|
|