mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
Expose Basis set_orthogonal_index method as a GridMap function
This commit is contained in:
@@ -749,67 +749,6 @@ Quaternion Basis::get_quaternion() const {
|
||||
return Quaternion(temp[0], temp[1], temp[2], temp[3]);
|
||||
}
|
||||
|
||||
static const Basis _ortho_bases[24] = {
|
||||
Basis(1, 0, 0, 0, 1, 0, 0, 0, 1),
|
||||
Basis(0, -1, 0, 1, 0, 0, 0, 0, 1),
|
||||
Basis(-1, 0, 0, 0, -1, 0, 0, 0, 1),
|
||||
Basis(0, 1, 0, -1, 0, 0, 0, 0, 1),
|
||||
Basis(1, 0, 0, 0, 0, -1, 0, 1, 0),
|
||||
Basis(0, 0, 1, 1, 0, 0, 0, 1, 0),
|
||||
Basis(-1, 0, 0, 0, 0, 1, 0, 1, 0),
|
||||
Basis(0, 0, -1, -1, 0, 0, 0, 1, 0),
|
||||
Basis(1, 0, 0, 0, -1, 0, 0, 0, -1),
|
||||
Basis(0, 1, 0, 1, 0, 0, 0, 0, -1),
|
||||
Basis(-1, 0, 0, 0, 1, 0, 0, 0, -1),
|
||||
Basis(0, -1, 0, -1, 0, 0, 0, 0, -1),
|
||||
Basis(1, 0, 0, 0, 0, 1, 0, -1, 0),
|
||||
Basis(0, 0, -1, 1, 0, 0, 0, -1, 0),
|
||||
Basis(-1, 0, 0, 0, 0, -1, 0, -1, 0),
|
||||
Basis(0, 0, 1, -1, 0, 0, 0, -1, 0),
|
||||
Basis(0, 0, 1, 0, 1, 0, -1, 0, 0),
|
||||
Basis(0, -1, 0, 0, 0, 1, -1, 0, 0),
|
||||
Basis(0, 0, -1, 0, -1, 0, -1, 0, 0),
|
||||
Basis(0, 1, 0, 0, 0, -1, -1, 0, 0),
|
||||
Basis(0, 0, 1, 0, -1, 0, 1, 0, 0),
|
||||
Basis(0, 1, 0, 0, 0, 1, 1, 0, 0),
|
||||
Basis(0, 0, -1, 0, 1, 0, 1, 0, 0),
|
||||
Basis(0, -1, 0, 0, 0, -1, 1, 0, 0)
|
||||
};
|
||||
|
||||
int Basis::get_orthogonal_index() const {
|
||||
//could be sped up if i come up with a way
|
||||
Basis orth = *this;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
real_t v = orth[i][j];
|
||||
if (v > 0.5f) {
|
||||
v = 1.0f;
|
||||
} else if (v < -0.5f) {
|
||||
v = -1.0f;
|
||||
} else {
|
||||
v = 0;
|
||||
}
|
||||
|
||||
orth[i][j] = v;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (_ortho_bases[i] == orth) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Basis::set_orthogonal_index(int p_index) {
|
||||
//there only exist 24 orthogonal bases in r3
|
||||
ERR_FAIL_INDEX(p_index, 24);
|
||||
|
||||
*this = _ortho_bases[p_index];
|
||||
}
|
||||
|
||||
void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const {
|
||||
/* checking this is a bad idea, because obtaining from scaled transform is a valid use case
|
||||
#ifdef MATH_CHECKS
|
||||
|
||||
Reference in New Issue
Block a user