Remove circular dependency between Vector3 and Basis.
This commit is contained in:
parent
234289de2b
commit
40197685bb
@ -28,13 +28,11 @@
|
|||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
// Circular dependency between Vector3 and Basis :/
|
|
||||||
#include "core/math/vector3.h"
|
|
||||||
|
|
||||||
#ifndef BASIS_H
|
#ifndef BASIS_H
|
||||||
#define BASIS_H
|
#define BASIS_H
|
||||||
|
|
||||||
#include "core/math/quat.h"
|
#include "core/math/quat.h"
|
||||||
|
#include "core/math/vector3.h"
|
||||||
|
|
||||||
class Basis {
|
class Basis {
|
||||||
public:
|
public:
|
||||||
|
@ -134,6 +134,21 @@ Vector3 Vector3::move_toward(const Vector3 &p_to, const real_t p_delta) const {
|
|||||||
return len <= p_delta || len < CMP_EPSILON ? p_to : v + vd / len * p_delta;
|
return len <= p_delta || len < CMP_EPSILON ? p_to : v + vd / len * p_delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Basis Vector3::outer(const Vector3 &p_b) const {
|
||||||
|
|
||||||
|
Vector3 row0(x * p_b.x, x * p_b.y, x * p_b.z);
|
||||||
|
Vector3 row1(y * p_b.x, y * p_b.y, y * p_b.z);
|
||||||
|
Vector3 row2(z * p_b.x, z * p_b.y, z * p_b.z);
|
||||||
|
|
||||||
|
return Basis(row0, row1, row2);
|
||||||
|
}
|
||||||
|
|
||||||
|
Basis Vector3::to_diagonal_matrix() const {
|
||||||
|
return Basis(x, 0, 0,
|
||||||
|
0, y, 0,
|
||||||
|
0, 0, z);
|
||||||
|
}
|
||||||
|
|
||||||
Vector3::operator String() const {
|
Vector3::operator String() const {
|
||||||
|
|
||||||
return (rtos(x) + ", " + rtos(y) + ", " + rtos(z));
|
return (rtos(x) + ", " + rtos(y) + ", " + rtos(z));
|
||||||
|
@ -96,8 +96,8 @@ struct Vector3 {
|
|||||||
|
|
||||||
_FORCE_INLINE_ Vector3 cross(const Vector3 &p_b) const;
|
_FORCE_INLINE_ Vector3 cross(const Vector3 &p_b) const;
|
||||||
_FORCE_INLINE_ real_t dot(const Vector3 &p_b) const;
|
_FORCE_INLINE_ real_t dot(const Vector3 &p_b) const;
|
||||||
_FORCE_INLINE_ Basis outer(const Vector3 &p_b) const;
|
Basis outer(const Vector3 &p_b) const;
|
||||||
_FORCE_INLINE_ Basis to_diagonal_matrix() const;
|
Basis to_diagonal_matrix() const;
|
||||||
|
|
||||||
_FORCE_INLINE_ Vector3 abs() const;
|
_FORCE_INLINE_ Vector3 abs() const;
|
||||||
_FORCE_INLINE_ Vector3 floor() const;
|
_FORCE_INLINE_ Vector3 floor() const;
|
||||||
@ -154,9 +154,6 @@ struct Vector3 {
|
|||||||
_FORCE_INLINE_ Vector3() { x = y = z = 0; }
|
_FORCE_INLINE_ Vector3() { x = y = z = 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// Should be included after class definition, otherwise we get circular refs
|
|
||||||
#include "core/math/basis.h"
|
|
||||||
|
|
||||||
Vector3 Vector3::cross(const Vector3 &p_b) const {
|
Vector3 Vector3::cross(const Vector3 &p_b) const {
|
||||||
|
|
||||||
Vector3 ret(
|
Vector3 ret(
|
||||||
@ -172,21 +169,6 @@ real_t Vector3::dot(const Vector3 &p_b) const {
|
|||||||
return x * p_b.x + y * p_b.y + z * p_b.z;
|
return x * p_b.x + y * p_b.y + z * p_b.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
Basis Vector3::outer(const Vector3 &p_b) const {
|
|
||||||
|
|
||||||
Vector3 row0(x * p_b.x, x * p_b.y, x * p_b.z);
|
|
||||||
Vector3 row1(y * p_b.x, y * p_b.y, y * p_b.z);
|
|
||||||
Vector3 row2(z * p_b.x, z * p_b.y, z * p_b.z);
|
|
||||||
|
|
||||||
return Basis(row0, row1, row2);
|
|
||||||
}
|
|
||||||
|
|
||||||
Basis Vector3::to_diagonal_matrix() const {
|
|
||||||
return Basis(x, 0, 0,
|
|
||||||
0, y, 0,
|
|
||||||
0, 0, z);
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3 Vector3::abs() const {
|
Vector3 Vector3::abs() const {
|
||||||
|
|
||||||
return Vector3(Math::abs(x), Math::abs(y), Math::abs(z));
|
return Vector3(Math::abs(x), Math::abs(y), Math::abs(z));
|
||||||
|
Loading…
Reference in New Issue
Block a user