Rename Transform to Transform3D in core
This commit is contained in:
parent
b80494e633
commit
de3f6699a5
|
@ -327,7 +327,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
|
|||
} break;
|
||||
case Variant::TRANSFORM: {
|
||||
ERR_FAIL_COND_V(len < 4 * 12, ERR_INVALID_DATA);
|
||||
Transform val;
|
||||
Transform3D val;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
val.basis.elements[i][j] = decode_float(&buf[(i * 3 + j) * 4]);
|
||||
|
@ -1140,7 +1140,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
|
|||
} break;
|
||||
case Variant::TRANSFORM: {
|
||||
if (buf) {
|
||||
Transform val = p_variant;
|
||||
Transform3D val = p_variant;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
memcpy(&buf[(i * 3 + j) * 4], &val.basis.elements[i][j], sizeof(float));
|
||||
|
|
|
@ -245,7 +245,7 @@ Error ResourceLoaderBinary::parse_variant(Variant &r_v) {
|
|||
|
||||
} break;
|
||||
case VARIANT_TRANSFORM: {
|
||||
Transform v;
|
||||
Transform3D v;
|
||||
v.basis.elements[0].x = f->get_real();
|
||||
v.basis.elements[0].y = f->get_real();
|
||||
v.basis.elements[0].z = f->get_real();
|
||||
|
@ -1418,7 +1418,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(FileAccess *f, const Varia
|
|||
} break;
|
||||
case Variant::TRANSFORM: {
|
||||
f->store_32(VARIANT_TRANSFORM);
|
||||
Transform val = p_property;
|
||||
Transform3D val = p_property;
|
||||
f->store_real(val.basis.elements[0].x);
|
||||
f->store_real(val.basis.elements[0].y);
|
||||
f->store_real(val.basis.elements[0].z);
|
||||
|
|
|
@ -315,8 +315,8 @@ Vector2 CameraMatrix::get_far_plane_half_extents() const {
|
|||
return Vector2(res.x, res.y);
|
||||
}
|
||||
|
||||
bool CameraMatrix::get_endpoints(const Transform &p_transform, Vector3 *p_8points) const {
|
||||
Vector<Plane> planes = get_projection_planes(Transform());
|
||||
bool CameraMatrix::get_endpoints(const Transform3D &p_transform, Vector3 *p_8points) const {
|
||||
Vector<Plane> planes = get_projection_planes(Transform3D());
|
||||
const Planes intersections[8][3] = {
|
||||
{ PLANE_FAR, PLANE_LEFT, PLANE_TOP },
|
||||
{ PLANE_FAR, PLANE_LEFT, PLANE_BOTTOM },
|
||||
|
@ -338,7 +338,7 @@ bool CameraMatrix::get_endpoints(const Transform &p_transform, Vector3 *p_8point
|
|||
return true;
|
||||
}
|
||||
|
||||
Vector<Plane> CameraMatrix::get_projection_planes(const Transform &p_transform) const {
|
||||
Vector<Plane> CameraMatrix::get_projection_planes(const Transform3D &p_transform) const {
|
||||
/** Fast Plane Extraction from combined modelview/projection matrices.
|
||||
* References:
|
||||
* https://web.archive.org/web/20011221205252/http://www.markmorley.com/opengl/frustumculling.html
|
||||
|
@ -707,8 +707,8 @@ void CameraMatrix::scale_translate_to_fit(const AABB &p_aabb) {
|
|||
matrix[3][3] = 1;
|
||||
}
|
||||
|
||||
CameraMatrix::operator Transform() const {
|
||||
Transform tr;
|
||||
CameraMatrix::operator Transform3D() const {
|
||||
Transform3D tr;
|
||||
const real_t *m = &matrix[0][0];
|
||||
|
||||
tr.basis.elements[0][0] = m[0];
|
||||
|
@ -730,8 +730,8 @@ CameraMatrix::operator Transform() const {
|
|||
return tr;
|
||||
}
|
||||
|
||||
CameraMatrix::CameraMatrix(const Transform &p_transform) {
|
||||
const Transform &tr = p_transform;
|
||||
CameraMatrix::CameraMatrix(const Transform3D &p_transform) {
|
||||
const Transform3D &tr = p_transform;
|
||||
real_t *m = &matrix[0][0];
|
||||
|
||||
m[0] = tr.basis.elements[0][0];
|
||||
|
|
|
@ -71,9 +71,9 @@ struct CameraMatrix {
|
|||
real_t get_fov() const;
|
||||
bool is_orthogonal() const;
|
||||
|
||||
Vector<Plane> get_projection_planes(const Transform &p_transform) const;
|
||||
Vector<Plane> get_projection_planes(const Transform3D &p_transform) const;
|
||||
|
||||
bool get_endpoints(const Transform &p_transform, Vector3 *p_8points) const;
|
||||
bool get_endpoints(const Transform3D &p_transform, Vector3 *p_8points) const;
|
||||
Vector2 get_viewport_half_extents() const;
|
||||
Vector2 get_far_plane_half_extents() const;
|
||||
|
||||
|
@ -90,7 +90,7 @@ struct CameraMatrix {
|
|||
void scale_translate_to_fit(const AABB &p_aabb);
|
||||
void make_scale(const Vector3 &p_scale);
|
||||
int get_pixels_per_meter(int p_for_pixel_width) const;
|
||||
operator Transform() const;
|
||||
operator Transform3D() const;
|
||||
|
||||
void flip_y();
|
||||
|
||||
|
@ -112,7 +112,7 @@ struct CameraMatrix {
|
|||
float get_lod_multiplier() const;
|
||||
|
||||
CameraMatrix();
|
||||
CameraMatrix(const Transform &p_transform);
|
||||
CameraMatrix(const Transform3D &p_transform);
|
||||
~CameraMatrix();
|
||||
};
|
||||
|
||||
|
|
|
@ -230,7 +230,7 @@ bool Face3::intersects_aabb(const AABB &p_aabb) const {
|
|||
|
||||
real_t minA, maxA, minB, maxB;
|
||||
p_aabb.project_range_in_plane(Plane(axis, 0), minA, maxA);
|
||||
project_range(axis, Transform(), minB, maxB);
|
||||
project_range(axis, Transform3D(), minB, maxB);
|
||||
|
||||
if (maxA < minB || maxB < minA) {
|
||||
return false;
|
||||
|
@ -244,7 +244,7 @@ Face3::operator String() const {
|
|||
return String() + vertex[0] + ", " + vertex[1] + ", " + vertex[2];
|
||||
}
|
||||
|
||||
void Face3::project_range(const Vector3 &p_normal, const Transform &p_transform, real_t &r_min, real_t &r_max) const {
|
||||
void Face3::project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
Vector3 v = p_transform.xform(vertex[i]);
|
||||
real_t d = p_normal.dot(v);
|
||||
|
@ -259,7 +259,7 @@ void Face3::project_range(const Vector3 &p_normal, const Transform &p_transform,
|
|||
}
|
||||
}
|
||||
|
||||
void Face3::get_support(const Vector3 &p_normal, const Transform &p_transform, Vector3 *p_vertices, int *p_count, int p_max) const {
|
||||
void Face3::get_support(const Vector3 &p_normal, const Transform3D &p_transform, Vector3 *p_vertices, int *p_count, int p_max) const {
|
||||
#define _FACE_IS_VALID_SUPPORT_THRESHOLD 0.98
|
||||
#define _EDGE_IS_VALID_SUPPORT_THRESHOLD 0.05
|
||||
|
||||
|
|
|
@ -74,8 +74,8 @@ public:
|
|||
|
||||
ClockDirection get_clock_dir() const; ///< todo, test if this is returning the proper clockwisity
|
||||
|
||||
void get_support(const Vector3 &p_normal, const Transform &p_transform, Vector3 *p_vertices, int *p_count, int p_max) const;
|
||||
void project_range(const Vector3 &p_normal, const Transform &p_transform, real_t &r_min, real_t &r_max) const;
|
||||
void get_support(const Vector3 &p_normal, const Transform3D &p_transform, Vector3 *p_vertices, int *p_count, int p_max) const;
|
||||
void project_range(const Vector3 &p_normal, const Transform3D &p_transform, real_t &r_min, real_t &r_max) const;
|
||||
|
||||
AABB get_aabb() const {
|
||||
AABB aabb(vertex[0], Vector3());
|
||||
|
|
|
@ -142,7 +142,7 @@ Variant fieldwise_assign(const Variant &p_target, const Variant &p_source, const
|
|||
}
|
||||
|
||||
case Variant::TRANSFORM: {
|
||||
SETUP_TYPE(Transform)
|
||||
SETUP_TYPE(Transform3D)
|
||||
|
||||
/**/ TRY_TRANSFER_FIELD("xx", basis.elements[0][0])
|
||||
else TRY_TRANSFER_FIELD("xy", basis.elements[0][1])
|
||||
|
|
|
@ -33,49 +33,49 @@
|
|||
#include "core/math/math_funcs.h"
|
||||
#include "core/string/print_string.h"
|
||||
|
||||
void Transform::affine_invert() {
|
||||
void Transform3D::affine_invert() {
|
||||
basis.invert();
|
||||
origin = basis.xform(-origin);
|
||||
}
|
||||
|
||||
Transform Transform::affine_inverse() const {
|
||||
Transform ret = *this;
|
||||
Transform3D Transform3D::affine_inverse() const {
|
||||
Transform3D ret = *this;
|
||||
ret.affine_invert();
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Transform::invert() {
|
||||
void Transform3D::invert() {
|
||||
basis.transpose();
|
||||
origin = basis.xform(-origin);
|
||||
}
|
||||
|
||||
Transform Transform::inverse() const {
|
||||
Transform3D Transform3D::inverse() const {
|
||||
// FIXME: this function assumes the basis is a rotation matrix, with no scaling.
|
||||
// Transform::affine_inverse can handle matrices with scaling, so GDScript should eventually use that.
|
||||
Transform ret = *this;
|
||||
// Transform3D::affine_inverse can handle matrices with scaling, so GDScript should eventually use that.
|
||||
Transform3D ret = *this;
|
||||
ret.invert();
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Transform::rotate(const Vector3 &p_axis, real_t p_phi) {
|
||||
void Transform3D::rotate(const Vector3 &p_axis, real_t p_phi) {
|
||||
*this = rotated(p_axis, p_phi);
|
||||
}
|
||||
|
||||
Transform Transform::rotated(const Vector3 &p_axis, real_t p_phi) const {
|
||||
return Transform(Basis(p_axis, p_phi), Vector3()) * (*this);
|
||||
Transform3D Transform3D::rotated(const Vector3 &p_axis, real_t p_phi) const {
|
||||
return Transform3D(Basis(p_axis, p_phi), Vector3()) * (*this);
|
||||
}
|
||||
|
||||
void Transform::rotate_basis(const Vector3 &p_axis, real_t p_phi) {
|
||||
void Transform3D::rotate_basis(const Vector3 &p_axis, real_t p_phi) {
|
||||
basis.rotate(p_axis, p_phi);
|
||||
}
|
||||
|
||||
Transform Transform::looking_at(const Vector3 &p_target, const Vector3 &p_up) const {
|
||||
Transform t = *this;
|
||||
Transform3D Transform3D::looking_at(const Vector3 &p_target, const Vector3 &p_up) const {
|
||||
Transform3D t = *this;
|
||||
t.set_look_at(origin, p_target, p_up);
|
||||
return t;
|
||||
}
|
||||
|
||||
void Transform::set_look_at(const Vector3 &p_eye, const Vector3 &p_target, const Vector3 &p_up) {
|
||||
void Transform3D::set_look_at(const Vector3 &p_eye, const Vector3 &p_target, const Vector3 &p_up) {
|
||||
#ifdef MATH_CHECKS
|
||||
ERR_FAIL_COND(p_eye == p_target);
|
||||
ERR_FAIL_COND(p_up.length() == 0);
|
||||
|
@ -108,7 +108,7 @@ void Transform::set_look_at(const Vector3 &p_eye, const Vector3 &p_target, const
|
|||
origin = p_eye;
|
||||
}
|
||||
|
||||
Transform Transform::interpolate_with(const Transform &p_transform, real_t p_c) const {
|
||||
Transform3D Transform3D::interpolate_with(const Transform3D &p_transform, real_t p_c) const {
|
||||
/* not sure if very "efficient" but good enough? */
|
||||
|
||||
Vector3 src_scale = basis.get_scale();
|
||||
|
@ -119,94 +119,94 @@ Transform Transform::interpolate_with(const Transform &p_transform, real_t p_c)
|
|||
Quat dst_rot = p_transform.basis.get_rotation_quat();
|
||||
Vector3 dst_loc = p_transform.origin;
|
||||
|
||||
Transform interp;
|
||||
Transform3D interp;
|
||||
interp.basis.set_quat_scale(src_rot.slerp(dst_rot, p_c).normalized(), src_scale.lerp(dst_scale, p_c));
|
||||
interp.origin = src_loc.lerp(dst_loc, p_c);
|
||||
|
||||
return interp;
|
||||
}
|
||||
|
||||
void Transform::scale(const Vector3 &p_scale) {
|
||||
void Transform3D::scale(const Vector3 &p_scale) {
|
||||
basis.scale(p_scale);
|
||||
origin *= p_scale;
|
||||
}
|
||||
|
||||
Transform Transform::scaled(const Vector3 &p_scale) const {
|
||||
Transform t = *this;
|
||||
Transform3D Transform3D::scaled(const Vector3 &p_scale) const {
|
||||
Transform3D t = *this;
|
||||
t.scale(p_scale);
|
||||
return t;
|
||||
}
|
||||
|
||||
void Transform::scale_basis(const Vector3 &p_scale) {
|
||||
void Transform3D::scale_basis(const Vector3 &p_scale) {
|
||||
basis.scale(p_scale);
|
||||
}
|
||||
|
||||
void Transform::translate(real_t p_tx, real_t p_ty, real_t p_tz) {
|
||||
void Transform3D::translate(real_t p_tx, real_t p_ty, real_t p_tz) {
|
||||
translate(Vector3(p_tx, p_ty, p_tz));
|
||||
}
|
||||
|
||||
void Transform::translate(const Vector3 &p_translation) {
|
||||
void Transform3D::translate(const Vector3 &p_translation) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
origin[i] += basis[i].dot(p_translation);
|
||||
}
|
||||
}
|
||||
|
||||
Transform Transform::translated(const Vector3 &p_translation) const {
|
||||
Transform t = *this;
|
||||
Transform3D Transform3D::translated(const Vector3 &p_translation) const {
|
||||
Transform3D t = *this;
|
||||
t.translate(p_translation);
|
||||
return t;
|
||||
}
|
||||
|
||||
void Transform::orthonormalize() {
|
||||
void Transform3D::orthonormalize() {
|
||||
basis.orthonormalize();
|
||||
}
|
||||
|
||||
Transform Transform::orthonormalized() const {
|
||||
Transform _copy = *this;
|
||||
Transform3D Transform3D::orthonormalized() const {
|
||||
Transform3D _copy = *this;
|
||||
_copy.orthonormalize();
|
||||
return _copy;
|
||||
}
|
||||
|
||||
bool Transform::is_equal_approx(const Transform &p_transform) const {
|
||||
bool Transform3D::is_equal_approx(const Transform3D &p_transform) const {
|
||||
return basis.is_equal_approx(p_transform.basis) && origin.is_equal_approx(p_transform.origin);
|
||||
}
|
||||
|
||||
bool Transform::operator==(const Transform &p_transform) const {
|
||||
bool Transform3D::operator==(const Transform3D &p_transform) const {
|
||||
return (basis == p_transform.basis && origin == p_transform.origin);
|
||||
}
|
||||
|
||||
bool Transform::operator!=(const Transform &p_transform) const {
|
||||
bool Transform3D::operator!=(const Transform3D &p_transform) const {
|
||||
return (basis != p_transform.basis || origin != p_transform.origin);
|
||||
}
|
||||
|
||||
void Transform::operator*=(const Transform &p_transform) {
|
||||
void Transform3D::operator*=(const Transform3D &p_transform) {
|
||||
origin = xform(p_transform.origin);
|
||||
basis *= p_transform.basis;
|
||||
}
|
||||
|
||||
Transform Transform::operator*(const Transform &p_transform) const {
|
||||
Transform t = *this;
|
||||
Transform3D Transform3D::operator*(const Transform3D &p_transform) const {
|
||||
Transform3D t = *this;
|
||||
t *= p_transform;
|
||||
return t;
|
||||
}
|
||||
|
||||
Transform::operator String() const {
|
||||
Transform3D::operator String() const {
|
||||
return basis.operator String() + " - " + origin.operator String();
|
||||
}
|
||||
|
||||
Transform::Transform(const Basis &p_basis, const Vector3 &p_origin) :
|
||||
Transform3D::Transform3D(const Basis &p_basis, const Vector3 &p_origin) :
|
||||
basis(p_basis),
|
||||
origin(p_origin) {
|
||||
}
|
||||
|
||||
Transform::Transform(const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z, const Vector3 &p_origin) :
|
||||
Transform3D::Transform3D(const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z, const Vector3 &p_origin) :
|
||||
origin(p_origin) {
|
||||
basis.set_axis(0, p_x);
|
||||
basis.set_axis(1, p_y);
|
||||
basis.set_axis(2, p_z);
|
||||
}
|
||||
|
||||
Transform::Transform(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_t yz, real_t zx, real_t zy, real_t zz, real_t ox, real_t oy, real_t oz) {
|
||||
Transform3D::Transform3D(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_t yz, real_t zx, real_t zy, real_t zz, real_t ox, real_t oy, real_t oz) {
|
||||
basis = Basis(xx, xy, xz, yx, yy, yz, zx, zy, zz);
|
||||
origin = Vector3(ox, oy, oz);
|
||||
}
|
||||
|
|
|
@ -35,31 +35,31 @@
|
|||
#include "core/math/basis.h"
|
||||
#include "core/math/plane.h"
|
||||
|
||||
class Transform {
|
||||
class Transform3D {
|
||||
public:
|
||||
Basis basis;
|
||||
Vector3 origin;
|
||||
|
||||
void invert();
|
||||
Transform inverse() const;
|
||||
Transform3D inverse() const;
|
||||
|
||||
void affine_invert();
|
||||
Transform affine_inverse() const;
|
||||
Transform3D affine_inverse() const;
|
||||
|
||||
Transform rotated(const Vector3 &p_axis, real_t p_phi) const;
|
||||
Transform3D rotated(const Vector3 &p_axis, real_t p_phi) const;
|
||||
|
||||
void rotate(const Vector3 &p_axis, real_t p_phi);
|
||||
void rotate_basis(const Vector3 &p_axis, real_t p_phi);
|
||||
|
||||
void set_look_at(const Vector3 &p_eye, const Vector3 &p_target, const Vector3 &p_up = Vector3(0, 1, 0));
|
||||
Transform looking_at(const Vector3 &p_target, const Vector3 &p_up = Vector3(0, 1, 0)) const;
|
||||
Transform3D looking_at(const Vector3 &p_target, const Vector3 &p_up = Vector3(0, 1, 0)) const;
|
||||
|
||||
void scale(const Vector3 &p_scale);
|
||||
Transform scaled(const Vector3 &p_scale) const;
|
||||
Transform3D scaled(const Vector3 &p_scale) const;
|
||||
void scale_basis(const Vector3 &p_scale);
|
||||
void translate(real_t p_tx, real_t p_ty, real_t p_tz);
|
||||
void translate(const Vector3 &p_translation);
|
||||
Transform translated(const Vector3 &p_translation) const;
|
||||
Transform3D translated(const Vector3 &p_translation) const;
|
||||
|
||||
const Basis &get_basis() const { return basis; }
|
||||
void set_basis(const Basis &p_basis) { basis = p_basis; }
|
||||
|
@ -68,11 +68,11 @@ public:
|
|||
void set_origin(const Vector3 &p_origin) { origin = p_origin; }
|
||||
|
||||
void orthonormalize();
|
||||
Transform orthonormalized() const;
|
||||
bool is_equal_approx(const Transform &p_transform) const;
|
||||
Transform3D orthonormalized() const;
|
||||
bool is_equal_approx(const Transform3D &p_transform) const;
|
||||
|
||||
bool operator==(const Transform &p_transform) const;
|
||||
bool operator!=(const Transform &p_transform) const;
|
||||
bool operator==(const Transform3D &p_transform) const;
|
||||
bool operator!=(const Transform3D &p_transform) const;
|
||||
|
||||
_FORCE_INLINE_ Vector3 xform(const Vector3 &p_vector) const;
|
||||
_FORCE_INLINE_ Vector3 xform_inv(const Vector3 &p_vector) const;
|
||||
|
@ -86,14 +86,14 @@ public:
|
|||
_FORCE_INLINE_ Vector<Vector3> xform(const Vector<Vector3> &p_array) const;
|
||||
_FORCE_INLINE_ Vector<Vector3> xform_inv(const Vector<Vector3> &p_array) const;
|
||||
|
||||
void operator*=(const Transform &p_transform);
|
||||
Transform operator*(const Transform &p_transform) const;
|
||||
void operator*=(const Transform3D &p_transform);
|
||||
Transform3D operator*(const Transform3D &p_transform) const;
|
||||
|
||||
Transform interpolate_with(const Transform &p_transform, real_t p_c) const;
|
||||
Transform3D interpolate_with(const Transform3D &p_transform, real_t p_c) const;
|
||||
|
||||
_FORCE_INLINE_ Transform inverse_xform(const Transform &t) const {
|
||||
_FORCE_INLINE_ Transform3D inverse_xform(const Transform3D &t) const {
|
||||
Vector3 v = t.origin - origin;
|
||||
return Transform(basis.transpose_xform(t.basis),
|
||||
return Transform3D(basis.transpose_xform(t.basis),
|
||||
basis.xform(v));
|
||||
}
|
||||
|
||||
|
@ -106,20 +106,20 @@ public:
|
|||
|
||||
operator String() const;
|
||||
|
||||
Transform() {}
|
||||
Transform(const Basis &p_basis, const Vector3 &p_origin = Vector3());
|
||||
Transform(const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z, const Vector3 &p_origin);
|
||||
Transform(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_t yz, real_t zx, real_t zy, real_t zz, real_t ox, real_t oy, real_t oz);
|
||||
Transform3D() {}
|
||||
Transform3D(const Basis &p_basis, const Vector3 &p_origin = Vector3());
|
||||
Transform3D(const Vector3 &p_x, const Vector3 &p_y, const Vector3 &p_z, const Vector3 &p_origin);
|
||||
Transform3D(real_t xx, real_t xy, real_t xz, real_t yx, real_t yy, real_t yz, real_t zx, real_t zy, real_t zz, real_t ox, real_t oy, real_t oz);
|
||||
};
|
||||
|
||||
_FORCE_INLINE_ Vector3 Transform::xform(const Vector3 &p_vector) const {
|
||||
_FORCE_INLINE_ Vector3 Transform3D::xform(const Vector3 &p_vector) const {
|
||||
return Vector3(
|
||||
basis[0].dot(p_vector) + origin.x,
|
||||
basis[1].dot(p_vector) + origin.y,
|
||||
basis[2].dot(p_vector) + origin.z);
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Vector3 Transform::xform_inv(const Vector3 &p_vector) const {
|
||||
_FORCE_INLINE_ Vector3 Transform3D::xform_inv(const Vector3 &p_vector) const {
|
||||
Vector3 v = p_vector - origin;
|
||||
|
||||
return Vector3(
|
||||
|
@ -128,7 +128,7 @@ _FORCE_INLINE_ Vector3 Transform::xform_inv(const Vector3 &p_vector) const {
|
|||
(basis.elements[0][2] * v.x) + (basis.elements[1][2] * v.y) + (basis.elements[2][2] * v.z));
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Plane Transform::xform(const Plane &p_plane) const {
|
||||
_FORCE_INLINE_ Plane Transform3D::xform(const Plane &p_plane) const {
|
||||
Vector3 point = p_plane.normal * p_plane.d;
|
||||
Vector3 point_dir = point + p_plane.normal;
|
||||
point = xform(point);
|
||||
|
@ -141,7 +141,7 @@ _FORCE_INLINE_ Plane Transform::xform(const Plane &p_plane) const {
|
|||
return Plane(normal, d);
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ Plane Transform::xform_inv(const Plane &p_plane) const {
|
||||
_FORCE_INLINE_ Plane Transform3D::xform_inv(const Plane &p_plane) const {
|
||||
Vector3 point = p_plane.normal * p_plane.d;
|
||||
Vector3 point_dir = point + p_plane.normal;
|
||||
point = xform_inv(point);
|
||||
|
@ -154,7 +154,7 @@ _FORCE_INLINE_ Plane Transform::xform_inv(const Plane &p_plane) const {
|
|||
return Plane(normal, d);
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ AABB Transform::xform(const AABB &p_aabb) const {
|
||||
_FORCE_INLINE_ AABB Transform3D::xform(const AABB &p_aabb) const {
|
||||
/* http://dev.theomader.com/transform-bounding-boxes/ */
|
||||
Vector3 min = p_aabb.position;
|
||||
Vector3 max = p_aabb.position + p_aabb.size;
|
||||
|
@ -179,7 +179,7 @@ _FORCE_INLINE_ AABB Transform::xform(const AABB &p_aabb) const {
|
|||
return r_aabb;
|
||||
}
|
||||
|
||||
_FORCE_INLINE_ AABB Transform::xform_inv(const AABB &p_aabb) const {
|
||||
_FORCE_INLINE_ AABB Transform3D::xform_inv(const AABB &p_aabb) const {
|
||||
/* define vertices */
|
||||
Vector3 vertices[8] = {
|
||||
Vector3(p_aabb.position.x + p_aabb.size.x, p_aabb.position.y + p_aabb.size.y, p_aabb.position.z + p_aabb.size.z),
|
||||
|
@ -203,7 +203,7 @@ _FORCE_INLINE_ AABB Transform::xform_inv(const AABB &p_aabb) const {
|
|||
return ret;
|
||||
}
|
||||
|
||||
Vector<Vector3> Transform::xform(const Vector<Vector3> &p_array) const {
|
||||
Vector<Vector3> Transform3D::xform(const Vector<Vector3> &p_array) const {
|
||||
Vector<Vector3> array;
|
||||
array.resize(p_array.size());
|
||||
|
||||
|
@ -216,7 +216,7 @@ Vector<Vector3> Transform::xform(const Vector<Vector3> &p_array) const {
|
|||
return array;
|
||||
}
|
||||
|
||||
Vector<Vector3> Transform::xform_inv(const Vector<Vector3> &p_array) const {
|
||||
Vector<Vector3> Transform3D::xform_inv(const Vector<Vector3> &p_array) const {
|
||||
Vector<Vector3> array;
|
||||
array.resize(p_array.size());
|
||||
|
||||
|
|
|
@ -600,7 +600,7 @@ bool TriangleMesh::inside_convex_shape(const Plane *p_planes, int p_plane_count,
|
|||
const Vector3 *vertexptr = vertices.ptr();
|
||||
const BVH *bvhptr = bvh.ptr();
|
||||
|
||||
Transform scale(Basis().scaled(p_scale));
|
||||
Transform3D scale(Basis().scaled(p_scale));
|
||||
|
||||
int pos = bvh.size() - 1;
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ MAKE_PTRARG_BY_REFERENCE(Plane);
|
|||
MAKE_PTRARG(Quat);
|
||||
MAKE_PTRARG_BY_REFERENCE(AABB);
|
||||
MAKE_PTRARG_BY_REFERENCE(Basis);
|
||||
MAKE_PTRARG_BY_REFERENCE(Transform);
|
||||
MAKE_PTRARG_BY_REFERENCE(Transform3D);
|
||||
MAKE_PTRARG_BY_REFERENCE(Color);
|
||||
MAKE_PTRARG(StringName);
|
||||
MAKE_PTRARG(NodePath);
|
||||
|
|
|
@ -149,7 +149,7 @@ MAKE_TYPE_INFO(Plane, Variant::PLANE)
|
|||
MAKE_TYPE_INFO(Quat, Variant::QUAT)
|
||||
MAKE_TYPE_INFO(AABB, Variant::AABB)
|
||||
MAKE_TYPE_INFO(Basis, Variant::BASIS)
|
||||
MAKE_TYPE_INFO(Transform, Variant::TRANSFORM)
|
||||
MAKE_TYPE_INFO(Transform3D, Variant::TRANSFORM)
|
||||
MAKE_TYPE_INFO(Color, Variant::COLOR)
|
||||
MAKE_TYPE_INFO(StringName, Variant::STRING_NAME)
|
||||
MAKE_TYPE_INFO(NodePath, Variant::NODE_PATH)
|
||||
|
|
|
@ -101,7 +101,7 @@ MAKE_TYPED_ARRAY(Plane, Variant::PLANE)
|
|||
MAKE_TYPED_ARRAY(Quat, Variant::QUAT)
|
||||
MAKE_TYPED_ARRAY(AABB, Variant::AABB)
|
||||
MAKE_TYPED_ARRAY(Basis, Variant::BASIS)
|
||||
MAKE_TYPED_ARRAY(Transform, Variant::TRANSFORM)
|
||||
MAKE_TYPED_ARRAY(Transform3D, Variant::TRANSFORM)
|
||||
MAKE_TYPED_ARRAY(Color, Variant::COLOR)
|
||||
MAKE_TYPED_ARRAY(StringName, Variant::STRING_NAME)
|
||||
MAKE_TYPED_ARRAY(NodePath, Variant::NODE_PATH)
|
||||
|
@ -199,7 +199,7 @@ MAKE_TYPED_ARRAY_INFO(Plane, Variant::PLANE)
|
|||
MAKE_TYPED_ARRAY_INFO(Quat, Variant::QUAT)
|
||||
MAKE_TYPED_ARRAY_INFO(AABB, Variant::AABB)
|
||||
MAKE_TYPED_ARRAY_INFO(Basis, Variant::BASIS)
|
||||
MAKE_TYPED_ARRAY_INFO(Transform, Variant::TRANSFORM)
|
||||
MAKE_TYPED_ARRAY_INFO(Transform3D, Variant::TRANSFORM)
|
||||
MAKE_TYPED_ARRAY_INFO(Color, Variant::COLOR)
|
||||
MAKE_TYPED_ARRAY_INFO(StringName, Variant::STRING_NAME)
|
||||
MAKE_TYPED_ARRAY_INFO(NodePath, Variant::NODE_PATH)
|
||||
|
|
|
@ -100,7 +100,7 @@ String Variant::get_type_name(Variant::Type p_type) {
|
|||
|
||||
} break;
|
||||
case TRANSFORM: {
|
||||
return "Transform";
|
||||
return "Transform3D";
|
||||
|
||||
} break;
|
||||
|
||||
|
@ -882,7 +882,7 @@ bool Variant::is_zero() const {
|
|||
|
||||
} break;
|
||||
case TRANSFORM: {
|
||||
return *_data._transform == Transform();
|
||||
return *_data._transform == Transform3D();
|
||||
|
||||
} break;
|
||||
|
||||
|
@ -1101,7 +1101,7 @@ void Variant::reference(const Variant &p_variant) {
|
|||
|
||||
} break;
|
||||
case TRANSFORM: {
|
||||
_data._transform = memnew(Transform(*p_variant._data._transform));
|
||||
_data._transform = memnew(Transform3D(*p_variant._data._transform));
|
||||
} break;
|
||||
|
||||
// misc types
|
||||
|
@ -1683,7 +1683,7 @@ String Variant::stringify(List<const void *> &stack) const {
|
|||
return mtx + ")";
|
||||
} break;
|
||||
case TRANSFORM:
|
||||
return operator Transform();
|
||||
return operator Transform3D();
|
||||
case STRING_NAME:
|
||||
return operator StringName();
|
||||
case NODE_PATH:
|
||||
|
@ -1979,16 +1979,16 @@ Variant::operator Quat() const {
|
|||
}
|
||||
}
|
||||
|
||||
Variant::operator Transform() const {
|
||||
Variant::operator Transform3D() const {
|
||||
if (type == TRANSFORM) {
|
||||
return *_data._transform;
|
||||
} else if (type == BASIS) {
|
||||
return Transform(*_data._basis, Vector3());
|
||||
return Transform3D(*_data._basis, Vector3());
|
||||
} else if (type == QUAT) {
|
||||
return Transform(Basis(*reinterpret_cast<const Quat *>(_data._mem)), Vector3());
|
||||
return Transform3D(Basis(*reinterpret_cast<const Quat *>(_data._mem)), Vector3());
|
||||
} else if (type == TRANSFORM2D) {
|
||||
const Transform2D &t = *_data._transform2d;
|
||||
Transform m;
|
||||
Transform3D m;
|
||||
m.basis.elements[0][0] = t.elements[0][0];
|
||||
m.basis.elements[1][0] = t.elements[0][1];
|
||||
m.basis.elements[0][1] = t.elements[1][0];
|
||||
|
@ -1997,7 +1997,7 @@ Variant::operator Transform() const {
|
|||
m.origin[1] = t.elements[2][1];
|
||||
return m;
|
||||
} else {
|
||||
return Transform();
|
||||
return Transform3D();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2005,7 +2005,7 @@ Variant::operator Transform2D() const {
|
|||
if (type == TRANSFORM2D) {
|
||||
return *_data._transform2d;
|
||||
} else if (type == TRANSFORM) {
|
||||
const Transform &t = *_data._transform;
|
||||
const Transform3D &t = *_data._transform;
|
||||
Transform2D m;
|
||||
m.elements[0][0] = t.basis.elements[0][0];
|
||||
m.elements[0][1] = t.basis.elements[1][0];
|
||||
|
@ -2500,9 +2500,9 @@ Variant::Variant(const Quat &p_quat) {
|
|||
memnew_placement(_data._mem, Quat(p_quat));
|
||||
}
|
||||
|
||||
Variant::Variant(const Transform &p_transform) {
|
||||
Variant::Variant(const Transform3D &p_transform) {
|
||||
type = TRANSFORM;
|
||||
_data._transform = memnew(Transform(p_transform));
|
||||
_data._transform = memnew(Transform3D(p_transform));
|
||||
}
|
||||
|
||||
Variant::Variant(const Transform2D &p_transform) {
|
||||
|
@ -3256,8 +3256,8 @@ bool Variant::hash_compare(const Variant &p_variant) const {
|
|||
} break;
|
||||
|
||||
case TRANSFORM: {
|
||||
const Transform *l = _data._transform;
|
||||
const Transform *r = p_variant._data._transform;
|
||||
const Transform3D *l = _data._transform;
|
||||
const Transform3D *r = p_variant._data._transform;
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (!(hash_compare_vector3(l->basis.elements[i], r->basis.elements[i]))) {
|
||||
|
|
|
@ -200,7 +200,7 @@ private:
|
|||
Transform2D *_transform2d;
|
||||
::AABB *_aabb;
|
||||
Basis *_basis;
|
||||
Transform *_transform;
|
||||
Transform3D *_transform;
|
||||
PackedArrayRefBase *packed_array;
|
||||
void *_ptr; //generic pointer
|
||||
uint8_t _mem[sizeof(ObjData) > (sizeof(real_t) * 4) ? sizeof(ObjData) : (sizeof(real_t) * 4)];
|
||||
|
@ -322,7 +322,7 @@ public:
|
|||
operator ::AABB() const;
|
||||
operator Quat() const;
|
||||
operator Basis() const;
|
||||
operator Transform() const;
|
||||
operator Transform3D() const;
|
||||
operator Transform2D() const;
|
||||
|
||||
operator Color() const;
|
||||
|
@ -395,7 +395,7 @@ public:
|
|||
Variant(const Quat &p_quat);
|
||||
Variant(const Basis &p_matrix);
|
||||
Variant(const Transform2D &p_transform);
|
||||
Variant(const Transform &p_transform);
|
||||
Variant(const Transform3D &p_transform);
|
||||
Variant(const Color &p_color);
|
||||
Variant(const NodePath &p_node_path);
|
||||
Variant(const ::RID &p_rid);
|
||||
|
|
|
@ -1690,17 +1690,17 @@ static void _register_variant_builtin_methods() {
|
|||
bind_methodv(AABB, intersects_segment, &AABB::intersects_segment_bind, sarray("from", "to"), varray());
|
||||
bind_methodv(AABB, intersects_ray, &AABB::intersects_ray_bind, sarray("from", "dir"), varray());
|
||||
|
||||
/* Transform */
|
||||
/* Transform3D */
|
||||
|
||||
bind_method(Transform, inverse, sarray(), varray());
|
||||
bind_method(Transform, affine_inverse, sarray(), varray());
|
||||
bind_method(Transform, orthonormalized, sarray(), varray());
|
||||
bind_method(Transform, rotated, sarray("axis", "phi"), varray());
|
||||
bind_method(Transform, scaled, sarray("scale"), varray());
|
||||
bind_method(Transform, translated, sarray("offset"), varray());
|
||||
bind_method(Transform, looking_at, sarray("target", "up"), varray(Vector3(0, 1, 0)));
|
||||
bind_method(Transform, interpolate_with, sarray("xform", "weight"), varray());
|
||||
bind_method(Transform, is_equal_approx, sarray("xform"), varray());
|
||||
bind_method(Transform3D, inverse, sarray(), varray());
|
||||
bind_method(Transform3D, affine_inverse, sarray(), varray());
|
||||
bind_method(Transform3D, orthonormalized, sarray(), varray());
|
||||
bind_method(Transform3D, rotated, sarray("axis", "phi"), varray());
|
||||
bind_method(Transform3D, scaled, sarray("scale"), varray());
|
||||
bind_method(Transform3D, translated, sarray("offset"), varray());
|
||||
bind_method(Transform3D, looking_at, sarray("target", "up"), varray(Vector3(0, 1, 0)));
|
||||
bind_method(Transform3D, interpolate_with, sarray("xform", "weight"), varray());
|
||||
bind_method(Transform3D, is_equal_approx, sarray("xform"), varray());
|
||||
|
||||
/* Dictionary */
|
||||
|
||||
|
@ -2019,10 +2019,10 @@ static void _register_variant_builtin_methods() {
|
|||
_VariantCall::add_variant_constant(Variant::TRANSFORM2D, "FLIP_X", Transform2D(-1, 0, 0, 1, 0, 0));
|
||||
_VariantCall::add_variant_constant(Variant::TRANSFORM2D, "FLIP_Y", Transform2D(1, 0, 0, -1, 0, 0));
|
||||
|
||||
Transform identity_transform = Transform();
|
||||
Transform flip_x_transform = Transform(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0);
|
||||
Transform flip_y_transform = Transform(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0);
|
||||
Transform flip_z_transform = Transform(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0);
|
||||
Transform3D identity_transform = Transform3D();
|
||||
Transform3D flip_x_transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0);
|
||||
Transform3D flip_y_transform = Transform3D(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0);
|
||||
Transform3D flip_z_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0);
|
||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "IDENTITY", identity_transform);
|
||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_X", flip_x_transform);
|
||||
_VariantCall::add_variant_constant(Variant::TRANSFORM, "FLIP_Y", flip_y_transform);
|
||||
|
|
|
@ -65,7 +65,7 @@ MAKE_PTRCONSTRUCT(Plane);
|
|||
MAKE_PTRCONSTRUCT(Quat);
|
||||
MAKE_PTRCONSTRUCT(AABB);
|
||||
MAKE_PTRCONSTRUCT(Basis);
|
||||
MAKE_PTRCONSTRUCT(Transform);
|
||||
MAKE_PTRCONSTRUCT(Transform3D);
|
||||
MAKE_PTRCONSTRUCT(Color);
|
||||
MAKE_PTRCONSTRUCT(StringName);
|
||||
MAKE_PTRCONSTRUCT(NodePath);
|
||||
|
@ -678,10 +678,10 @@ void Variant::_register_variant_constructors() {
|
|||
add_constructor<VariantConstructor<Basis, Vector3, double>>(sarray("axis", "phi"));
|
||||
add_constructor<VariantConstructor<Basis, Vector3, Vector3, Vector3>>(sarray("x_axis", "y_axis", "z_axis"));
|
||||
|
||||
add_constructor<VariantConstructNoArgs<Transform>>(sarray());
|
||||
add_constructor<VariantConstructor<Transform, Transform>>(sarray("from"));
|
||||
add_constructor<VariantConstructor<Transform, Basis, Vector3>>(sarray("basis", "origin"));
|
||||
add_constructor<VariantConstructor<Transform, Vector3, Vector3, Vector3, Vector3>>(sarray("x_axis", "y_axis", "z_axis", "origin"));
|
||||
add_constructor<VariantConstructNoArgs<Transform3D>>(sarray());
|
||||
add_constructor<VariantConstructor<Transform3D, Transform3D>>(sarray("from"));
|
||||
add_constructor<VariantConstructor<Transform3D, Basis, Vector3>>(sarray("basis", "origin"));
|
||||
add_constructor<VariantConstructor<Transform3D, Vector3, Vector3, Vector3, Vector3>>(sarray("x_axis", "y_axis", "z_axis", "origin"));
|
||||
|
||||
add_constructor<VariantConstructNoArgs<Color>>(sarray());
|
||||
add_constructor<VariantConstructor<Color, Color>>(sarray("from"));
|
||||
|
|
|
@ -144,8 +144,8 @@ public:
|
|||
_FORCE_INLINE_ static const ::AABB *get_aabb(const Variant *v) { return v->_data._aabb; }
|
||||
_FORCE_INLINE_ static Basis *get_basis(Variant *v) { return v->_data._basis; }
|
||||
_FORCE_INLINE_ static const Basis *get_basis(const Variant *v) { return v->_data._basis; }
|
||||
_FORCE_INLINE_ static Transform *get_transform(Variant *v) { return v->_data._transform; }
|
||||
_FORCE_INLINE_ static const Transform *get_transform(const Variant *v) { return v->_data._transform; }
|
||||
_FORCE_INLINE_ static Transform3D *get_transform(Variant *v) { return v->_data._transform; }
|
||||
_FORCE_INLINE_ static const Transform3D *get_transform(const Variant *v) { return v->_data._transform; }
|
||||
|
||||
// Misc types.
|
||||
_FORCE_INLINE_ static Color *get_color(Variant *v) { return reinterpret_cast<Color *>(v->_data._mem); }
|
||||
|
@ -217,7 +217,7 @@ public:
|
|||
v->type = Variant::BASIS;
|
||||
}
|
||||
_FORCE_INLINE_ static void init_transform(Variant *v) {
|
||||
v->_data._transform = memnew(Transform);
|
||||
v->_data._transform = memnew(Transform3D);
|
||||
v->type = Variant::TRANSFORM;
|
||||
}
|
||||
_FORCE_INLINE_ static void init_string_name(Variant *v) {
|
||||
|
@ -590,9 +590,9 @@ struct VariantGetInternalPtr<Transform2D> {
|
|||
};
|
||||
|
||||
template <>
|
||||
struct VariantGetInternalPtr<Transform> {
|
||||
static Transform *get_ptr(Variant *v) { return VariantInternal::get_transform(v); }
|
||||
static const Transform *get_ptr(const Variant *v) { return VariantInternal::get_transform(v); }
|
||||
struct VariantGetInternalPtr<Transform3D> {
|
||||
static Transform3D *get_ptr(Variant *v) { return VariantInternal::get_transform(v); }
|
||||
static const Transform3D *get_ptr(const Variant *v) { return VariantInternal::get_transform(v); }
|
||||
};
|
||||
|
||||
template <>
|
||||
|
@ -819,9 +819,9 @@ struct VariantInternalAccessor<Transform2D> {
|
|||
};
|
||||
|
||||
template <>
|
||||
struct VariantInternalAccessor<Transform> {
|
||||
static _FORCE_INLINE_ const Transform &get(const Variant *v) { return *VariantInternal::get_transform(v); }
|
||||
static _FORCE_INLINE_ void set(Variant *v, const Transform &p_value) { *VariantInternal::get_transform(v) = p_value; }
|
||||
struct VariantInternalAccessor<Transform3D> {
|
||||
static _FORCE_INLINE_ const Transform3D &get(const Variant *v) { return *VariantInternal::get_transform(v); }
|
||||
static _FORCE_INLINE_ void set(Variant *v, const Transform3D &p_value) { *VariantInternal::get_transform(v) = p_value; }
|
||||
};
|
||||
|
||||
template <>
|
||||
|
@ -1082,7 +1082,7 @@ struct VariantInitializer<Basis> {
|
|||
};
|
||||
|
||||
template <>
|
||||
struct VariantInitializer<Transform> {
|
||||
struct VariantInitializer<Transform3D> {
|
||||
static _FORCE_INLINE_ void init(Variant *v) { VariantInternal::init_transform(v); }
|
||||
};
|
||||
|
||||
|
@ -1256,8 +1256,8 @@ struct VariantZeroAssigner<Basis> {
|
|||
};
|
||||
|
||||
template <>
|
||||
struct VariantZeroAssigner<Transform> {
|
||||
static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_transform(v) = Transform(); }
|
||||
struct VariantZeroAssigner<Transform3D> {
|
||||
static _FORCE_INLINE_ void zero(Variant *v) { *VariantInternal::get_transform(v) = Transform3D(); }
|
||||
};
|
||||
|
||||
template <>
|
||||
|
|
|
@ -1465,13 +1465,13 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorXForm<Vector<Vector2>, Transform2D, Vector<Vector2>>>(Variant::OP_MULTIPLY, Variant::TRANSFORM2D, Variant::PACKED_VECTOR2_ARRAY);
|
||||
register_op<OperatorEvaluatorXFormInv<Vector<Vector2>, Vector<Vector2>, Transform2D>>(Variant::OP_MULTIPLY, Variant::PACKED_VECTOR2_ARRAY, Variant::TRANSFORM2D);
|
||||
|
||||
register_op<OperatorEvaluatorMul<Transform, Transform, Transform>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<Vector3, Transform, Vector3>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::VECTOR3);
|
||||
register_op<OperatorEvaluatorXFormInv<Vector3, Vector3, Transform>>(Variant::OP_MULTIPLY, Variant::VECTOR3, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<::AABB, Transform, ::AABB>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::AABB);
|
||||
register_op<OperatorEvaluatorXFormInv<::AABB, ::AABB, Transform>>(Variant::OP_MULTIPLY, Variant::AABB, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<Vector<Vector3>, Transform, Vector<Vector3>>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::PACKED_VECTOR3_ARRAY);
|
||||
register_op<OperatorEvaluatorXFormInv<Vector<Vector3>, Vector<Vector3>, Transform>>(Variant::OP_MULTIPLY, Variant::PACKED_VECTOR3_ARRAY, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorMul<Transform3D, Transform3D, Transform3D>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<Vector3, Transform3D, Vector3>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::VECTOR3);
|
||||
register_op<OperatorEvaluatorXFormInv<Vector3, Vector3, Transform3D>>(Variant::OP_MULTIPLY, Variant::VECTOR3, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<::AABB, Transform3D, ::AABB>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::AABB);
|
||||
register_op<OperatorEvaluatorXFormInv<::AABB, ::AABB, Transform3D>>(Variant::OP_MULTIPLY, Variant::AABB, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorXForm<Vector<Vector3>, Transform3D, Vector<Vector3>>>(Variant::OP_MULTIPLY, Variant::TRANSFORM, Variant::PACKED_VECTOR3_ARRAY);
|
||||
register_op<OperatorEvaluatorXFormInv<Vector<Vector3>, Vector<Vector3>, Transform3D>>(Variant::OP_MULTIPLY, Variant::PACKED_VECTOR3_ARRAY, Variant::TRANSFORM);
|
||||
|
||||
register_op<OperatorEvaluatorMul<Basis, Basis, Basis>>(Variant::OP_MULTIPLY, Variant::BASIS, Variant::BASIS);
|
||||
register_op<OperatorEvaluatorXForm<Vector3, Basis, Vector3>>(Variant::OP_MULTIPLY, Variant::BASIS, Variant::VECTOR3);
|
||||
|
@ -1547,7 +1547,7 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorStringModT<Quat>>(Variant::OP_MODULE, Variant::STRING, Variant::QUAT);
|
||||
register_op<OperatorEvaluatorStringModT<::AABB>>(Variant::OP_MODULE, Variant::STRING, Variant::AABB);
|
||||
register_op<OperatorEvaluatorStringModT<Basis>>(Variant::OP_MODULE, Variant::STRING, Variant::BASIS);
|
||||
register_op<OperatorEvaluatorStringModT<Transform>>(Variant::OP_MODULE, Variant::STRING, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorStringModT<Transform3D>>(Variant::OP_MODULE, Variant::STRING, Variant::TRANSFORM);
|
||||
|
||||
register_op<OperatorEvaluatorStringModT<Color>>(Variant::OP_MODULE, Variant::STRING, Variant::COLOR);
|
||||
register_op<OperatorEvaluatorStringModT<StringName>>(Variant::OP_MODULE, Variant::STRING, Variant::STRING_NAME);
|
||||
|
@ -1615,7 +1615,7 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorEqual<Quat, Quat>>(Variant::OP_EQUAL, Variant::QUAT, Variant::QUAT);
|
||||
register_op<OperatorEvaluatorEqual<::AABB, ::AABB>>(Variant::OP_EQUAL, Variant::AABB, Variant::AABB);
|
||||
register_op<OperatorEvaluatorEqual<Basis, Basis>>(Variant::OP_EQUAL, Variant::BASIS, Variant::BASIS);
|
||||
register_op<OperatorEvaluatorEqual<Transform, Transform>>(Variant::OP_EQUAL, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorEqual<Transform3D, Transform3D>>(Variant::OP_EQUAL, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorEqual<Color, Color>>(Variant::OP_EQUAL, Variant::COLOR, Variant::COLOR);
|
||||
|
||||
register_op<OperatorEvaluatorEqual<StringName, String>>(Variant::OP_EQUAL, Variant::STRING_NAME, Variant::STRING);
|
||||
|
@ -1661,7 +1661,7 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorNotEqual<Quat, Quat>>(Variant::OP_NOT_EQUAL, Variant::QUAT, Variant::QUAT);
|
||||
register_op<OperatorEvaluatorNotEqual<::AABB, ::AABB>>(Variant::OP_NOT_EQUAL, Variant::AABB, Variant::AABB);
|
||||
register_op<OperatorEvaluatorNotEqual<Basis, Basis>>(Variant::OP_NOT_EQUAL, Variant::BASIS, Variant::BASIS);
|
||||
register_op<OperatorEvaluatorNotEqual<Transform, Transform>>(Variant::OP_NOT_EQUAL, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorNotEqual<Transform3D, Transform3D>>(Variant::OP_NOT_EQUAL, Variant::TRANSFORM, Variant::TRANSFORM);
|
||||
register_op<OperatorEvaluatorNotEqual<Color, Color>>(Variant::OP_NOT_EQUAL, Variant::COLOR, Variant::COLOR);
|
||||
|
||||
register_op<OperatorEvaluatorNotEqual<StringName, String>>(Variant::OP_NOT_EQUAL, Variant::STRING_NAME, Variant::STRING);
|
||||
|
@ -1852,7 +1852,7 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorInDictionaryHas<Quat>>(Variant::OP_IN, Variant::QUAT, Variant::DICTIONARY);
|
||||
register_op<OperatorEvaluatorInDictionaryHas<::AABB>>(Variant::OP_IN, Variant::AABB, Variant::DICTIONARY);
|
||||
register_op<OperatorEvaluatorInDictionaryHas<Basis>>(Variant::OP_IN, Variant::BASIS, Variant::DICTIONARY);
|
||||
register_op<OperatorEvaluatorInDictionaryHas<Transform>>(Variant::OP_IN, Variant::TRANSFORM, Variant::DICTIONARY);
|
||||
register_op<OperatorEvaluatorInDictionaryHas<Transform3D>>(Variant::OP_IN, Variant::TRANSFORM, Variant::DICTIONARY);
|
||||
|
||||
register_op<OperatorEvaluatorInDictionaryHas<Color>>(Variant::OP_IN, Variant::COLOR, Variant::DICTIONARY);
|
||||
register_op<OperatorEvaluatorInDictionaryHas<StringName>>(Variant::OP_IN, Variant::STRING_NAME, Variant::DICTIONARY);
|
||||
|
@ -1889,7 +1889,7 @@ void Variant::_register_variant_operators() {
|
|||
register_op<OperatorEvaluatorInArrayFind<Quat, Array>>(Variant::OP_IN, Variant::QUAT, Variant::ARRAY);
|
||||
register_op<OperatorEvaluatorInArrayFind<::AABB, Array>>(Variant::OP_IN, Variant::AABB, Variant::ARRAY);
|
||||
register_op<OperatorEvaluatorInArrayFind<Basis, Array>>(Variant::OP_IN, Variant::BASIS, Variant::ARRAY);
|
||||
register_op<OperatorEvaluatorInArrayFind<Transform, Array>>(Variant::OP_IN, Variant::TRANSFORM, Variant::ARRAY);
|
||||
register_op<OperatorEvaluatorInArrayFind<Transform3D, Array>>(Variant::OP_IN, Variant::TRANSFORM, Variant::ARRAY);
|
||||
|
||||
register_op<OperatorEvaluatorInArrayFind<Color, Array>>(Variant::OP_IN, Variant::COLOR, Variant::ARRAY);
|
||||
register_op<OperatorEvaluatorInArrayFind<StringName, Array>>(Variant::OP_IN, Variant::STRING_NAME, Variant::ARRAY);
|
||||
|
|
|
@ -653,7 +653,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
|||
}
|
||||
|
||||
value = Basis(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
|
||||
} else if (id == "Transform") {
|
||||
} else if (id == "Transform3D") {
|
||||
Vector<real_t> args;
|
||||
Error err = _parse_construct<real_t>(p_stream, args, line, r_err_str);
|
||||
if (err) {
|
||||
|
@ -665,7 +665,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
|
|||
return ERR_PARSE_ERROR;
|
||||
}
|
||||
|
||||
value = Transform(Basis(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]), Vector3(args[9], args[10], args[11]));
|
||||
value = Transform3D(Basis(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]), Vector3(args[9], args[10], args[11]));
|
||||
} else if (id == "Color") {
|
||||
Vector<float> args;
|
||||
Error err = _parse_construct<float>(p_stream, args, line, r_err_str);
|
||||
|
@ -1490,8 +1490,8 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
|
|||
|
||||
} break;
|
||||
case Variant::TRANSFORM: {
|
||||
String s = "Transform( ";
|
||||
Transform t = p_variant;
|
||||
String s = "Transform3D( ";
|
||||
Transform3D t = p_variant;
|
||||
Basis &m3 = t.basis;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < 3; j++) {
|
||||
|
|
|
@ -288,8 +288,8 @@ SETGET_STRUCT_FUNC_INDEX(Basis, Vector3, x, set_axis, get_axis, 0)
|
|||
SETGET_STRUCT_FUNC_INDEX(Basis, Vector3, y, set_axis, get_axis, 1)
|
||||
SETGET_STRUCT_FUNC_INDEX(Basis, Vector3, z, set_axis, get_axis, 2)
|
||||
|
||||
SETGET_STRUCT(Transform, Basis, basis)
|
||||
SETGET_STRUCT(Transform, Vector3, origin)
|
||||
SETGET_STRUCT(Transform3D, Basis, basis)
|
||||
SETGET_STRUCT(Transform3D, Vector3, origin)
|
||||
|
||||
SETGET_NUMBER_STRUCT(Color, double, r)
|
||||
SETGET_NUMBER_STRUCT(Color, double, g)
|
||||
|
@ -383,8 +383,8 @@ void register_named_setters_getters() {
|
|||
REGISTER_MEMBER(Basis, y);
|
||||
REGISTER_MEMBER(Basis, z);
|
||||
|
||||
REGISTER_MEMBER(Transform, basis);
|
||||
REGISTER_MEMBER(Transform, origin);
|
||||
REGISTER_MEMBER(Transform3D, basis);
|
||||
REGISTER_MEMBER(Transform3D, origin);
|
||||
|
||||
REGISTER_MEMBER(Color, r);
|
||||
REGISTER_MEMBER(Color, g);
|
||||
|
@ -2304,7 +2304,7 @@ void Variant::interpolate(const Variant &a, const Variant &b, float c, Variant &
|
|||
}
|
||||
return;
|
||||
case BASIS: {
|
||||
r_dst = Transform(*a._data._basis).interpolate_with(Transform(*b._data._basis), c).basis;
|
||||
r_dst = Transform3D(*a._data._basis).interpolate_with(Transform3D(*b._data._basis), c).basis;
|
||||
}
|
||||
return;
|
||||
case TRANSFORM: {
|
||||
|
|
|
@ -3459,7 +3459,7 @@ void AnimationTrackEditor::_insert_delay(bool p_create_reset, bool p_create_bezi
|
|||
insert_queue = false;
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Transform &p_xform) {
|
||||
void AnimationTrackEditor::insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform) {
|
||||
if (!keying) {
|
||||
return;
|
||||
}
|
||||
|
@ -3946,7 +3946,7 @@ AnimationTrackEditor::TrackIndices AnimationTrackEditor::_confirm_insert(InsertD
|
|||
|
||||
} break;
|
||||
case Animation::TYPE_TRANSFORM: {
|
||||
Transform tr = p_id.value;
|
||||
Transform3D tr = p_id.value;
|
||||
Dictionary d;
|
||||
d["location"] = tr.origin;
|
||||
d["scale"] = tr.basis.get_scale();
|
||||
|
@ -4560,7 +4560,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform xf = base->get_transform();
|
||||
Transform3D xf = base->get_transform();
|
||||
|
||||
Vector3 loc = xf.get_origin();
|
||||
Vector3 scale = xf.basis.get_scale_local();
|
||||
|
|
|
@ -526,7 +526,7 @@ public:
|
|||
void set_anim_pos(float p_pos);
|
||||
void insert_node_value_key(Node *p_node, const String &p_property, const Variant &p_value, bool p_only_if_exists = false);
|
||||
void insert_value_key(const String &p_property, const Variant &p_value, bool p_advance);
|
||||
void insert_transform_key(Node3D *p_node, const String &p_sub, const Transform &p_xform);
|
||||
void insert_transform_key(Node3D *p_node, const String &p_sub, const Transform3D &p_xform);
|
||||
|
||||
void show_select_node_warning(bool p_show);
|
||||
|
||||
|
|
|
@ -213,7 +213,7 @@ void ConnectDialog::_add_bind() {
|
|||
value = Basis();
|
||||
break;
|
||||
case Variant::TRANSFORM:
|
||||
value = Transform();
|
||||
value = Transform3D();
|
||||
break;
|
||||
case Variant::COLOR:
|
||||
value = Color();
|
||||
|
|
|
@ -60,7 +60,7 @@ Array EditorInterface::_make_mesh_previews(const Array &p_meshes, int p_preview_
|
|||
return ret;
|
||||
}
|
||||
|
||||
Vector<Ref<Texture2D>> EditorInterface::make_mesh_previews(const Vector<Ref<Mesh>> &p_meshes, Vector<Transform> *p_transforms, int p_preview_size) {
|
||||
Vector<Ref<Texture2D>> EditorInterface::make_mesh_previews(const Vector<Ref<Mesh>> &p_meshes, Vector<Transform3D> *p_transforms, int p_preview_size) {
|
||||
int size = p_preview_size;
|
||||
|
||||
RID scenario = RS::get_singleton()->scenario_create();
|
||||
|
@ -94,7 +94,7 @@ Vector<Ref<Texture2D>> EditorInterface::make_mesh_previews(const Vector<Ref<Mesh
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform mesh_xform;
|
||||
Transform3D mesh_xform;
|
||||
if (p_transforms != nullptr) {
|
||||
mesh_xform = (*p_transforms)[i];
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ Vector<Ref<Texture2D>> EditorInterface::make_mesh_previews(const Vector<Ref<Mesh
|
|||
AABB aabb = mesh->get_aabb();
|
||||
Vector3 ofs = aabb.position + aabb.size * 0.5;
|
||||
aabb.position -= ofs;
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis = Basis().rotated(Vector3(0, 1, 0), -Math_PI / 6);
|
||||
xform.basis = Basis().rotated(Vector3(1, 0, 0), Math_PI / 6) * xform.basis;
|
||||
AABB rot_aabb = xform.xform(aabb);
|
||||
|
@ -119,11 +119,11 @@ Vector<Ref<Texture2D>> EditorInterface::make_mesh_previews(const Vector<Ref<Mesh
|
|||
xform.invert();
|
||||
xform = mesh_xform * xform;
|
||||
|
||||
RS::get_singleton()->camera_set_transform(camera, xform * Transform(Basis(), Vector3(0, 0, 3)));
|
||||
RS::get_singleton()->camera_set_transform(camera, xform * Transform3D(Basis(), Vector3(0, 0, 3)));
|
||||
RS::get_singleton()->camera_set_orthogonal(camera, m * 2, 0.01, 1000.0);
|
||||
|
||||
RS::get_singleton()->instance_set_transform(light_instance, xform * Transform().looking_at(Vector3(-2, -1, -1), Vector3(0, 1, 0)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, xform * Transform().looking_at(Vector3(+1, -1, -2), Vector3(0, 1, 0)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance, xform * Transform3D().looking_at(Vector3(-2, -1, -1), Vector3(0, 1, 0)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, xform * Transform3D().looking_at(Vector3(+1, -1, -2), Vector3(0, 1, 0)));
|
||||
|
||||
ep.step(TTR("Thumbnail..."), i);
|
||||
Main::iteration();
|
||||
|
|
|
@ -113,7 +113,7 @@ public:
|
|||
Error save_scene();
|
||||
void save_scene_as(const String &p_scene, bool p_with_preview = true);
|
||||
|
||||
Vector<Ref<Texture2D>> make_mesh_previews(const Vector<Ref<Mesh>> &p_meshes, Vector<Transform> *p_transforms, int p_preview_size);
|
||||
Vector<Ref<Texture2D>> make_mesh_previews(const Vector<Ref<Mesh>> &p_meshes, Vector<Transform3D> *p_transforms, int p_preview_size);
|
||||
|
||||
void set_main_screen_editor(const String &p_name);
|
||||
void set_distraction_free_mode(bool p_enter);
|
||||
|
|
|
@ -2083,7 +2083,7 @@ void EditorPropertyTransform::_value_changed(double val, const String &p_name) {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform p;
|
||||
Transform3D p;
|
||||
p.basis[0][0] = spin[0]->get_value();
|
||||
p.basis[1][0] = spin[1]->get_value();
|
||||
p.basis[2][0] = spin[2]->get_value();
|
||||
|
@ -2104,7 +2104,7 @@ void EditorPropertyTransform::update_property() {
|
|||
update_using_transform(get_edited_object()->get(get_edited_property()));
|
||||
}
|
||||
|
||||
void EditorPropertyTransform::update_using_transform(Transform p_transform) {
|
||||
void EditorPropertyTransform::update_using_transform(Transform3D p_transform) {
|
||||
setting = true;
|
||||
spin[0]->set_value(p_transform.basis[0][0]);
|
||||
spin[1]->set_value(p_transform.basis[1][0]);
|
||||
|
|
|
@ -541,7 +541,7 @@ protected:
|
|||
|
||||
public:
|
||||
virtual void update_property() override;
|
||||
virtual void update_using_transform(Transform p_transform);
|
||||
virtual void update_using_transform(Transform3D p_transform);
|
||||
void setup(double p_min, double p_max, double p_step, bool p_no_slider);
|
||||
EditorPropertyTransform();
|
||||
};
|
||||
|
|
|
@ -50,8 +50,8 @@ String Collada::Effect::get_texture_path(const String &p_source, Collada &state)
|
|||
return state.state.image_map[image].path;
|
||||
}
|
||||
|
||||
Transform Collada::get_root_transform() const {
|
||||
Transform unit_scale_transform;
|
||||
Transform3D Collada::get_root_transform() const {
|
||||
Transform3D unit_scale_transform;
|
||||
#ifndef COLLADA_IMPORT_SCALE_SCENE
|
||||
unit_scale_transform.scale(Vector3(state.unit_scale, state.unit_scale, state.unit_scale));
|
||||
#endif
|
||||
|
@ -74,8 +74,8 @@ static String _uri_to_id(const String &p_uri) {
|
|||
|
||||
/** HELPER FUNCTIONS **/
|
||||
|
||||
Transform Collada::fix_transform(const Transform &p_transform) {
|
||||
Transform tr = p_transform;
|
||||
Transform3D Collada::fix_transform(const Transform3D &p_transform) {
|
||||
Transform3D tr = p_transform;
|
||||
|
||||
#ifndef NO_UP_AXIS_SWAP
|
||||
|
||||
|
@ -102,8 +102,8 @@ Transform Collada::fix_transform(const Transform &p_transform) {
|
|||
//return state.matrix_fix * p_transform;
|
||||
}
|
||||
|
||||
static Transform _read_transform_from_array(const Vector<float> &array, int ofs = 0) {
|
||||
Transform tr;
|
||||
static Transform3D _read_transform_from_array(const Vector<float> &array, int ofs = 0) {
|
||||
Transform3D tr;
|
||||
// i wonder why collada matrices are transposed, given that's opposed to opengl..
|
||||
tr.basis.elements[0][0] = array[0 + ofs];
|
||||
tr.basis.elements[0][1] = array[1 + ofs];
|
||||
|
@ -122,11 +122,11 @@ static Transform _read_transform_from_array(const Vector<float> &array, int ofs
|
|||
|
||||
/* STRUCTURES */
|
||||
|
||||
Transform Collada::Node::compute_transform(Collada &state) const {
|
||||
Transform xform;
|
||||
Transform3D Collada::Node::compute_transform(Collada &state) const {
|
||||
Transform3D xform;
|
||||
|
||||
for (int i = 0; i < xform_list.size(); i++) {
|
||||
Transform xform_step;
|
||||
Transform3D xform_step;
|
||||
const XForm &xf = xform_list[i];
|
||||
switch (xf.op) {
|
||||
case XForm::OP_ROTATE: {
|
||||
|
@ -165,11 +165,11 @@ Transform Collada::Node::compute_transform(Collada &state) const {
|
|||
return xform;
|
||||
}
|
||||
|
||||
Transform Collada::Node::get_transform() const {
|
||||
Transform3D Collada::Node::get_transform() const {
|
||||
return default_transform;
|
||||
}
|
||||
|
||||
Transform Collada::Node::get_global_transform() const {
|
||||
Transform3D Collada::Node::get_global_transform() const {
|
||||
if (parent) {
|
||||
return parent->get_global_transform() * default_transform;
|
||||
} else {
|
||||
|
@ -201,14 +201,14 @@ Vector<float> Collada::AnimationTrack::get_value_at_time(float p_time) const {
|
|||
|
||||
if (keys[i].data.size() == 16) {
|
||||
//interpolate a matrix
|
||||
Transform src = _read_transform_from_array(keys[i - 1].data);
|
||||
Transform dst = _read_transform_from_array(keys[i].data);
|
||||
Transform3D src = _read_transform_from_array(keys[i - 1].data);
|
||||
Transform3D dst = _read_transform_from_array(keys[i].data);
|
||||
|
||||
Transform interp = c < 0.001 ? src : src.interpolate_with(dst, c);
|
||||
Transform3D interp = c < 0.001 ? src : src.interpolate_with(dst, c);
|
||||
|
||||
Vector<float> ret;
|
||||
ret.resize(16);
|
||||
Transform tr;
|
||||
Transform3D tr;
|
||||
// i wonder why collada matrices are transposed, given that's opposed to opengl..
|
||||
ret.write[0] = interp.basis.elements[0][0];
|
||||
ret.write[1] = interp.basis.elements[0][1];
|
||||
|
@ -410,10 +410,9 @@ Vector<String> Collada::_read_string_array(XMLParser &parser) {
|
|||
return array;
|
||||
}
|
||||
|
||||
Transform Collada::_read_transform(XMLParser &parser) {
|
||||
if (parser.is_empty()) {
|
||||
return Transform();
|
||||
}
|
||||
Transform3D Collada::_read_transform(XMLParser &parser) {
|
||||
if (parser.is_empty())
|
||||
return Transform3D();
|
||||
|
||||
Vector<String> array;
|
||||
while (parser.read() == OK) {
|
||||
|
@ -429,7 +428,7 @@ Transform Collada::_read_transform(XMLParser &parser) {
|
|||
}
|
||||
}
|
||||
|
||||
ERR_FAIL_COND_V(array.size() != 16, Transform());
|
||||
ERR_FAIL_COND_V(array.size() != 16, Transform3D());
|
||||
Vector<float> farr;
|
||||
farr.resize(16);
|
||||
for (int i = 0; i < 16; i++) {
|
||||
|
@ -1197,7 +1196,7 @@ void Collada::_parse_skin_controller(XMLParser &parser, String p_id) {
|
|||
|
||||
/* STORE REST MATRICES */
|
||||
|
||||
Vector<Transform> rests;
|
||||
Vector<Transform3D> rests;
|
||||
ERR_FAIL_COND(!skindata.joints.sources.has("JOINT"));
|
||||
ERR_FAIL_COND(!skindata.joints.sources.has("INV_BIND_MATRIX"));
|
||||
|
||||
|
@ -1214,7 +1213,7 @@ void Collada::_parse_skin_controller(XMLParser &parser, String p_id) {
|
|||
|
||||
for (int i = 0; i < joint_source.sarray.size(); i++) {
|
||||
String name = joint_source.sarray[i];
|
||||
Transform xform = _read_transform_from_array(ibm_source.array, i * 16); //<- this is a mistake, it must be applied to vertices
|
||||
Transform3D xform = _read_transform_from_array(ibm_source.array, i * 16); //<- this is a mistake, it must be applied to vertices
|
||||
xform.affine_invert(); // inverse for rest, because it's an inverse
|
||||
#ifdef COLLADA_IMPORT_SCALE_SCENE
|
||||
xform.origin *= state.unit_scale;
|
||||
|
@ -2096,7 +2095,7 @@ void Collada::_merge_skeletons2(VisualScene *p_vscene) {
|
|||
|
||||
NodeSkeleton *skeleton = nullptr;
|
||||
|
||||
for (Map<String, Transform>::Element *F = cd.bone_rest_map.front(); F; F = F->next()) {
|
||||
for (Map<String, Transform3D>::Element *F = cd.bone_rest_map.front(); F; F = F->next()) {
|
||||
String name;
|
||||
|
||||
if (!state.sid_to_node_map.has(F->key())) {
|
||||
|
@ -2240,11 +2239,11 @@ bool Collada::_move_geometry_to_skeletons(VisualScene *p_vscene, Node *p_node, L
|
|||
//this should be correct
|
||||
ERR_FAIL_COND_V(!state.skin_controller_data_map.has(ng->source), false);
|
||||
SkinControllerData &skin = state.skin_controller_data_map[ng->source];
|
||||
Transform skel_inv = sk->get_global_transform().affine_inverse();
|
||||
Transform3D skel_inv = sk->get_global_transform().affine_inverse();
|
||||
p_node->default_transform = skel_inv * (skin.bind_shape /* p_node->get_global_transform()*/); // i honestly have no idea what to do with a previous model xform.. most exporters ignore it
|
||||
|
||||
//make rests relative to the skeleton (they seem to be always relative to world)
|
||||
for (Map<String, Transform>::Element *E = skin.bone_rest_map.front(); E; E = E->next()) {
|
||||
for (Map<String, Transform3D>::Element *E = skin.bone_rest_map.front(); E; E = E->next()) {
|
||||
E->get() = skel_inv * E->get(); //make the bone rest local to the skeleton
|
||||
state.bone_rest_map[E->key()] = E->get(); // make it remember where the bone is globally, now that it's relative
|
||||
}
|
||||
|
@ -2252,7 +2251,7 @@ bool Collada::_move_geometry_to_skeletons(VisualScene *p_vscene, Node *p_node, L
|
|||
//but most exporters seem to work only if i do this..
|
||||
//p_node->default_transform = p_node->get_global_transform();
|
||||
|
||||
//p_node->default_transform=Transform(); //this seems to be correct, because bind shape makes the object local to the skeleton
|
||||
//p_node->default_transform=Transform3D(); //this seems to be correct, because bind shape makes the object local to the skeleton
|
||||
p_node->ignore_anim = true; // collada may animate this later, if it does, then this is not supported (redo your original asset and don't animate the base mesh)
|
||||
p_node->parent = sk;
|
||||
//sk->children.push_back(0,p_node); //avoid INFINITE loop
|
||||
|
|
|
@ -182,7 +182,7 @@ public:
|
|||
String base;
|
||||
bool use_idrefs = false;
|
||||
|
||||
Transform bind_shape;
|
||||
Transform3D bind_shape;
|
||||
|
||||
struct Source {
|
||||
Vector<String> sarray; //maybe for names
|
||||
|
@ -210,7 +210,7 @@ public:
|
|||
int count = 0;
|
||||
} weights;
|
||||
|
||||
Map<String, Transform> bone_rest_map;
|
||||
Map<String, Transform3D> bone_rest_map;
|
||||
|
||||
SkinControllerData() {}
|
||||
};
|
||||
|
@ -342,15 +342,15 @@ public:
|
|||
String empty_draw_type;
|
||||
bool noname = false;
|
||||
Vector<XForm> xform_list;
|
||||
Transform default_transform;
|
||||
Transform post_transform;
|
||||
Transform3D default_transform;
|
||||
Transform3D post_transform;
|
||||
Vector<Node *> children;
|
||||
|
||||
Node *parent = nullptr;
|
||||
|
||||
Transform compute_transform(Collada &state) const;
|
||||
Transform get_global_transform() const;
|
||||
Transform get_transform() const;
|
||||
Transform3D compute_transform(Collada &state) const;
|
||||
Transform3D get_global_transform() const;
|
||||
Transform3D get_transform() const;
|
||||
|
||||
bool ignore_anim = false;
|
||||
|
||||
|
@ -497,7 +497,7 @@ public:
|
|||
Map<String, String> sid_to_node_map;
|
||||
//Map<String,NodeJoint*> bone_map;
|
||||
|
||||
Map<String, Transform> bone_rest_map;
|
||||
Map<String, Transform3D> bone_rest_map;
|
||||
|
||||
String local_path;
|
||||
String root_visual_scene;
|
||||
|
@ -517,9 +517,9 @@ public:
|
|||
|
||||
Collada();
|
||||
|
||||
Transform fix_transform(const Transform &p_transform);
|
||||
Transform3D fix_transform(const Transform3D &p_transform);
|
||||
|
||||
Transform get_root_transform() const;
|
||||
Transform3D get_root_transform() const;
|
||||
|
||||
int get_uv_channel(String p_name);
|
||||
|
||||
|
@ -557,7 +557,7 @@ private: // private stuff
|
|||
Variant _parse_param(XMLParser &parser);
|
||||
Vector<float> _read_float_array(XMLParser &parser);
|
||||
Vector<String> _read_string_array(XMLParser &parser);
|
||||
Transform _read_transform(XMLParser &parser);
|
||||
Transform3D _read_transform(XMLParser &parser);
|
||||
String _read_empty_draw_type(XMLParser &parser);
|
||||
|
||||
void _joint_set_owner(Collada::Node *p_node, NodeSkeleton *p_owner);
|
||||
|
|
|
@ -87,7 +87,7 @@ struct ColladaImport {
|
|||
Error _create_scene(Collada::Node *p_node, Node3D *p_parent);
|
||||
Error _create_resources(Collada::Node *p_node, bool p_use_compression);
|
||||
Error _create_material(const String &p_target);
|
||||
Error _create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImporterMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<EditorSceneImporterMesh>> p_morph_meshes = Vector<Ref<EditorSceneImporterMesh>>(), bool p_use_compression = false, bool p_use_mesh_material = false);
|
||||
Error _create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImporterMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform3D &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<EditorSceneImporterMesh>> p_morph_meshes = Vector<Ref<EditorSceneImporterMesh>>(), bool p_use_compression = false, bool p_use_mesh_material = false);
|
||||
Error load(const String &p_path, int p_flags, bool p_force_make_tangents = false, bool p_use_compression = false);
|
||||
void _fix_param_animation_tracks();
|
||||
void create_animation(int p_clip, bool p_make_tracks_in_all_bones, bool p_import_value_tracks);
|
||||
|
@ -300,7 +300,7 @@ Error ColladaImport::_create_scene(Collada::Node *p_node, Node3D *p_parent) {
|
|||
nm.node = node;
|
||||
node_map[p_node->id] = nm;
|
||||
node_name_map[node->get_name()] = p_node->id;
|
||||
Transform xf = p_node->default_transform;
|
||||
Transform3D xf = p_node->default_transform;
|
||||
|
||||
xf = collada.fix_transform(xf) * p_node->post_transform;
|
||||
node->set_transform(xf);
|
||||
|
@ -457,7 +457,7 @@ Error ColladaImport::_create_material(const String &p_target) {
|
|||
return OK;
|
||||
}
|
||||
|
||||
Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImporterMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<EditorSceneImporterMesh>> p_morph_meshes, bool p_use_compression, bool p_use_mesh_material) {
|
||||
Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImporterMesh> &p_mesh, const Map<String, Collada::NodeGeometry::Material> &p_material_map, const Collada::MeshData &meshdata, const Transform3D &p_local_xform, const Vector<int> &bone_remap, const Collada::SkinControllerData *p_skin_controller, const Collada::MorphControllerData *p_morph_data, Vector<Ref<EditorSceneImporterMesh>> p_morph_meshes, bool p_use_compression, bool p_use_mesh_material) {
|
||||
bool local_xform_mirror = p_local_xform.basis.determinant() < 0;
|
||||
|
||||
if (p_morph_data) {
|
||||
|
@ -811,7 +811,7 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImpor
|
|||
|
||||
if (has_weights) {
|
||||
//if skeleton, localize
|
||||
Transform local_xform = p_local_xform;
|
||||
Transform3D local_xform = p_local_xform;
|
||||
for (int i = 0; i < vertex_array.size(); i++) {
|
||||
vertex_array.write[i].vertex = local_xform.xform(vertex_array[i].vertex);
|
||||
vertex_array.write[i].normal = local_xform.basis.xform(vertex_array[i].normal).normalized();
|
||||
|
@ -1037,7 +1037,7 @@ Error ColladaImport::_create_resources(Collada::Node *p_node, bool p_use_compres
|
|||
Collada::SkinControllerData *skin = nullptr;
|
||||
Collada::MorphControllerData *morph = nullptr;
|
||||
String meshid;
|
||||
Transform apply_xform;
|
||||
Transform3D apply_xform;
|
||||
Vector<int> bone_remap;
|
||||
Vector<Ref<EditorSceneImporterMesh>> morphs;
|
||||
|
||||
|
@ -1073,9 +1073,9 @@ Error ColladaImport::_create_resources(Collada::Node *p_node, bool p_use_compres
|
|||
|
||||
if (apply_mesh_xform_to_vertices) {
|
||||
apply_xform = collada.fix_transform(p_node->default_transform);
|
||||
node->set_transform(Transform());
|
||||
node->set_transform(Transform3D());
|
||||
} else {
|
||||
apply_xform = Transform();
|
||||
apply_xform = Transform3D();
|
||||
}
|
||||
|
||||
ERR_FAIL_COND_V(!skin->weights.sources.has("JOINT"), ERR_INVALID_DATA);
|
||||
|
@ -1530,7 +1530,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
|
|||
}
|
||||
}
|
||||
|
||||
Transform xform = cn->compute_transform(collada);
|
||||
Transform3D xform = cn->compute_transform(collada);
|
||||
xform = collada.fix_transform(xform) * cn->post_transform;
|
||||
|
||||
if (nm.bone >= 0) {
|
||||
|
@ -1589,7 +1589,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
|
|||
animation->track_set_path(track, path);
|
||||
animation->track_set_imported(track, true); //helps merging later
|
||||
|
||||
Transform xform = cn->compute_transform(collada);
|
||||
Transform3D xform = cn->compute_transform(collada);
|
||||
xform = collada.fix_transform(xform) * cn->post_transform;
|
||||
|
||||
xform = sk->get_bone_rest(nm.bone).affine_inverse() * xform;
|
||||
|
|
|
@ -433,7 +433,7 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, Map<Ref<E
|
|||
p_node->replace_by(rigid_body);
|
||||
rigid_body->set_transform(mi->get_transform());
|
||||
p_node = rigid_body;
|
||||
mi->set_transform(Transform());
|
||||
mi->set_transform(Transform3D());
|
||||
rigid_body->add_child(mi);
|
||||
mi->set_owner(rigid_body->get_owner());
|
||||
|
||||
|
@ -632,7 +632,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
|
|||
p_node->replace_by(rigid_body);
|
||||
rigid_body->set_transform(mi->get_transform());
|
||||
p_node = rigid_body;
|
||||
mi->set_transform(Transform());
|
||||
mi->set_transform(Transform3D());
|
||||
rigid_body->add_child(mi);
|
||||
mi->set_owner(rigid_body->get_owner());
|
||||
base = rigid_body;
|
||||
|
@ -1209,7 +1209,7 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
|
|||
}
|
||||
|
||||
if (bake_lightmaps) {
|
||||
Transform xf;
|
||||
Transform3D xf;
|
||||
Node3D *n = src_mesh_node;
|
||||
while (n) {
|
||||
xf = n->get_transform() * xf;
|
||||
|
|
|
@ -317,7 +317,7 @@ void SceneImportSettings::_fill_scene(Node *p_node, TreeItem *p_parent_item) {
|
|||
if (mesh_node && mesh_node->get_mesh().is_valid()) {
|
||||
_fill_mesh(scene_tree, mesh_node->get_mesh(), item);
|
||||
|
||||
Transform accum_xform;
|
||||
Transform3D accum_xform;
|
||||
Node3D *base = mesh_node;
|
||||
while (base) {
|
||||
accum_xform = base->get_transform() * accum_xform;
|
||||
|
@ -379,7 +379,7 @@ void SceneImportSettings::_update_camera() {
|
|||
|
||||
camera->set_orthogonal(camera_size * zoom, 0.0001, camera_size * 2);
|
||||
|
||||
Transform xf;
|
||||
Transform3D xf;
|
||||
xf.basis = Basis(Vector3(0, 1, 0), rot_y) * Basis(Vector3(1, 0, 0), rot_x);
|
||||
xf.origin = center;
|
||||
xf.translate(0, 0, camera_size);
|
||||
|
@ -493,7 +493,7 @@ void SceneImportSettings::_select(Tree *p_from, String p_type, String p_id) {
|
|||
Ref<Mesh> base_mesh = mi->get_mesh();
|
||||
if (base_mesh.is_valid()) {
|
||||
AABB aabb = base_mesh->get_aabb();
|
||||
Transform aabb_xf;
|
||||
Transform3D aabb_xf;
|
||||
aabb_xf.basis.scale(aabb.size);
|
||||
aabb_xf.origin = aabb.position;
|
||||
|
||||
|
@ -1099,7 +1099,7 @@ SceneImportSettings::SceneImportSettings() {
|
|||
camera->make_current();
|
||||
|
||||
light = memnew(DirectionalLight3D);
|
||||
light->set_transform(Transform().looking_at(Vector3(-1, -2, -0.6), Vector3(0, 1, 0)));
|
||||
light->set_transform(Transform3D().looking_at(Vector3(-1, -2, -0.6), Vector3(0, 1, 0)));
|
||||
base_viewport->add_child(light);
|
||||
light->set_shadow(true);
|
||||
|
||||
|
|
|
@ -612,7 +612,7 @@ struct EditorSceneImporterMeshLightmapSurface {
|
|||
String name;
|
||||
};
|
||||
|
||||
Error EditorSceneImporterMesh::lightmap_unwrap_cached(const Transform &p_base_transform, float p_texel_size, const Vector<uint8_t> &p_src_cache, Vector<uint8_t> &r_dst_cache) {
|
||||
Error EditorSceneImporterMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform, float p_texel_size, const Vector<uint8_t> &p_src_cache, Vector<uint8_t> &r_dst_cache) {
|
||||
ERR_FAIL_COND_V(!array_mesh_lightmap_unwrap_callback, ERR_UNCONFIGURED);
|
||||
ERR_FAIL_COND_V_MSG(blend_shapes.size() != 0, ERR_UNAVAILABLE, "Can't unwrap mesh with blend shapes.");
|
||||
|
||||
|
@ -628,7 +628,7 @@ Error EditorSceneImporterMesh::lightmap_unwrap_cached(const Transform &p_base_tr
|
|||
Basis basis = p_base_transform.get_basis();
|
||||
Vector3 scale = Vector3(basis.get_axis(0).length(), basis.get_axis(1).length(), basis.get_axis(2).length());
|
||||
|
||||
Transform transform;
|
||||
Transform3D transform;
|
||||
transform.scale(scale);
|
||||
|
||||
Basis normal_basis = transform.basis.inverse().transposed();
|
||||
|
|
|
@ -106,7 +106,7 @@ public:
|
|||
Vector<Ref<Shape3D>> convex_decompose() const;
|
||||
Ref<Shape3D> create_trimesh_shape() const;
|
||||
Ref<NavigationMesh> create_navigation_mesh();
|
||||
Error lightmap_unwrap_cached(const Transform &p_base_transform, float p_texel_size, const Vector<uint8_t> &p_src_cache, Vector<uint8_t> &r_dst_cache);
|
||||
Error lightmap_unwrap_cached(const Transform3D &p_base_transform, float p_texel_size, const Vector<uint8_t> &p_src_cache, Vector<uint8_t> &r_dst_cache);
|
||||
|
||||
void set_lightmap_size_hint(const Size2i &p_size);
|
||||
Size2i get_lightmap_size_hint() const;
|
||||
|
|
|
@ -313,7 +313,7 @@ void InspectorDock::_property_keyed(const String &p_keyed, const Variant &p_valu
|
|||
AnimationPlayerEditor::singleton->get_track_editor()->insert_value_key(p_keyed, p_value, p_advance);
|
||||
}
|
||||
|
||||
void InspectorDock::_transform_keyed(Object *sp, const String &p_sub, const Transform &p_key) {
|
||||
void InspectorDock::_transform_keyed(Object *sp, const String &p_sub, const Transform3D &p_key) {
|
||||
Node3D *s = Object::cast_to<Node3D>(sp);
|
||||
if (!s) {
|
||||
return;
|
||||
|
|
|
@ -112,7 +112,7 @@ class InspectorDock : public VBoxContainer {
|
|||
void _prepare_history();
|
||||
|
||||
void _property_keyed(const String &p_keyed, const Variant &p_value, bool p_advance);
|
||||
void _transform_keyed(Object *sp, const String &p_sub, const Transform &p_key);
|
||||
void _transform_keyed(Object *sp, const String &p_sub, const Transform3D &p_key);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
|
|
@ -455,7 +455,7 @@ bool EditorNode3DGizmo::intersect_frustum(const Camera3D *p_camera, const Vector
|
|||
|
||||
int vc = collision_segments.size();
|
||||
const Vector3 *vptr = collision_segments.ptr();
|
||||
Transform t = spatial_node->get_global_transform();
|
||||
Transform3D t = spatial_node->get_global_transform();
|
||||
|
||||
bool any_out = false;
|
||||
for (int j = 0; j < fc; j++) {
|
||||
|
@ -477,12 +477,12 @@ bool EditorNode3DGizmo::intersect_frustum(const Camera3D *p_camera, const Vector
|
|||
}
|
||||
|
||||
if (collision_mesh.is_valid()) {
|
||||
Transform t = spatial_node->get_global_transform();
|
||||
Transform3D t = spatial_node->get_global_transform();
|
||||
|
||||
Vector3 mesh_scale = t.get_basis().get_scale();
|
||||
t.orthonormalize();
|
||||
|
||||
Transform it = t.affine_inverse();
|
||||
Transform3D it = t.affine_inverse();
|
||||
|
||||
Vector<Plane> transformed_frustum;
|
||||
|
||||
|
@ -508,7 +508,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
|
|||
}
|
||||
|
||||
if (r_gizmo_handle && !hidden) {
|
||||
Transform t = spatial_node->get_global_transform();
|
||||
Transform3D t = spatial_node->get_global_transform();
|
||||
if (billboard_handle) {
|
||||
t.set_look_at(t.origin, t.origin - p_camera->get_transform().basis.get_axis(2), p_camera->get_transform().basis.get_axis(1));
|
||||
}
|
||||
|
@ -560,7 +560,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
|
|||
}
|
||||
|
||||
if (selectable_icon_size > 0.0f) {
|
||||
Transform t = spatial_node->get_global_transform();
|
||||
Transform3D t = spatial_node->get_global_transform();
|
||||
Vector3 camera_position = p_camera->get_camera_transform().origin;
|
||||
if (camera_position.distance_squared_to(t.origin) > 0.01) {
|
||||
t.set_look_at(t.origin, camera_position);
|
||||
|
@ -576,7 +576,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
|
|||
|
||||
Point2 center = p_camera->unproject_position(t.origin);
|
||||
|
||||
Transform orig_camera_transform = p_camera->get_camera_transform();
|
||||
Transform3D orig_camera_transform = p_camera->get_camera_transform();
|
||||
|
||||
if (orig_camera_transform.origin.distance_squared_to(t.origin) > 0.01 &&
|
||||
ABS(orig_camera_transform.basis.get_axis(Vector3::AXIS_Z).dot(Vector3(0, 1, 0))) < 0.99) {
|
||||
|
@ -609,7 +609,7 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
|
|||
|
||||
int vc = collision_segments.size();
|
||||
const Vector3 *vptr = collision_segments.ptr();
|
||||
Transform t = spatial_node->get_global_transform();
|
||||
Transform3D t = spatial_node->get_global_transform();
|
||||
if (billboard_handle) {
|
||||
t.set_look_at(t.origin, t.origin - p_camera->get_transform().basis.get_axis(2), p_camera->get_transform().basis.get_axis(1));
|
||||
}
|
||||
|
@ -657,13 +657,13 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
|
|||
}
|
||||
|
||||
if (collision_mesh.is_valid()) {
|
||||
Transform gt = spatial_node->get_global_transform();
|
||||
Transform3D gt = spatial_node->get_global_transform();
|
||||
|
||||
if (billboard_handle) {
|
||||
gt.set_look_at(gt.origin, gt.origin - p_camera->get_transform().basis.get_axis(2), p_camera->get_transform().basis.get_axis(1));
|
||||
}
|
||||
|
||||
Transform ai = gt.affine_inverse();
|
||||
Transform3D ai = gt.affine_inverse();
|
||||
Vector3 ray_from = ai.xform(p_camera->project_ray_origin(p_point));
|
||||
Vector3 ray_dir = ai.basis.xform(p_camera->project_ray_normal(p_point)).normalized();
|
||||
Vector3 rpos, rnorm;
|
||||
|
@ -826,7 +826,7 @@ Variant Light3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_i
|
|||
return Variant();
|
||||
}
|
||||
|
||||
static float _find_closest_angle_to_half_pi_arc(const Vector3 &p_from, const Vector3 &p_to, float p_arc_radius, const Transform &p_arc_xform) {
|
||||
static float _find_closest_angle_to_half_pi_arc(const Vector3 &p_from, const Vector3 &p_to, float p_arc_radius, const Transform3D &p_arc_xform) {
|
||||
//bleh, discrete is simpler
|
||||
static const int arc_test_points = 64;
|
||||
float min_d = 1e20;
|
||||
|
@ -855,8 +855,8 @@ static float _find_closest_angle_to_half_pi_arc(const Vector3 &p_from, const Vec
|
|||
|
||||
void Light3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
Light3D *light = Object::cast_to<Light3D>(p_gizmo->get_spatial_node());
|
||||
Transform gt = light->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = light->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
@ -1084,8 +1084,8 @@ Variant AudioStreamPlayer3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gi
|
|||
void AudioStreamPlayer3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
AudioStreamPlayer3D *player = Object::cast_to<AudioStreamPlayer3D>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = player->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = player->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
@ -1230,8 +1230,8 @@ Variant Camera3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_
|
|||
void Camera3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
Camera3D *camera = Object::cast_to<Camera3D>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = camera->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = camera->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
@ -1239,7 +1239,7 @@ void Camera3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Came
|
|||
Vector3 s[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 4096) };
|
||||
|
||||
if (camera->get_projection() == Camera3D::PROJECTION_PERSPECTIVE) {
|
||||
Transform gt2 = camera->get_global_transform();
|
||||
Transform3D gt2 = camera->get_global_transform();
|
||||
float a = _find_closest_angle_to_half_pi_arc(s[0], s[1], 1.0, gt2);
|
||||
camera->set("fov", CLAMP(a * 2.0, 1, 179));
|
||||
} else {
|
||||
|
@ -1418,7 +1418,7 @@ void Camera3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
lines.push_back(cam_pos);
|
||||
}
|
||||
|
||||
Transform local = camera->get_global_transform().affine_inverse();
|
||||
Transform3D local = camera->get_global_transform().affine_inverse();
|
||||
for (int i = 0; i < lines.size(); i++) {
|
||||
lines.write[i] = local.xform(lines[i]);
|
||||
}
|
||||
|
@ -1617,7 +1617,7 @@ void Skeleton3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
|
||||
surface_tool->begin(Mesh::PRIMITIVE_LINES);
|
||||
surface_tool->set_material(material);
|
||||
Vector<Transform> grests;
|
||||
Vector<Transform3D> grests;
|
||||
grests.resize(skel->get_bone_count());
|
||||
|
||||
Vector<int> bones;
|
||||
|
@ -1749,7 +1749,7 @@ void Skeleton3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
bones.write[0] = i;
|
||||
}
|
||||
/*
|
||||
Transform t = grests[i];
|
||||
Transform3D t = grests[i];
|
||||
t.orthonormalize();
|
||||
|
||||
for (int i=0;i<6;i++) {
|
||||
|
@ -2196,9 +2196,9 @@ Variant VisibilityNotifier3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_g
|
|||
void VisibilityNotifier3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
VisibilityNotifier3D *notifier = Object::cast_to<VisibilityNotifier3D>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = notifier->get_global_transform();
|
||||
Transform3D gt = notifier->get_global_transform();
|
||||
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
bool move = p_idx >= 3;
|
||||
p_idx = p_idx % 3;
|
||||
|
@ -2388,8 +2388,8 @@ Variant GPUParticles3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo,
|
|||
void GPUParticles3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
GPUParticles3D *particles = Object::cast_to<GPUParticles3D>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = particles->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = particles->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
bool move = p_idx >= 3;
|
||||
p_idx = p_idx % 3;
|
||||
|
@ -2555,8 +2555,8 @@ Variant GPUParticlesCollision3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *
|
|||
void GPUParticlesCollision3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
Node3D *sn = p_gizmo->get_spatial_node();
|
||||
|
||||
Transform gt = sn->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = sn->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
@ -2814,9 +2814,9 @@ Variant ReflectionProbeGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo,
|
|||
|
||||
void ReflectionProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
ReflectionProbe *probe = Object::cast_to<ReflectionProbe>(p_gizmo->get_spatial_node());
|
||||
Transform gt = probe->get_global_transform();
|
||||
Transform3D gt = probe->get_global_transform();
|
||||
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
if (p_idx < 3) {
|
||||
Vector3 extents = probe->get_extents();
|
||||
|
@ -2993,9 +2993,9 @@ Variant DecalGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx
|
|||
|
||||
void DecalGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
Decal *decal = Object::cast_to<Decal>(p_gizmo->get_spatial_node());
|
||||
Transform gt = decal->get_global_transform();
|
||||
Transform3D gt = decal->get_global_transform();
|
||||
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 extents = decal->get_extents();
|
||||
|
||||
|
@ -3135,8 +3135,8 @@ Variant GIProbeGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_i
|
|||
void GIProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
GIProbe *probe = Object::cast_to<GIProbe>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = probe->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = probe->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 extents = probe->get_extents();
|
||||
|
||||
|
@ -3583,7 +3583,7 @@ void CollisionObject3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
co->get_shape_owners(&owners);
|
||||
for (List<uint32_t>::Element *E = owners.front(); E; E = E->next()) {
|
||||
uint32_t owner_id = E->get();
|
||||
Transform xform = co->shape_owner_get_transform(owner_id);
|
||||
Transform3D xform = co->shape_owner_get_transform(owner_id);
|
||||
Object *owner = co->shape_owner_get_owner(owner_id);
|
||||
// Exclude CollisionShape3D and CollisionPolygon3D as they have their gizmo.
|
||||
if (!Object::cast_to<CollisionShape3D>(owner) && !Object::cast_to<CollisionPolygon3D>(owner)) {
|
||||
|
@ -3701,8 +3701,8 @@ void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_i
|
|||
return;
|
||||
}
|
||||
|
||||
Transform gt = cs->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = cs->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
@ -4369,7 +4369,7 @@ void NavigationRegion3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
#define BODY_A_RADIUS 0.25
|
||||
#define BODY_B_RADIUS 0.27
|
||||
|
||||
Basis JointGizmosDrawer::look_body(const Transform &p_joint_transform, const Transform &p_body_transform) {
|
||||
Basis JointGizmosDrawer::look_body(const Transform3D &p_joint_transform, const Transform3D &p_body_transform) {
|
||||
const Vector3 &p_eye(p_joint_transform.origin);
|
||||
const Vector3 &p_target(p_body_transform.origin);
|
||||
|
||||
|
@ -4394,7 +4394,7 @@ Basis JointGizmosDrawer::look_body(const Transform &p_joint_transform, const Tra
|
|||
return base;
|
||||
}
|
||||
|
||||
Basis JointGizmosDrawer::look_body_toward(Vector3::Axis p_axis, const Transform &joint_transform, const Transform &body_transform) {
|
||||
Basis JointGizmosDrawer::look_body_toward(Vector3::Axis p_axis, const Transform3D &joint_transform, const Transform3D &body_transform) {
|
||||
switch (p_axis) {
|
||||
case Vector3::AXIS_X:
|
||||
return look_body_toward_x(joint_transform, body_transform);
|
||||
|
@ -4407,7 +4407,7 @@ Basis JointGizmosDrawer::look_body_toward(Vector3::Axis p_axis, const Transform
|
|||
}
|
||||
}
|
||||
|
||||
Basis JointGizmosDrawer::look_body_toward_x(const Transform &p_joint_transform, const Transform &p_body_transform) {
|
||||
Basis JointGizmosDrawer::look_body_toward_x(const Transform3D &p_joint_transform, const Transform3D &p_body_transform) {
|
||||
const Vector3 &p_eye(p_joint_transform.origin);
|
||||
const Vector3 &p_target(p_body_transform.origin);
|
||||
|
||||
|
@ -4438,7 +4438,7 @@ Basis JointGizmosDrawer::look_body_toward_x(const Transform &p_joint_transform,
|
|||
return base;
|
||||
}
|
||||
|
||||
Basis JointGizmosDrawer::look_body_toward_y(const Transform &p_joint_transform, const Transform &p_body_transform) {
|
||||
Basis JointGizmosDrawer::look_body_toward_y(const Transform3D &p_joint_transform, const Transform3D &p_body_transform) {
|
||||
const Vector3 &p_eye(p_joint_transform.origin);
|
||||
const Vector3 &p_target(p_body_transform.origin);
|
||||
|
||||
|
@ -4469,7 +4469,7 @@ Basis JointGizmosDrawer::look_body_toward_y(const Transform &p_joint_transform,
|
|||
return base;
|
||||
}
|
||||
|
||||
Basis JointGizmosDrawer::look_body_toward_z(const Transform &p_joint_transform, const Transform &p_body_transform) {
|
||||
Basis JointGizmosDrawer::look_body_toward_z(const Transform3D &p_joint_transform, const Transform3D &p_body_transform) {
|
||||
const Vector3 &p_eye(p_joint_transform.origin);
|
||||
const Vector3 &p_target(p_body_transform.origin);
|
||||
|
||||
|
@ -4500,7 +4500,7 @@ Basis JointGizmosDrawer::look_body_toward_z(const Transform &p_joint_transform,
|
|||
return base;
|
||||
}
|
||||
|
||||
void JointGizmosDrawer::draw_circle(Vector3::Axis p_axis, real_t p_radius, const Transform &p_offset, const Basis &p_base, real_t p_limit_lower, real_t p_limit_upper, Vector<Vector3> &r_points, bool p_inverse) {
|
||||
void JointGizmosDrawer::draw_circle(Vector3::Axis p_axis, real_t p_radius, const Transform3D &p_offset, const Basis &p_base, real_t p_limit_lower, real_t p_limit_upper, Vector<Vector3> &r_points, bool p_inverse) {
|
||||
if (p_limit_lower == p_limit_upper) {
|
||||
r_points.push_back(p_offset.translated(Vector3()).origin);
|
||||
r_points.push_back(p_offset.translated(p_base.xform(Vector3(0.5, 0, 0))).origin);
|
||||
|
@ -4562,7 +4562,7 @@ void JointGizmosDrawer::draw_circle(Vector3::Axis p_axis, real_t p_radius, const
|
|||
}
|
||||
}
|
||||
|
||||
void JointGizmosDrawer::draw_cone(const Transform &p_offset, const Basis &p_base, real_t p_swing, real_t p_twist, Vector<Vector3> &r_points) {
|
||||
void JointGizmosDrawer::draw_cone(const Transform3D &p_offset, const Basis &p_base, real_t p_swing, real_t p_twist, Vector<Vector3> &r_points) {
|
||||
float r = 1.0;
|
||||
float w = r * Math::sin(p_swing);
|
||||
float d = r * Math::cos(p_swing);
|
||||
|
@ -4666,7 +4666,7 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
Vector<Vector3> body_b_points;
|
||||
|
||||
if (Object::cast_to<PinJoint3D>(joint)) {
|
||||
CreatePinJointGizmo(Transform(), points);
|
||||
CreatePinJointGizmo(Transform3D(), points);
|
||||
p_gizmo->add_collision_segments(points);
|
||||
p_gizmo->add_lines(points, common_material);
|
||||
}
|
||||
|
@ -4674,10 +4674,10 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
HingeJoint3D *hinge = Object::cast_to<HingeJoint3D>(joint);
|
||||
if (hinge) {
|
||||
CreateHingeJointGizmo(
|
||||
Transform(),
|
||||
Transform3D(),
|
||||
hinge->get_global_transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform3D(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform3D(),
|
||||
hinge->get_param(HingeJoint3D::PARAM_LIMIT_LOWER),
|
||||
hinge->get_param(HingeJoint3D::PARAM_LIMIT_UPPER),
|
||||
hinge->get_flag(HingeJoint3D::FLAG_USE_LIMIT),
|
||||
|
@ -4697,10 +4697,10 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
SliderJoint3D *slider = Object::cast_to<SliderJoint3D>(joint);
|
||||
if (slider) {
|
||||
CreateSliderJointGizmo(
|
||||
Transform(),
|
||||
Transform3D(),
|
||||
slider->get_global_transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform3D(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform3D(),
|
||||
slider->get_param(SliderJoint3D::PARAM_ANGULAR_LIMIT_LOWER),
|
||||
slider->get_param(SliderJoint3D::PARAM_ANGULAR_LIMIT_UPPER),
|
||||
slider->get_param(SliderJoint3D::PARAM_LINEAR_LIMIT_LOWER),
|
||||
|
@ -4721,10 +4721,10 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
ConeTwistJoint3D *cone = Object::cast_to<ConeTwistJoint3D>(joint);
|
||||
if (cone) {
|
||||
CreateConeTwistJointGizmo(
|
||||
Transform(),
|
||||
Transform3D(),
|
||||
cone->get_global_transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform3D(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform3D(),
|
||||
cone->get_param(ConeTwistJoint3D::PARAM_SWING_SPAN),
|
||||
cone->get_param(ConeTwistJoint3D::PARAM_TWIST_SPAN),
|
||||
node_body_a ? &body_a_points : nullptr,
|
||||
|
@ -4740,10 +4740,10 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
Generic6DOFJoint3D *gen = Object::cast_to<Generic6DOFJoint3D>(joint);
|
||||
if (gen) {
|
||||
CreateGeneric6DOFJointGizmo(
|
||||
Transform(),
|
||||
Transform3D(),
|
||||
gen->get_global_transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform(),
|
||||
node_body_a ? node_body_a->get_global_transform() : Transform3D(),
|
||||
node_body_b ? node_body_b->get_global_transform() : Transform3D(),
|
||||
|
||||
gen->get_param_x(Generic6DOFJoint3D::PARAM_ANGULAR_LOWER_LIMIT),
|
||||
gen->get_param_x(Generic6DOFJoint3D::PARAM_ANGULAR_UPPER_LIMIT),
|
||||
|
@ -4780,7 +4780,7 @@ void Joint3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
|
|||
}
|
||||
}
|
||||
|
||||
void Joint3DGizmoPlugin::CreatePinJointGizmo(const Transform &p_offset, Vector<Vector3> &r_cursor_points) {
|
||||
void Joint3DGizmoPlugin::CreatePinJointGizmo(const Transform3D &p_offset, Vector<Vector3> &r_cursor_points) {
|
||||
float cs = 0.25;
|
||||
|
||||
r_cursor_points.push_back(p_offset.translated(Vector3(+cs, 0, 0)).origin);
|
||||
|
@ -4791,7 +4791,7 @@ void Joint3DGizmoPlugin::CreatePinJointGizmo(const Transform &p_offset, Vector<V
|
|||
r_cursor_points.push_back(p_offset.translated(Vector3(0, 0, -cs)).origin);
|
||||
}
|
||||
|
||||
void Joint3DGizmoPlugin::CreateHingeJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_limit_lower, real_t p_limit_upper, bool p_use_limit, Vector<Vector3> &r_common_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
void Joint3DGizmoPlugin::CreateHingeJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_limit_lower, real_t p_limit_upper, bool p_use_limit, Vector<Vector3> &r_common_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
r_common_points.push_back(p_offset.translated(Vector3(0, 0, 0.5)).origin);
|
||||
r_common_points.push_back(p_offset.translated(Vector3(0, 0, -0.5)).origin);
|
||||
|
||||
|
@ -4821,7 +4821,7 @@ void Joint3DGizmoPlugin::CreateHingeJointGizmo(const Transform &p_offset, const
|
|||
}
|
||||
}
|
||||
|
||||
void Joint3DGizmoPlugin::CreateSliderJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_angular_limit_lower, real_t p_angular_limit_upper, real_t p_linear_limit_lower, real_t p_linear_limit_upper, Vector<Vector3> &r_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
void Joint3DGizmoPlugin::CreateSliderJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_angular_limit_lower, real_t p_angular_limit_upper, real_t p_linear_limit_lower, real_t p_linear_limit_upper, Vector<Vector3> &r_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
p_linear_limit_lower = -p_linear_limit_lower;
|
||||
p_linear_limit_upper = -p_linear_limit_upper;
|
||||
|
||||
|
@ -4880,7 +4880,7 @@ void Joint3DGizmoPlugin::CreateSliderJointGizmo(const Transform &p_offset, const
|
|||
}
|
||||
}
|
||||
|
||||
void Joint3DGizmoPlugin::CreateConeTwistJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_swing, real_t p_twist, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
void Joint3DGizmoPlugin::CreateConeTwistJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_swing, real_t p_twist, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points) {
|
||||
if (r_body_a_points) {
|
||||
JointGizmosDrawer::draw_cone(
|
||||
p_offset,
|
||||
|
@ -4901,10 +4901,10 @@ void Joint3DGizmoPlugin::CreateConeTwistJointGizmo(const Transform &p_offset, co
|
|||
}
|
||||
|
||||
void Joint3DGizmoPlugin::CreateGeneric6DOFJointGizmo(
|
||||
const Transform &p_offset,
|
||||
const Transform &p_trs_joint,
|
||||
const Transform &p_trs_body_a,
|
||||
const Transform &p_trs_body_b,
|
||||
const Transform3D &p_offset,
|
||||
const Transform3D &p_trs_joint,
|
||||
const Transform3D &p_trs_body_a,
|
||||
const Transform3D &p_trs_body_b,
|
||||
real_t p_angular_limit_lower_x,
|
||||
real_t p_angular_limit_upper_x,
|
||||
real_t p_linear_limit_lower_x,
|
||||
|
|
|
@ -428,17 +428,17 @@ public:
|
|||
|
||||
class JointGizmosDrawer {
|
||||
public:
|
||||
static Basis look_body(const Transform &p_joint_transform, const Transform &p_body_transform);
|
||||
static Basis look_body_toward(Vector3::Axis p_axis, const Transform &joint_transform, const Transform &body_transform);
|
||||
static Basis look_body_toward_x(const Transform &p_joint_transform, const Transform &p_body_transform);
|
||||
static Basis look_body_toward_y(const Transform &p_joint_transform, const Transform &p_body_transform);
|
||||
static Basis look_body(const Transform3D &p_joint_transform, const Transform3D &p_body_transform);
|
||||
static Basis look_body_toward(Vector3::Axis p_axis, const Transform3D &joint_transform, const Transform3D &body_transform);
|
||||
static Basis look_body_toward_x(const Transform3D &p_joint_transform, const Transform3D &p_body_transform);
|
||||
static Basis look_body_toward_y(const Transform3D &p_joint_transform, const Transform3D &p_body_transform);
|
||||
/// Special function just used for physics joints, it returns a basis constrained toward Joint Z axis
|
||||
/// with axis X and Y that are looking toward the body and oriented toward up
|
||||
static Basis look_body_toward_z(const Transform &p_joint_transform, const Transform &p_body_transform);
|
||||
static Basis look_body_toward_z(const Transform3D &p_joint_transform, const Transform3D &p_body_transform);
|
||||
|
||||
// Draw circle around p_axis
|
||||
static void draw_circle(Vector3::Axis p_axis, real_t p_radius, const Transform &p_offset, const Basis &p_base, real_t p_limit_lower, real_t p_limit_upper, Vector<Vector3> &r_points, bool p_inverse = false);
|
||||
static void draw_cone(const Transform &p_offset, const Basis &p_base, real_t p_swing, real_t p_twist, Vector<Vector3> &r_points);
|
||||
static void draw_circle(Vector3::Axis p_axis, real_t p_radius, const Transform3D &p_offset, const Basis &p_base, real_t p_limit_lower, real_t p_limit_upper, Vector<Vector3> &r_points, bool p_inverse = false);
|
||||
static void draw_cone(const Transform3D &p_offset, const Basis &p_base, real_t p_swing, real_t p_twist, Vector<Vector3> &r_points);
|
||||
};
|
||||
|
||||
class Joint3DGizmoPlugin : public EditorNode3DGizmoPlugin {
|
||||
|
@ -455,15 +455,15 @@ public:
|
|||
int get_priority() const override;
|
||||
void redraw(EditorNode3DGizmo *p_gizmo) override;
|
||||
|
||||
static void CreatePinJointGizmo(const Transform &p_offset, Vector<Vector3> &r_cursor_points);
|
||||
static void CreateHingeJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_limit_lower, real_t p_limit_upper, bool p_use_limit, Vector<Vector3> &r_common_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreateSliderJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_angular_limit_lower, real_t p_angular_limit_upper, real_t p_linear_limit_lower, real_t p_linear_limit_upper, Vector<Vector3> &r_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreateConeTwistJointGizmo(const Transform &p_offset, const Transform &p_trs_joint, const Transform &p_trs_body_a, const Transform &p_trs_body_b, real_t p_swing, real_t p_twist, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreatePinJointGizmo(const Transform3D &p_offset, Vector<Vector3> &r_cursor_points);
|
||||
static void CreateHingeJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_limit_lower, real_t p_limit_upper, bool p_use_limit, Vector<Vector3> &r_common_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreateSliderJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_angular_limit_lower, real_t p_angular_limit_upper, real_t p_linear_limit_lower, real_t p_linear_limit_upper, Vector<Vector3> &r_points, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreateConeTwistJointGizmo(const Transform3D &p_offset, const Transform3D &p_trs_joint, const Transform3D &p_trs_body_a, const Transform3D &p_trs_body_b, real_t p_swing, real_t p_twist, Vector<Vector3> *r_body_a_points, Vector<Vector3> *r_body_b_points);
|
||||
static void CreateGeneric6DOFJointGizmo(
|
||||
const Transform &p_offset,
|
||||
const Transform &p_trs_joint,
|
||||
const Transform &p_trs_body_a,
|
||||
const Transform &p_trs_body_b,
|
||||
const Transform3D &p_offset,
|
||||
const Transform3D &p_trs_joint,
|
||||
const Transform3D &p_trs_body_a,
|
||||
const Transform3D &p_trs_body_b,
|
||||
real_t p_angular_limit_lower_x,
|
||||
real_t p_angular_limit_upper_x,
|
||||
real_t p_linear_limit_lower_x,
|
||||
|
|
|
@ -108,8 +108,8 @@ bool CollisionPolygon3DEditor::forward_spatial_gui_input(Camera3D *p_camera, con
|
|||
return false;
|
||||
}
|
||||
|
||||
Transform gt = node->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = node->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
float depth = _get_depth() * 0.5;
|
||||
Vector3 n = gt.basis.get_axis(2).normalized();
|
||||
Plane p(gt.origin + n * depth, n);
|
||||
|
@ -516,7 +516,7 @@ CollisionPolygon3DEditor::CollisionPolygon3DEditor(EditorNode *p_editor) {
|
|||
mode = MODE_EDIT;
|
||||
wip_active = false;
|
||||
imgeom = memnew(ImmediateGeometry3D);
|
||||
imgeom->set_transform(Transform(Basis(), Vector3(0, 0, 0.00001)));
|
||||
imgeom->set_transform(Transform3D(Basis(), Vector3(0, 0, 0.00001)));
|
||||
|
||||
line_material = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
|
||||
line_material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
|
||||
|
@ -539,7 +539,7 @@ CollisionPolygon3DEditor::CollisionPolygon3DEditor(EditorNode *p_editor) {
|
|||
imgeom->add_child(pointsm);
|
||||
m.instance();
|
||||
pointsm->set_mesh(m);
|
||||
pointsm->set_transform(Transform(Basis(), Vector3(0, 0, 0.00001)));
|
||||
pointsm->set_transform(Transform3D(Basis(), Vector3(0, 0, 0.00001)));
|
||||
|
||||
snap_ignore = false;
|
||||
}
|
||||
|
|
|
@ -359,12 +359,12 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() {
|
|||
|
||||
camera = RS::get_singleton()->camera_create();
|
||||
RS::get_singleton()->viewport_attach_camera(viewport, camera);
|
||||
RS::get_singleton()->camera_set_transform(camera, Transform(Basis(), Vector3(0, 0, 3)));
|
||||
RS::get_singleton()->camera_set_transform(camera, Transform3D(Basis(), Vector3(0, 0, 3)));
|
||||
RS::get_singleton()->camera_set_perspective(camera, 45, 0.1, 10);
|
||||
|
||||
light = RS::get_singleton()->directional_light_create();
|
||||
light_instance = RS::get_singleton()->instance_create2(light, scenario);
|
||||
RS::get_singleton()->instance_set_transform(light_instance, Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance, Transform3D().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
|
||||
light2 = RS::get_singleton()->directional_light_create();
|
||||
RS::get_singleton()->light_set_color(light2, Color(0.7, 0.7, 0.7));
|
||||
|
@ -372,7 +372,7 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() {
|
|||
|
||||
light_instance2 = RS::get_singleton()->instance_create2(light2, scenario);
|
||||
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, Transform3D().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
|
||||
sphere = RS::get_singleton()->mesh_create();
|
||||
sphere_instance = RS::get_singleton()->instance_create2(sphere, scenario);
|
||||
|
@ -720,7 +720,7 @@ Ref<Texture2D> EditorMeshPreviewPlugin::generate(const RES &p_from, const Size2
|
|||
AABB aabb = mesh->get_aabb();
|
||||
Vector3 ofs = aabb.position + aabb.size * 0.5;
|
||||
aabb.position -= ofs;
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis = Basis().rotated(Vector3(0, 1, 0), -Math_PI * 0.125);
|
||||
xform.basis = Basis().rotated(Vector3(1, 0, 0), Math_PI * 0.125) * xform.basis;
|
||||
AABB rot_aabb = xform.xform(aabb);
|
||||
|
@ -780,20 +780,20 @@ EditorMeshPreviewPlugin::EditorMeshPreviewPlugin() {
|
|||
|
||||
camera = RS::get_singleton()->camera_create();
|
||||
RS::get_singleton()->viewport_attach_camera(viewport, camera);
|
||||
RS::get_singleton()->camera_set_transform(camera, Transform(Basis(), Vector3(0, 0, 3)));
|
||||
RS::get_singleton()->camera_set_transform(camera, Transform3D(Basis(), Vector3(0, 0, 3)));
|
||||
//RS::get_singleton()->camera_set_perspective(camera,45,0.1,10);
|
||||
RS::get_singleton()->camera_set_orthogonal(camera, 1.0, 0.01, 1000.0);
|
||||
|
||||
light = RS::get_singleton()->directional_light_create();
|
||||
light_instance = RS::get_singleton()->instance_create2(light, scenario);
|
||||
RS::get_singleton()->instance_set_transform(light_instance, Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance, Transform3D().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
|
||||
light2 = RS::get_singleton()->directional_light_create();
|
||||
RS::get_singleton()->light_set_color(light2, Color(0.7, 0.7, 0.7));
|
||||
//RS::get_singleton()->light_set_color(light2, RS::LIGHT_COLOR_SPECULAR, Color(0.0, 0.0, 0.0));
|
||||
light_instance2 = RS::get_singleton()->instance_create2(light2, scenario);
|
||||
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
RS::get_singleton()->instance_set_transform(light_instance2, Transform3D().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
|
||||
//sphere = RS::get_singleton()->mesh_create();
|
||||
mesh_instance = RS::get_singleton()->instance_create();
|
||||
|
|
|
@ -177,7 +177,7 @@ void GPUParticles3DEditorBase::_node_selected(const NodePath &p_path) {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform geom_xform = base_node->get_global_transform().affine_inverse() * vi->get_global_transform();
|
||||
Transform3D geom_xform = base_node->get_global_transform().affine_inverse() * vi->get_global_transform();
|
||||
|
||||
int gc = geometry.size();
|
||||
Face3 *w = geometry.ptrw();
|
||||
|
|
|
@ -119,17 +119,17 @@ MaterialEditor::MaterialEditor() {
|
|||
viewport->set_msaa(Viewport::MSAA_4X);
|
||||
|
||||
camera = memnew(Camera3D);
|
||||
camera->set_transform(Transform(Basis(), Vector3(0, 0, 3)));
|
||||
camera->set_transform(Transform3D(Basis(), Vector3(0, 0, 3)));
|
||||
camera->set_perspective(45, 0.1, 10);
|
||||
camera->make_current();
|
||||
viewport->add_child(camera);
|
||||
|
||||
light1 = memnew(DirectionalLight3D);
|
||||
light1->set_transform(Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
light1->set_transform(Transform3D().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
viewport->add_child(light1);
|
||||
|
||||
light2 = memnew(DirectionalLight3D);
|
||||
light2->set_transform(Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
light2->set_transform(Transform3D().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
light2->set_color(Color(0.7, 0.7, 0.7));
|
||||
viewport->add_child(light2);
|
||||
|
||||
|
@ -139,7 +139,7 @@ MaterialEditor::MaterialEditor() {
|
|||
box_instance = memnew(MeshInstance3D);
|
||||
viewport->add_child(box_instance);
|
||||
|
||||
Transform box_xform;
|
||||
Transform3D box_xform;
|
||||
box_xform.basis.rotate(Vector3(1, 0, 0), Math::deg2rad(25.0));
|
||||
box_xform.basis = box_xform.basis * Basis().rotated(Vector3(0, 1, 0), Math::deg2rad(-25.0));
|
||||
box_xform.basis.scale(Vector3(0.8, 0.8, 0.8));
|
||||
|
|
|
@ -65,7 +65,7 @@ void MeshEditor::_notification(int p_what) {
|
|||
}
|
||||
|
||||
void MeshEditor::_update_rotation() {
|
||||
Transform t;
|
||||
Transform3D t;
|
||||
t.basis.rotate(Vector3(0, 1, 0), -rot_y);
|
||||
t.basis.rotate(Vector3(1, 0, 0), -rot_x);
|
||||
rotation->set_transform(t);
|
||||
|
@ -85,7 +85,7 @@ void MeshEditor::edit(Ref<Mesh> p_mesh) {
|
|||
if (m != 0) {
|
||||
m = 1.0 / m;
|
||||
m *= 0.5;
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis.scale(Vector3(m, m, m));
|
||||
xform.origin = -xform.basis.xform(ofs); //-ofs*m;
|
||||
//xform.origin.z -= aabb.get_longest_axis_size() * 2;
|
||||
|
@ -117,16 +117,16 @@ MeshEditor::MeshEditor() {
|
|||
viewport->set_msaa(Viewport::MSAA_2X);
|
||||
set_stretch(true);
|
||||
camera = memnew(Camera3D);
|
||||
camera->set_transform(Transform(Basis(), Vector3(0, 0, 1.1)));
|
||||
camera->set_transform(Transform3D(Basis(), Vector3(0, 0, 1.1)));
|
||||
camera->set_perspective(45, 0.1, 10);
|
||||
viewport->add_child(camera);
|
||||
|
||||
light1 = memnew(DirectionalLight3D);
|
||||
light1->set_transform(Transform().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
light1->set_transform(Transform3D().looking_at(Vector3(-1, -1, -1), Vector3(0, 1, 0)));
|
||||
viewport->add_child(light1);
|
||||
|
||||
light2 = memnew(DirectionalLight3D);
|
||||
light2->set_transform(Transform().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
light2->set_transform(Transform3D().looking_at(Vector3(0, 1, 0), Vector3(0, 0, 1)));
|
||||
light2->set_color(Color(0.7, 0.7, 0.7));
|
||||
viewport->add_child(light2);
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
|
|||
continue;
|
||||
}
|
||||
|
||||
//Transform shape_transform = sb->shape_owner_get_transform(E->get());
|
||||
//Transform3D shape_transform = sb->shape_owner_get_transform(E->get());
|
||||
|
||||
//shape_transform.set_origin(shape_transform.get_origin() - phys_offset);
|
||||
|
||||
|
@ -147,7 +147,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
|
|||
p_library->set_item_shapes(id, collisions);
|
||||
|
||||
Ref<NavigationMesh> navmesh;
|
||||
Transform navmesh_transform;
|
||||
Transform3D navmesh_transform;
|
||||
for (int j = 0; j < mi->get_child_count(); j++) {
|
||||
Node *child2 = mi->get_child(j);
|
||||
if (!Object::cast_to<NavigationRegion3D>(child2)) {
|
||||
|
@ -170,7 +170,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
|
|||
|
||||
if (true) {
|
||||
Vector<Ref<Mesh>> meshes;
|
||||
Vector<Transform> transforms;
|
||||
Vector<Transform3D> transforms;
|
||||
Vector<int> ids = p_library->get_item_list();
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
if (mesh_instances.find(ids[i])) {
|
||||
|
|
|
@ -111,7 +111,7 @@ void MultiMeshEditor::_populate() {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform geom_xform = node->get_global_transform().affine_inverse() * ss_instance->get_global_transform();
|
||||
Transform3D geom_xform = node->get_global_transform().affine_inverse() * ss_instance->get_global_transform();
|
||||
|
||||
Vector<Face3> geometry = ss_instance->get_faces(VisualInstance3D::FACES_SOLID);
|
||||
|
||||
|
@ -167,7 +167,7 @@ void MultiMeshEditor::_populate() {
|
|||
float _scale = populate_scale->get_value();
|
||||
int axis = populate_axis->get_selected();
|
||||
|
||||
Transform axis_xform;
|
||||
Transform3D axis_xform;
|
||||
if (axis == Vector3::AXIS_Z) {
|
||||
axis_xform.rotate(Vector3(1, 0, 0), -Math_PI * 0.5);
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ void MultiMeshEditor::_populate() {
|
|||
Vector3 normal = face.get_plane().normal;
|
||||
Vector3 op_axis = (face.vertex[0] - face.vertex[1]).normalized();
|
||||
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
|
||||
xform.set_look_at(pos, pos + op_axis, normal);
|
||||
xform = xform * axis_xform;
|
||||
|
|
|
@ -361,8 +361,8 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
|
|||
}
|
||||
}
|
||||
|
||||
Transform Node3DEditorViewport::to_camera_transform(const Cursor &p_cursor) const {
|
||||
Transform camera_transform;
|
||||
Transform3D Node3DEditorViewport::to_camera_transform(const Cursor &p_cursor) const {
|
||||
Transform3D camera_transform;
|
||||
camera_transform.translate(p_cursor.pos);
|
||||
camera_transform.basis.rotate(Vector3(1, 0, 0), -p_cursor.x_rot);
|
||||
camera_transform.basis.rotate(Vector3(0, 1, 0), -p_cursor.y_rot);
|
||||
|
@ -410,7 +410,7 @@ float Node3DEditorViewport::get_fov() const {
|
|||
return CLAMP(spatial_editor->get_fov(), MIN_FOV, MAX_FOV);
|
||||
}
|
||||
|
||||
Transform Node3DEditorViewport::_get_camera_transform() const {
|
||||
Transform3D Node3DEditorViewport::_get_camera_transform() const {
|
||||
return camera->get_global_transform();
|
||||
}
|
||||
|
||||
|
@ -631,7 +631,7 @@ Vector3 Node3DEditorViewport::_get_screen_to_space(const Vector3 &p_vector3) {
|
|||
}
|
||||
Vector2 screen_he = cm.get_viewport_half_extents();
|
||||
|
||||
Transform camera_transform;
|
||||
Transform3D camera_transform;
|
||||
camera_transform.translate(cursor.pos);
|
||||
camera_transform.basis.rotate(Vector3(1, 0, 0), -cursor.x_rot);
|
||||
camera_transform.basis.rotate(Vector3(0, 1, 0), -cursor.y_rot);
|
||||
|
@ -829,7 +829,7 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
|
|||
Vector3 ray_pos = _get_ray_pos(Vector2(p_screenpos.x, p_screenpos.y));
|
||||
Vector3 ray = _get_ray(Vector2(p_screenpos.x, p_screenpos.y));
|
||||
|
||||
Transform gt = spatial_editor->get_gizmo_transform();
|
||||
Transform3D gt = spatial_editor->get_gizmo_transform();
|
||||
float gs = gizmo_scale;
|
||||
|
||||
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
|
||||
|
@ -1579,10 +1579,10 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform original = se->original;
|
||||
Transform original_local = se->original_local;
|
||||
Transform base = Transform(Basis(), _edit.center);
|
||||
Transform t;
|
||||
Transform3D original = se->original;
|
||||
Transform3D original_local = se->original_local;
|
||||
Transform3D base = Transform3D(Basis(), _edit.center);
|
||||
Transform3D t;
|
||||
Vector3 local_scale;
|
||||
|
||||
if (local_coords) {
|
||||
|
@ -1608,7 +1608,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
motion.snap(Vector3(snap, snap, snap));
|
||||
}
|
||||
|
||||
Transform r;
|
||||
Transform3D r;
|
||||
r.basis.scale(motion + Vector3(1, 1, 1));
|
||||
t = base * (r * (base.inverse() * original));
|
||||
|
||||
|
@ -1701,8 +1701,8 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform original = se->original;
|
||||
Transform t;
|
||||
Transform3D original = se->original;
|
||||
Transform3D t;
|
||||
|
||||
if (local_coords) {
|
||||
if (_edit.snap || spatial_editor->is_snap_enabled()) {
|
||||
|
@ -1797,10 +1797,10 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform t;
|
||||
Transform3D t;
|
||||
|
||||
if (local_coords) {
|
||||
Transform original_local = se->original_local;
|
||||
Transform3D original_local = se->original_local;
|
||||
Basis rot = Basis(axis, angle);
|
||||
|
||||
t.basis = original_local.get_basis().orthonormalized() * rot;
|
||||
|
@ -1811,9 +1811,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
sp->set_scale(original_local.basis.get_scale()); // re-apply original scale
|
||||
|
||||
} else {
|
||||
Transform original = se->original;
|
||||
Transform r;
|
||||
Transform base = Transform(Basis(), _edit.center);
|
||||
Transform3D original = se->original;
|
||||
Transform3D r;
|
||||
Transform3D base = Transform3D(Basis(), _edit.center);
|
||||
|
||||
r.basis.rotate(plane.normal, angle);
|
||||
t = base * r * base.inverse() * original;
|
||||
|
@ -2057,7 +2057,7 @@ void Node3DEditorViewport::_nav_pan(Ref<InputEventWithModifiers> p_event, const
|
|||
pan_speed *= pan_speed_modifier;
|
||||
}
|
||||
|
||||
Transform camera_transform;
|
||||
Transform3D camera_transform;
|
||||
|
||||
camera_transform.translate(cursor.pos);
|
||||
camera_transform.basis.rotate(Vector3(1, 0, 0), -cursor.x_rot);
|
||||
|
@ -2145,7 +2145,7 @@ void Node3DEditorViewport::_nav_look(Ref<InputEventWithModifiers> p_event, const
|
|||
const bool invert_y_axis = EditorSettings::get_singleton()->get("editors/3d/navigation/invert_y_axis");
|
||||
|
||||
// Note: do NOT assume the camera has the "current" transform, because it is interpolated and may have "lag".
|
||||
const Transform prev_camera_transform = to_camera_transform(cursor);
|
||||
const Transform3D prev_camera_transform = to_camera_transform(cursor);
|
||||
|
||||
if (invert_y_axis) {
|
||||
cursor.x_rot -= p_relative.y * radians_per_pixel;
|
||||
|
@ -2158,7 +2158,7 @@ void Node3DEditorViewport::_nav_look(Ref<InputEventWithModifiers> p_event, const
|
|||
cursor.y_rot += p_relative.x * radians_per_pixel;
|
||||
|
||||
// Look is like the opposite of Orbit: the focus point rotates around the camera
|
||||
Transform camera_transform = to_camera_transform(cursor);
|
||||
Transform3D camera_transform = to_camera_transform(cursor);
|
||||
Vector3 pos = camera_transform.xform(Vector3(0, 0, 0));
|
||||
Vector3 prev_pos = prev_camera_transform.xform(Vector3(0, 0, 0));
|
||||
Vector3 diff = prev_pos - pos;
|
||||
|
@ -2444,7 +2444,7 @@ void Node3DEditorViewport::_notification(int p_what) {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform t = sp->get_global_gizmo_transform();
|
||||
Transform3D t = sp->get_global_gizmo_transform();
|
||||
VisualInstance3D *vi = Object::cast_to<VisualInstance3D>(sp);
|
||||
AABB new_aabb = vi ? vi->get_aabb() : _calculate_spatial_bounds(sp);
|
||||
|
||||
|
@ -2878,7 +2878,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
|
|||
break;
|
||||
}
|
||||
|
||||
Transform camera_transform = camera->get_global_transform();
|
||||
Transform3D camera_transform = camera->get_global_transform();
|
||||
|
||||
List<Node *> &selection = editor_selection->get_selected_node_list();
|
||||
|
||||
|
@ -2895,7 +2895,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
if (orthogonal) {
|
||||
xform = sp->get_global_transform();
|
||||
xform.basis.set_euler(camera_transform.basis.get_euler());
|
||||
|
@ -2915,7 +2915,7 @@ void Node3DEditorViewport::_menu_option(int p_option) {
|
|||
break;
|
||||
}
|
||||
|
||||
Transform camera_transform = camera->get_global_transform();
|
||||
Transform3D camera_transform = camera->get_global_transform();
|
||||
|
||||
List<Node *> &selection = editor_selection->get_selected_node_list();
|
||||
|
||||
|
@ -3315,9 +3315,9 @@ void Node3DEditorViewport::update_transform_gizmo_view() {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform xform = spatial_editor->get_gizmo_transform();
|
||||
Transform3D xform = spatial_editor->get_gizmo_transform();
|
||||
|
||||
Transform camera_xform = camera->get_transform();
|
||||
Transform3D camera_xform = camera->get_transform();
|
||||
|
||||
if (xform.origin.distance_squared_to(camera_xform.origin) < 0.01) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
|
@ -3800,7 +3800,7 @@ bool Node3DEditorViewport::_create_instance(Node *parent, String &path, const Po
|
|||
|
||||
Node3D *node3d = Object::cast_to<Node3D>(instanced_scene);
|
||||
if (node3d) {
|
||||
Transform global_transform;
|
||||
Transform3D global_transform;
|
||||
Node3D *parent_node3d = Object::cast_to<Node3D>(parent);
|
||||
if (parent_node3d) {
|
||||
global_transform = parent_node3d->get_global_gizmo_transform();
|
||||
|
@ -3900,7 +3900,7 @@ bool Node3DEditorViewport::can_drop_data_fw(const Point2 &p_point, const Variant
|
|||
}
|
||||
|
||||
if (can_instance) {
|
||||
Transform global_transform = Transform(Basis(), _get_instance_position(p_point));
|
||||
Transform3D global_transform = Transform3D(Basis(), _get_instance_position(p_point));
|
||||
preview_node->set_global_transform(global_transform);
|
||||
}
|
||||
|
||||
|
@ -4574,7 +4574,7 @@ void Node3DEditor::update_transform_gizmo() {
|
|||
continue;
|
||||
}
|
||||
|
||||
Transform xf = se->sp->get_global_gizmo_transform();
|
||||
Transform3D xf = se->sp->get_global_gizmo_transform();
|
||||
|
||||
if (first) {
|
||||
center.position = xf.origin;
|
||||
|
@ -4955,7 +4955,7 @@ void Node3DEditor::_snap_update() {
|
|||
}
|
||||
|
||||
void Node3DEditor::_xform_dialog_action() {
|
||||
Transform t;
|
||||
Transform3D t;
|
||||
//translation
|
||||
Vector3 scale;
|
||||
Vector3 rotate;
|
||||
|
@ -4988,7 +4988,7 @@ void Node3DEditor::_xform_dialog_action() {
|
|||
|
||||
bool post = xform_type->get_selected() > 0;
|
||||
|
||||
Transform tr = sp->get_global_gizmo_transform();
|
||||
Transform3D tr = sp->get_global_gizmo_transform();
|
||||
if (post) {
|
||||
tr = tr * t;
|
||||
} else {
|
||||
|
@ -6180,7 +6180,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
|
|||
|
||||
if (ss->intersect_ray(from, to, result, excluded)) {
|
||||
Vector3 position_offset = d["position_offset"];
|
||||
Transform new_transform = sp->get_global_transform();
|
||||
Transform3D new_transform = sp->get_global_transform();
|
||||
|
||||
new_transform.origin.y = result.position.y;
|
||||
new_transform.origin = new_transform.origin - position_offset;
|
||||
|
@ -6556,7 +6556,7 @@ void Node3DEditor::_preview_settings_changed() {
|
|||
}
|
||||
|
||||
{ // preview sun
|
||||
Transform t;
|
||||
Transform3D t;
|
||||
t.basis = sun_rotation;
|
||||
preview_sun->set_transform(t);
|
||||
sun_direction->update();
|
||||
|
|
|
@ -322,7 +322,7 @@ private:
|
|||
Vector3 _get_ray_pos(const Vector2 &p_pos) const;
|
||||
Vector3 _get_ray(const Vector2 &p_pos) const;
|
||||
Point2 _point_to_screen(const Vector3 &p_point);
|
||||
Transform _get_camera_transform() const;
|
||||
Transform3D _get_camera_transform() const;
|
||||
int get_selected_count() const;
|
||||
|
||||
Vector3 _get_camera_position() const;
|
||||
|
@ -380,7 +380,7 @@ private:
|
|||
struct EditData {
|
||||
TransformMode mode;
|
||||
TransformPlane plane;
|
||||
Transform original;
|
||||
Transform3D original;
|
||||
Vector3 click_ray;
|
||||
Vector3 click_ray_pos;
|
||||
Vector3 center;
|
||||
|
@ -432,7 +432,7 @@ private:
|
|||
|
||||
//
|
||||
void _update_camera(float p_interp_delta);
|
||||
Transform to_camera_transform(const Cursor &p_cursor) const;
|
||||
Transform3D to_camera_transform(const Cursor &p_cursor) const;
|
||||
void _draw();
|
||||
|
||||
void _surface_mouse_enter();
|
||||
|
@ -505,9 +505,9 @@ class Node3DEditorSelectedItem : public Object {
|
|||
|
||||
public:
|
||||
AABB aabb;
|
||||
Transform original; // original location when moving
|
||||
Transform original_local;
|
||||
Transform last_xform; // last transform
|
||||
Transform3D original; // original location when moving
|
||||
Transform3D original_local;
|
||||
Transform3D last_xform; // last transform
|
||||
bool last_xform_dirty;
|
||||
Node3D *sp;
|
||||
RID sbox_instance;
|
||||
|
@ -641,7 +641,7 @@ private:
|
|||
struct Gizmo {
|
||||
bool visible = false;
|
||||
float scale = 0;
|
||||
Transform transform;
|
||||
Transform3D transform;
|
||||
} gizmo;
|
||||
|
||||
enum MenuOption {
|
||||
|
@ -824,7 +824,7 @@ public:
|
|||
float get_zfar() const { return settings_zfar->get_value(); }
|
||||
float get_fov() const { return settings_fov->get_value(); }
|
||||
|
||||
Transform get_gizmo_transform() const { return gizmo.transform; }
|
||||
Transform3D get_gizmo_transform() const { return gizmo.transform; }
|
||||
bool is_gizmo_visible() const { return gizmo.visible; }
|
||||
|
||||
ToolMode get_tool_mode() const { return tool_mode; }
|
||||
|
|
|
@ -94,8 +94,8 @@ void Path3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_poin
|
|||
return;
|
||||
}
|
||||
|
||||
Transform gt = path->get_global_transform();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gt = path->get_global_transform();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
||||
|
@ -302,8 +302,8 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
|||
if (c.is_null()) {
|
||||
return false;
|
||||
}
|
||||
Transform gt = path->get_global_transform();
|
||||
Transform it = gt.affine_inverse();
|
||||
Transform3D gt = path->get_global_transform();
|
||||
Transform3D it = gt.affine_inverse();
|
||||
|
||||
static const int click_dist = 10; //should make global
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ void BoneTransformEditor::_value_changed(const double p_value) {
|
|||
return;
|
||||
}
|
||||
|
||||
Transform tform = compute_transform_from_vector3s();
|
||||
Transform3D tform = compute_transform_from_vector3s();
|
||||
_change_transform(tform);
|
||||
}
|
||||
|
||||
|
@ -179,30 +179,30 @@ void BoneTransformEditor::_value_changed_vector3(const String p_property_name, c
|
|||
if (updating) {
|
||||
return;
|
||||
}
|
||||
Transform tform = compute_transform_from_vector3s();
|
||||
Transform3D tform = compute_transform_from_vector3s();
|
||||
_change_transform(tform);
|
||||
}
|
||||
|
||||
Transform BoneTransformEditor::compute_transform_from_vector3s() const {
|
||||
Transform3D BoneTransformEditor::compute_transform_from_vector3s() const {
|
||||
// Convert rotation from degrees to radians.
|
||||
Vector3 prop_rotation = rotation_property->get_vector();
|
||||
prop_rotation.x = Math::deg2rad(prop_rotation.x);
|
||||
prop_rotation.y = Math::deg2rad(prop_rotation.y);
|
||||
prop_rotation.z = Math::deg2rad(prop_rotation.z);
|
||||
|
||||
return Transform(
|
||||
return Transform3D(
|
||||
Basis(prop_rotation, scale_property->get_vector()),
|
||||
translation_property->get_vector());
|
||||
}
|
||||
|
||||
void BoneTransformEditor::_value_changed_transform(const String p_property_name, const Transform p_transform, const StringName p_edited_property_name, const bool p_boolean) {
|
||||
void BoneTransformEditor::_value_changed_transform(const String p_property_name, const Transform3D p_transform, const StringName p_edited_property_name, const bool p_boolean) {
|
||||
if (updating) {
|
||||
return;
|
||||
}
|
||||
_change_transform(p_transform);
|
||||
}
|
||||
|
||||
void BoneTransformEditor::_change_transform(Transform p_new_transform) {
|
||||
void BoneTransformEditor::_change_transform(Transform3D p_new_transform) {
|
||||
if (property.get_slicec('/', 0) == "bones" && property.get_slicec('/', 2) == "custom_pose") {
|
||||
undo_redo->create_action(TTR("Set Custom Bone Pose Transform"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_undo_method(skeleton, "set_bone_custom_pose", property.get_slicec('/', 1).to_int(), skeleton->get_bone_custom_pose(property.get_slicec('/', 1).to_int()));
|
||||
|
@ -235,7 +235,7 @@ void BoneTransformEditor::_update_properties() {
|
|||
|
||||
updating = true;
|
||||
|
||||
Transform tform = skeleton->get(property);
|
||||
Transform3D tform = skeleton->get(property);
|
||||
_update_transform_properties(tform);
|
||||
}
|
||||
|
||||
|
@ -250,11 +250,11 @@ void BoneTransformEditor::_update_custom_pose_properties() {
|
|||
|
||||
updating = true;
|
||||
|
||||
Transform tform = skeleton->get_bone_custom_pose(property.to_int());
|
||||
Transform3D tform = skeleton->get_bone_custom_pose(property.to_int());
|
||||
_update_transform_properties(tform);
|
||||
}
|
||||
|
||||
void BoneTransformEditor::_update_transform_properties(Transform tform) {
|
||||
void BoneTransformEditor::_update_transform_properties(Transform3D tform) {
|
||||
Basis rotation_basis = tform.get_basis();
|
||||
Vector3 rotation_radians = rotation_basis.get_rotation_euler();
|
||||
Vector3 rotation_degrees = Vector3(Math::rad2deg(rotation_radians.x), Math::rad2deg(rotation_radians.y), Math::rad2deg(rotation_radians.z));
|
||||
|
@ -306,7 +306,7 @@ void BoneTransformEditor::_key_button_pressed() {
|
|||
}
|
||||
|
||||
// Need to normalize the basis before you key it
|
||||
Transform tform = compute_transform_from_vector3s();
|
||||
Transform3D tform = compute_transform_from_vector3s();
|
||||
tform.orthonormalize();
|
||||
AnimationPlayerEditor::singleton->get_track_editor()->insert_transform_key(skeleton, name, tform);
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ void Skeleton3DEditor::create_physical_skeleton() {
|
|||
}
|
||||
|
||||
PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_child_id, const Vector<BoneInfo> &bones_infos) {
|
||||
const Transform child_rest = skeleton->get_bone_rest(bone_child_id);
|
||||
const Transform3D child_rest = skeleton->get_bone_rest(bone_child_id);
|
||||
|
||||
const real_t half_height(child_rest.origin.length() * 0.5);
|
||||
const real_t radius(half_height * 0.2);
|
||||
|
@ -392,15 +392,15 @@ PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_chi
|
|||
CollisionShape3D *bone_shape = memnew(CollisionShape3D);
|
||||
bone_shape->set_shape(bone_shape_capsule);
|
||||
|
||||
Transform capsule_transform;
|
||||
Transform3D capsule_transform;
|
||||
capsule_transform.basis = Basis(Vector3(1, 0, 0), Vector3(0, 0, 1), Vector3(0, -1, 0));
|
||||
bone_shape->set_transform(capsule_transform);
|
||||
|
||||
Transform body_transform;
|
||||
Transform3D body_transform;
|
||||
body_transform.set_look_at(Vector3(0, 0, 0), child_rest.origin);
|
||||
body_transform.origin = body_transform.basis.xform(Vector3(0, 0, -half_height));
|
||||
|
||||
Transform joint_transform;
|
||||
Transform3D joint_transform;
|
||||
joint_transform.origin = Vector3(0, 0, half_height);
|
||||
|
||||
PhysicalBone3D *physical_bone = memnew(PhysicalBone3D);
|
||||
|
|
|
@ -78,11 +78,11 @@ class BoneTransformEditor : public VBoxContainer {
|
|||
// Called when the one of the EditorPropertyVector3 are updated.
|
||||
void _value_changed_vector3(const String p_property_name, const Vector3 p_vector, const StringName p_edited_property_name, const bool p_boolean);
|
||||
// Called when the transform_property is updated.
|
||||
void _value_changed_transform(const String p_property_name, const Transform p_transform, const StringName p_edited_property_name, const bool p_boolean);
|
||||
void _value_changed_transform(const String p_property_name, const Transform3D p_transform, const StringName p_edited_property_name, const bool p_boolean);
|
||||
// Changes the transform to the given transform and updates the UI accordingly.
|
||||
void _change_transform(Transform p_new_transform);
|
||||
void _change_transform(Transform3D p_new_transform);
|
||||
// Creates a Transform using the EditorPropertyVector3 properties.
|
||||
Transform compute_transform_from_vector3s() const;
|
||||
Transform3D compute_transform_from_vector3s() const;
|
||||
|
||||
void update_enabled_checkbox();
|
||||
|
||||
|
@ -98,7 +98,7 @@ public:
|
|||
|
||||
void _update_properties();
|
||||
void _update_custom_pose_properties();
|
||||
void _update_transform_properties(Transform p_transform);
|
||||
void _update_transform_properties(Transform3D p_transform);
|
||||
|
||||
// Can/cannot modify the spinner values for the Transform
|
||||
void set_read_only(const bool p_read_only);
|
||||
|
@ -127,7 +127,7 @@ class Skeleton3DEditor : public VBoxContainer {
|
|||
|
||||
struct BoneInfo {
|
||||
PhysicalBone3D *physical_bone = nullptr;
|
||||
Transform relative_rest; // Relative to skeleton node
|
||||
Transform3D relative_rest; // Relative to skeleton node
|
||||
};
|
||||
|
||||
EditorNode *editor;
|
||||
|
|
|
@ -806,7 +806,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
|
|||
field_names.push_back("zo");
|
||||
config_value_editors(12, 4, 16, field_names);
|
||||
|
||||
Transform tr = v;
|
||||
Transform3D tr = v;
|
||||
for (int i = 0; i < 9; i++) {
|
||||
value_editor[(i / 3) * 4 + i % 3]->set_text(String::num(tr.basis.elements[i / 3][i % 3]));
|
||||
}
|
||||
|
@ -1569,7 +1569,7 @@ void CustomPropertyEditor::_modified(String p_string) {
|
|||
origin.y = _parse_real_expression(value_editor[7]->get_text());
|
||||
origin.z = _parse_real_expression(value_editor[11]->get_text());
|
||||
|
||||
v = Transform(basis, origin);
|
||||
v = Transform3D(basis, origin);
|
||||
_emit_changed_whole_or_field();
|
||||
|
||||
} break;
|
||||
|
|
|
@ -326,7 +326,7 @@ static Variant create_var(RS::GlobalVariableType p_type) {
|
|||
return Transform2D();
|
||||
}
|
||||
case RS::GLOBAL_VAR_TYPE_TRANSFORM: {
|
||||
return Transform();
|
||||
return Transform3D();
|
||||
}
|
||||
case RS::GLOBAL_VAR_TYPE_MAT4: {
|
||||
Vector<real_t> xform;
|
||||
|
|
|
@ -268,7 +268,7 @@ PhysicsServer3D::AreaSpaceOverrideMode BulletPhysicsServer3D::area_get_space_ove
|
|||
return area->get_spOv_mode();
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::area_add_shape(RID p_area, RID p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
void BulletPhysicsServer3D::area_add_shape(RID p_area, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
|
||||
AreaBullet *area = area_owner.getornull(p_area);
|
||||
ERR_FAIL_COND(!area);
|
||||
|
||||
|
@ -288,7 +288,7 @@ void BulletPhysicsServer3D::area_set_shape(RID p_area, int p_shape_idx, RID p_sh
|
|||
area->set_shape(p_shape_idx, shape);
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform &p_transform) {
|
||||
void BulletPhysicsServer3D::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform3D &p_transform) {
|
||||
AreaBullet *area = area_owner.getornull(p_area);
|
||||
ERR_FAIL_COND(!area);
|
||||
|
||||
|
@ -309,9 +309,9 @@ RID BulletPhysicsServer3D::area_get_shape(RID p_area, int p_shape_idx) const {
|
|||
return area->get_shape(p_shape_idx)->get_self();
|
||||
}
|
||||
|
||||
Transform BulletPhysicsServer3D::area_get_shape_transform(RID p_area, int p_shape_idx) const {
|
||||
Transform3D BulletPhysicsServer3D::area_get_shape_transform(RID p_area, int p_shape_idx) const {
|
||||
AreaBullet *area = area_owner.getornull(p_area);
|
||||
ERR_FAIL_COND_V(!area, Transform());
|
||||
ERR_FAIL_COND_V(!area, Transform3D());
|
||||
|
||||
return area->get_shape_transform(p_shape_idx);
|
||||
}
|
||||
|
@ -382,15 +382,15 @@ Variant BulletPhysicsServer3D::area_get_param(RID p_area, AreaParameter p_param)
|
|||
}
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::area_set_transform(RID p_area, const Transform &p_transform) {
|
||||
void BulletPhysicsServer3D::area_set_transform(RID p_area, const Transform3D &p_transform) {
|
||||
AreaBullet *area = area_owner.getornull(p_area);
|
||||
ERR_FAIL_COND(!area);
|
||||
area->set_transform(p_transform);
|
||||
}
|
||||
|
||||
Transform BulletPhysicsServer3D::area_get_transform(RID p_area) const {
|
||||
Transform3D BulletPhysicsServer3D::area_get_transform(RID p_area) const {
|
||||
AreaBullet *area = area_owner.getornull(p_area);
|
||||
ERR_FAIL_COND_V(!area, Transform());
|
||||
ERR_FAIL_COND_V(!area, Transform3D());
|
||||
return area->get_transform();
|
||||
}
|
||||
|
||||
|
@ -484,7 +484,7 @@ PhysicsServer3D::BodyMode BulletPhysicsServer3D::body_get_mode(RID p_body) const
|
|||
return body->get_mode();
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::body_add_shape(RID p_body, RID p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
void BulletPhysicsServer3D::body_add_shape(RID p_body, RID p_shape, const Transform3D &p_transform, bool p_disabled) {
|
||||
RigidBodyBullet *body = rigid_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND(!body);
|
||||
|
||||
|
@ -504,7 +504,7 @@ void BulletPhysicsServer3D::body_set_shape(RID p_body, int p_shape_idx, RID p_sh
|
|||
body->set_shape(p_shape_idx, shape);
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform &p_transform) {
|
||||
void BulletPhysicsServer3D::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform3D &p_transform) {
|
||||
RigidBodyBullet *body = rigid_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND(!body);
|
||||
|
||||
|
@ -527,9 +527,9 @@ RID BulletPhysicsServer3D::body_get_shape(RID p_body, int p_shape_idx) const {
|
|||
return shape->get_self();
|
||||
}
|
||||
|
||||
Transform BulletPhysicsServer3D::body_get_shape_transform(RID p_body, int p_shape_idx) const {
|
||||
Transform3D BulletPhysicsServer3D::body_get_shape_transform(RID p_body, int p_shape_idx) const {
|
||||
RigidBodyBullet *body = rigid_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND_V(!body, Transform());
|
||||
ERR_FAIL_COND_V(!body, Transform3D());
|
||||
return body->get_shape_transform(p_shape_idx);
|
||||
}
|
||||
|
||||
|
@ -842,7 +842,7 @@ PhysicsDirectBodyState3D *BulletPhysicsServer3D::body_get_direct_state(RID p_bod
|
|||
return BulletPhysicsDirectBodyState3D::get_singleton(body);
|
||||
}
|
||||
|
||||
bool BulletPhysicsServer3D::body_test_motion(RID p_body, const Transform &p_from, const Vector3 &p_motion, bool p_infinite_inertia, MotionResult *r_result, bool p_exclude_raycast_shapes) {
|
||||
bool BulletPhysicsServer3D::body_test_motion(RID p_body, const Transform3D &p_from, const Vector3 &p_motion, bool p_infinite_inertia, MotionResult *r_result, bool p_exclude_raycast_shapes) {
|
||||
RigidBodyBullet *body = rigid_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND_V(!body, false);
|
||||
ERR_FAIL_COND_V(!body->get_space(), false);
|
||||
|
@ -850,7 +850,7 @@ bool BulletPhysicsServer3D::body_test_motion(RID p_body, const Transform &p_from
|
|||
return body->get_space()->test_body_motion(body, p_from, p_motion, p_infinite_inertia, r_result, p_exclude_raycast_shapes);
|
||||
}
|
||||
|
||||
int BulletPhysicsServer3D::body_test_ray_separation(RID p_body, const Transform &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, SeparationResult *r_results, int p_result_max, real_t p_margin) {
|
||||
int BulletPhysicsServer3D::body_test_ray_separation(RID p_body, const Transform3D &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, SeparationResult *r_results, int p_result_max, real_t p_margin) {
|
||||
RigidBodyBullet *body = rigid_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND_V(!body, 0);
|
||||
ERR_FAIL_COND_V(!body->get_space(), 0);
|
||||
|
@ -990,7 +990,7 @@ Variant BulletPhysicsServer3D::soft_body_get_state(RID p_body, BodyState p_state
|
|||
return Variant();
|
||||
}
|
||||
|
||||
void BulletPhysicsServer3D::soft_body_set_transform(RID p_body, const Transform &p_transform) {
|
||||
void BulletPhysicsServer3D::soft_body_set_transform(RID p_body, const Transform3D &p_transform) {
|
||||
SoftBodyBullet *body = soft_body_owner.getornull(p_body);
|
||||
ERR_FAIL_COND(!body);
|
||||
|
||||
|
@ -1205,7 +1205,7 @@ Vector3 BulletPhysicsServer3D::pin_joint_get_local_b(RID p_joint) const {
|
|||
return pin_joint->getPivotInB();
|
||||
}
|
||||
|
||||
RID BulletPhysicsServer3D::joint_create_hinge(RID p_body_A, const Transform &p_hinge_A, RID p_body_B, const Transform &p_hinge_B) {
|
||||
RID BulletPhysicsServer3D::joint_create_hinge(RID p_body_A, const Transform3D &p_hinge_A, RID p_body_B, const Transform3D &p_hinge_B) {
|
||||
RigidBodyBullet *body_A = rigid_body_owner.getornull(p_body_A);
|
||||
ERR_FAIL_COND_V(!body_A, RID());
|
||||
JointAssertSpace(body_A, "A", RID());
|
||||
|
@ -1277,7 +1277,7 @@ bool BulletPhysicsServer3D::hinge_joint_get_flag(RID p_joint, HingeJointFlag p_f
|
|||
return hinge_joint->get_flag(p_flag);
|
||||
}
|
||||
|
||||
RID BulletPhysicsServer3D::joint_create_slider(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) {
|
||||
RID BulletPhysicsServer3D::joint_create_slider(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
|
||||
RigidBodyBullet *body_A = rigid_body_owner.getornull(p_body_A);
|
||||
ERR_FAIL_COND_V(!body_A, RID());
|
||||
JointAssertSpace(body_A, "A", RID());
|
||||
|
@ -1313,7 +1313,7 @@ real_t BulletPhysicsServer3D::slider_joint_get_param(RID p_joint, SliderJointPar
|
|||
return slider_joint->get_param(p_param);
|
||||
}
|
||||
|
||||
RID BulletPhysicsServer3D::joint_create_cone_twist(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) {
|
||||
RID BulletPhysicsServer3D::joint_create_cone_twist(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
|
||||
RigidBodyBullet *body_A = rigid_body_owner.getornull(p_body_A);
|
||||
ERR_FAIL_COND_V(!body_A, RID());
|
||||
JointAssertSpace(body_A, "A", RID());
|
||||
|
@ -1347,7 +1347,7 @@ real_t BulletPhysicsServer3D::cone_twist_joint_get_param(RID p_joint, ConeTwistJ
|
|||
return coneTwist_joint->get_param(p_param);
|
||||
}
|
||||
|
||||
RID BulletPhysicsServer3D::joint_create_generic_6dof(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) {
|
||||
RID BulletPhysicsServer3D::joint_create_generic_6dof(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) {
|
||||
RigidBodyBullet *body_A = rigid_body_owner.getornull(p_body_A);
|
||||
ERR_FAIL_COND_V(!body_A, RID());
|
||||
JointAssertSpace(body_A, "A", RID());
|
||||
|
|
|
@ -134,12 +134,12 @@ public:
|
|||
virtual void area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) override;
|
||||
virtual AreaSpaceOverrideMode area_get_space_override_mode(RID p_area) const override;
|
||||
|
||||
virtual void area_add_shape(RID p_area, RID p_shape, const Transform &p_transform = Transform(), bool p_disabled = false) override;
|
||||
virtual void area_add_shape(RID p_area, RID p_shape, const Transform3D &p_transform = Transform3D(), bool p_disabled = false) override;
|
||||
virtual void area_set_shape(RID p_area, int p_shape_idx, RID p_shape) override;
|
||||
virtual void area_set_shape_transform(RID p_area, int p_shape_idx, const Transform &p_transform) override;
|
||||
virtual void area_set_shape_transform(RID p_area, int p_shape_idx, const Transform3D &p_transform) override;
|
||||
virtual int area_get_shape_count(RID p_area) const override;
|
||||
virtual RID area_get_shape(RID p_area, int p_shape_idx) const override;
|
||||
virtual Transform area_get_shape_transform(RID p_area, int p_shape_idx) const override;
|
||||
virtual Transform3D area_get_shape_transform(RID p_area, int p_shape_idx) const override;
|
||||
virtual void area_remove_shape(RID p_area, int p_shape_idx) override;
|
||||
virtual void area_clear_shapes(RID p_area) override;
|
||||
virtual void area_set_shape_disabled(RID p_area, int p_shape_idx, bool p_disabled) override;
|
||||
|
@ -153,8 +153,8 @@ public:
|
|||
virtual void area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) override;
|
||||
virtual Variant area_get_param(RID p_area, AreaParameter p_param) const override;
|
||||
|
||||
virtual void area_set_transform(RID p_area, const Transform &p_transform) override;
|
||||
virtual Transform area_get_transform(RID p_area) const override;
|
||||
virtual void area_set_transform(RID p_area, const Transform3D &p_transform) override;
|
||||
virtual Transform3D area_get_transform(RID p_area) const override;
|
||||
|
||||
virtual void area_set_collision_mask(RID p_area, uint32_t p_mask) override;
|
||||
virtual void area_set_collision_layer(RID p_area, uint32_t p_layer) override;
|
||||
|
@ -174,14 +174,14 @@ public:
|
|||
virtual void body_set_mode(RID p_body, BodyMode p_mode) override;
|
||||
virtual BodyMode body_get_mode(RID p_body) const override;
|
||||
|
||||
virtual void body_add_shape(RID p_body, RID p_shape, const Transform &p_transform = Transform(), bool p_disabled = false) override;
|
||||
virtual void body_add_shape(RID p_body, RID p_shape, const Transform3D &p_transform = Transform3D(), bool p_disabled = false) override;
|
||||
// Not supported, Please remove and add new shape
|
||||
virtual void body_set_shape(RID p_body, int p_shape_idx, RID p_shape) override;
|
||||
virtual void body_set_shape_transform(RID p_body, int p_shape_idx, const Transform &p_transform) override;
|
||||
virtual void body_set_shape_transform(RID p_body, int p_shape_idx, const Transform3D &p_transform) override;
|
||||
|
||||
virtual int body_get_shape_count(RID p_body) const override;
|
||||
virtual RID body_get_shape(RID p_body, int p_shape_idx) const override;
|
||||
virtual Transform body_get_shape_transform(RID p_body, int p_shape_idx) const override;
|
||||
virtual Transform3D body_get_shape_transform(RID p_body, int p_shape_idx) const override;
|
||||
|
||||
virtual void body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) override;
|
||||
|
||||
|
@ -253,8 +253,8 @@ public:
|
|||
// this function only works on physics process, errors and returns null otherwise
|
||||
virtual PhysicsDirectBodyState3D *body_get_direct_state(RID p_body) override;
|
||||
|
||||
virtual bool body_test_motion(RID p_body, const Transform &p_from, const Vector3 &p_motion, bool p_infinite_inertia, MotionResult *r_result = nullptr, bool p_exclude_raycast_shapes = true) override;
|
||||
virtual int body_test_ray_separation(RID p_body, const Transform &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, SeparationResult *r_results, int p_result_max, real_t p_margin = 0.001) override;
|
||||
virtual bool body_test_motion(RID p_body, const Transform3D &p_from, const Vector3 &p_motion, bool p_infinite_inertia, MotionResult *r_result = nullptr, bool p_exclude_raycast_shapes = true) override;
|
||||
virtual int body_test_ray_separation(RID p_body, const Transform3D &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, SeparationResult *r_results, int p_result_max, real_t p_margin = 0.001) override;
|
||||
|
||||
/* SOFT BODY API */
|
||||
|
||||
|
@ -283,7 +283,7 @@ public:
|
|||
virtual Variant soft_body_get_state(RID p_body, BodyState p_state) const override;
|
||||
|
||||
/// Special function. This function has bad performance
|
||||
virtual void soft_body_set_transform(RID p_body, const Transform &p_transform) override;
|
||||
virtual void soft_body_set_transform(RID p_body, const Transform3D &p_transform) override;
|
||||
|
||||
virtual void soft_body_set_ray_pickable(RID p_body, bool p_enable) override;
|
||||
|
||||
|
@ -333,7 +333,7 @@ public:
|
|||
virtual void pin_joint_set_local_b(RID p_joint, const Vector3 &p_B) override;
|
||||
virtual Vector3 pin_joint_get_local_b(RID p_joint) const override;
|
||||
|
||||
virtual RID joint_create_hinge(RID p_body_A, const Transform &p_hinge_A, RID p_body_B, const Transform &p_hinge_B) override;
|
||||
virtual RID joint_create_hinge(RID p_body_A, const Transform3D &p_hinge_A, RID p_body_B, const Transform3D &p_hinge_B) override;
|
||||
virtual RID joint_create_hinge_simple(RID p_body_A, const Vector3 &p_pivot_A, const Vector3 &p_axis_A, RID p_body_B, const Vector3 &p_pivot_B, const Vector3 &p_axis_B) override;
|
||||
|
||||
virtual void hinge_joint_set_param(RID p_joint, HingeJointParam p_param, real_t p_value) override;
|
||||
|
@ -343,19 +343,19 @@ public:
|
|||
virtual bool hinge_joint_get_flag(RID p_joint, HingeJointFlag p_flag) const override;
|
||||
|
||||
/// Reference frame is A
|
||||
virtual RID joint_create_slider(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) override;
|
||||
virtual RID joint_create_slider(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) override;
|
||||
|
||||
virtual void slider_joint_set_param(RID p_joint, SliderJointParam p_param, real_t p_value) override;
|
||||
virtual real_t slider_joint_get_param(RID p_joint, SliderJointParam p_param) const override;
|
||||
|
||||
/// Reference frame is A
|
||||
virtual RID joint_create_cone_twist(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) override;
|
||||
virtual RID joint_create_cone_twist(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) override;
|
||||
|
||||
virtual void cone_twist_joint_set_param(RID p_joint, ConeTwistJointParam p_param, real_t p_value) override;
|
||||
virtual real_t cone_twist_joint_get_param(RID p_joint, ConeTwistJointParam p_param) const override;
|
||||
|
||||
/// Reference frame is A
|
||||
virtual RID joint_create_generic_6dof(RID p_body_A, const Transform &p_local_frame_A, RID p_body_B, const Transform &p_local_frame_B) override;
|
||||
virtual RID joint_create_generic_6dof(RID p_body_A, const Transform3D &p_local_frame_A, RID p_body_B, const Transform3D &p_local_frame_B) override;
|
||||
|
||||
virtual void generic_6dof_joint_set_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param, real_t p_value) override;
|
||||
virtual real_t generic_6dof_joint_get_param(RID p_joint, Vector3::Axis p_axis, G6DOFJointAxisParam p_param) override;
|
||||
|
|
|
@ -59,7 +59,7 @@ void INVERT_B_TO_G(btMatrix3x3 const &inVal, Basis &outVal) {
|
|||
INVERT_B_TO_G(inVal[2], outVal[2]);
|
||||
}
|
||||
|
||||
void B_TO_G(btTransform const &inVal, Transform &outVal) {
|
||||
void B_TO_G(btTransform const &inVal, Transform3D &outVal) {
|
||||
B_TO_G(inVal.getBasis(), outVal.basis);
|
||||
B_TO_G(inVal.getOrigin(), outVal.origin);
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ void INVERT_G_TO_B(Basis const &inVal, btMatrix3x3 &outVal) {
|
|||
INVERT_G_TO_B(inVal[2], outVal[2]);
|
||||
}
|
||||
|
||||
void G_TO_B(Transform const &inVal, btTransform &outVal) {
|
||||
void G_TO_B(Transform3D const &inVal, btTransform &outVal) {
|
||||
G_TO_B(inVal.basis, outVal.getBasis());
|
||||
G_TO_B(inVal.origin, outVal.getOrigin());
|
||||
}
|
||||
|
|
|
@ -49,14 +49,14 @@ extern void B_TO_G(btVector3 const &inVal, Vector3 &outVal);
|
|||
extern void INVERT_B_TO_G(btVector3 const &inVal, Vector3 &outVal);
|
||||
extern void B_TO_G(btMatrix3x3 const &inVal, Basis &outVal);
|
||||
extern void INVERT_B_TO_G(btMatrix3x3 const &inVal, Basis &outVal);
|
||||
extern void B_TO_G(btTransform const &inVal, Transform &outVal);
|
||||
extern void B_TO_G(btTransform const &inVal, Transform3D &outVal);
|
||||
|
||||
// Godot TO Bullet
|
||||
extern void G_TO_B(Vector3 const &inVal, btVector3 &outVal);
|
||||
extern void INVERT_G_TO_B(Vector3 const &inVal, btVector3 &outVal);
|
||||
extern void G_TO_B(Basis const &inVal, btMatrix3x3 &outVal);
|
||||
extern void INVERT_G_TO_B(Basis const &inVal, btMatrix3x3 &outVal);
|
||||
extern void G_TO_B(Transform const &inVal, btTransform &outVal);
|
||||
extern void G_TO_B(Transform3D const &inVal, btTransform &outVal);
|
||||
|
||||
extern void UNSCALE_BT_BASIS(btTransform &scaledBasis);
|
||||
#endif
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
|
||||
CollisionObjectBullet::ShapeWrapper::~ShapeWrapper() {}
|
||||
|
||||
void CollisionObjectBullet::ShapeWrapper::set_transform(const Transform &p_transform) {
|
||||
void CollisionObjectBullet::ShapeWrapper::set_transform(const Transform3D &p_transform) {
|
||||
G_TO_B(p_transform.get_basis().get_scale_abs(), scale);
|
||||
G_TO_B(p_transform, transform);
|
||||
UNSCALE_BT_BASIS(transform);
|
||||
|
@ -193,7 +193,7 @@ int CollisionObjectBullet::get_godot_object_flags() const {
|
|||
return bt_collision_object->getUserIndex2();
|
||||
}
|
||||
|
||||
void CollisionObjectBullet::set_transform(const Transform &p_global_transform) {
|
||||
void CollisionObjectBullet::set_transform(const Transform3D &p_global_transform) {
|
||||
set_body_scale(p_global_transform.basis.get_scale_abs());
|
||||
|
||||
btTransform bt_transform;
|
||||
|
@ -203,8 +203,8 @@ void CollisionObjectBullet::set_transform(const Transform &p_global_transform) {
|
|||
set_transform__bullet(bt_transform);
|
||||
}
|
||||
|
||||
Transform CollisionObjectBullet::get_transform() const {
|
||||
Transform t;
|
||||
Transform3D CollisionObjectBullet::get_transform() const {
|
||||
Transform3D t;
|
||||
B_TO_G(get_transform__bullet(), t);
|
||||
t.basis.scale(body_scale);
|
||||
return t;
|
||||
|
@ -230,7 +230,7 @@ RigidCollisionObjectBullet::~RigidCollisionObjectBullet() {
|
|||
}
|
||||
}
|
||||
|
||||
void RigidCollisionObjectBullet::add_shape(ShapeBullet *p_shape, const Transform &p_transform, bool p_disabled) {
|
||||
void RigidCollisionObjectBullet::add_shape(ShapeBullet *p_shape, const Transform3D &p_transform, bool p_disabled) {
|
||||
shapes.push_back(ShapeWrapper(p_shape, p_transform, !p_disabled));
|
||||
p_shape->add_owner(this);
|
||||
reload_shapes();
|
||||
|
@ -296,7 +296,7 @@ void RigidCollisionObjectBullet::remove_all_shapes(bool p_permanentlyFromThisBod
|
|||
}
|
||||
}
|
||||
|
||||
void RigidCollisionObjectBullet::set_shape_transform(int p_index, const Transform &p_transform) {
|
||||
void RigidCollisionObjectBullet::set_shape_transform(int p_index, const Transform3D &p_transform) {
|
||||
ERR_FAIL_INDEX(p_index, get_shape_count());
|
||||
|
||||
shapes.write[p_index].set_transform(p_transform);
|
||||
|
@ -307,8 +307,8 @@ const btTransform &RigidCollisionObjectBullet::get_bt_shape_transform(int p_inde
|
|||
return shapes[p_index].transform;
|
||||
}
|
||||
|
||||
Transform RigidCollisionObjectBullet::get_shape_transform(int p_index) const {
|
||||
Transform trs;
|
||||
Transform3D RigidCollisionObjectBullet::get_shape_transform(int p_index) const {
|
||||
Transform3D trs;
|
||||
B_TO_G(shapes[p_index].transform, trs);
|
||||
return trs;
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public:
|
|||
set_transform(p_transform);
|
||||
}
|
||||
|
||||
ShapeWrapper(ShapeBullet *p_shape, const Transform &p_transform, bool p_active) :
|
||||
ShapeWrapper(ShapeBullet *p_shape, const Transform3D &p_transform, bool p_active) :
|
||||
shape(p_shape),
|
||||
active(p_active) {
|
||||
set_transform(p_transform);
|
||||
|
@ -102,7 +102,7 @@ public:
|
|||
active = otherShape.active;
|
||||
}
|
||||
|
||||
void set_transform(const Transform &p_transform);
|
||||
void set_transform(const Transform3D &p_transform);
|
||||
void set_transform(const btTransform &p_transform);
|
||||
btTransform get_adjusted_transform() const;
|
||||
|
||||
|
@ -202,8 +202,8 @@ public:
|
|||
void set_godot_object_flags(int flags);
|
||||
int get_godot_object_flags() const;
|
||||
|
||||
void set_transform(const Transform &p_global_transform);
|
||||
Transform get_transform() const;
|
||||
void set_transform(const Transform3D &p_global_transform);
|
||||
Transform3D get_transform() const;
|
||||
virtual void set_transform__bullet(const btTransform &p_global_transform);
|
||||
virtual const btTransform &get_transform__bullet() const;
|
||||
|
||||
|
@ -225,7 +225,7 @@ public:
|
|||
|
||||
_FORCE_INLINE_ btCollisionShape *get_main_shape() const { return mainShape; }
|
||||
|
||||
void add_shape(ShapeBullet *p_shape, const Transform &p_transform = Transform(), bool p_disabled = false);
|
||||
void add_shape(ShapeBullet *p_shape, const Transform3D &p_transform = Transform3D(), bool p_disabled = false);
|
||||
void set_shape(int p_index, ShapeBullet *p_shape);
|
||||
|
||||
int get_shape_count() const;
|
||||
|
@ -238,10 +238,10 @@ public:
|
|||
void remove_shape_full(int p_index);
|
||||
void remove_all_shapes(bool p_permanentlyFromThisBody = false, bool p_force_not_reload = false);
|
||||
|
||||
void set_shape_transform(int p_index, const Transform &p_transform);
|
||||
void set_shape_transform(int p_index, const Transform3D &p_transform);
|
||||
|
||||
const btTransform &get_bt_shape_transform(int p_index) const;
|
||||
Transform get_shape_transform(int p_index) const;
|
||||
Transform3D get_shape_transform(int p_index) const;
|
||||
|
||||
void set_shape_disabled(int p_index, bool p_disabled);
|
||||
bool is_shape_disabled(int p_index);
|
||||
|
|
|
@ -40,16 +40,16 @@
|
|||
@author AndreaCatania
|
||||
*/
|
||||
|
||||
ConeTwistJointBullet::ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &rbAFrame, const Transform &rbBFrame) :
|
||||
ConeTwistJointBullet::ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame) :
|
||||
JointBullet() {
|
||||
Transform scaled_AFrame(rbAFrame.scaled(rbA->get_body_scale()));
|
||||
Transform3D scaled_AFrame(rbAFrame.scaled(rbA->get_body_scale()));
|
||||
scaled_AFrame.basis.rotref_posscale_decomposition(scaled_AFrame.basis);
|
||||
|
||||
btTransform btFrameA;
|
||||
G_TO_B(scaled_AFrame, btFrameA);
|
||||
|
||||
if (rbB) {
|
||||
Transform scaled_BFrame(rbBFrame.scaled(rbB->get_body_scale()));
|
||||
Transform3D scaled_BFrame(rbBFrame.scaled(rbB->get_body_scale()));
|
||||
scaled_BFrame.basis.rotref_posscale_decomposition(scaled_BFrame.basis);
|
||||
|
||||
btTransform btFrameB;
|
||||
|
|
|
@ -43,7 +43,7 @@ class ConeTwistJointBullet : public JointBullet {
|
|||
class btConeTwistConstraint *coneConstraint;
|
||||
|
||||
public:
|
||||
ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &rbAFrame, const Transform &rbBFrame);
|
||||
ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &rbAFrame, const Transform3D &rbBFrame);
|
||||
|
||||
virtual PhysicsServer3D::JointType get_type() const { return PhysicsServer3D::JOINT_CONE_TWIST; }
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
@author AndreaCatania
|
||||
*/
|
||||
|
||||
Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB) :
|
||||
Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameInA, const Transform3D &frameInB) :
|
||||
JointBullet() {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
for (int j = 0; j < PhysicsServer3D::G6DOF_JOINT_FLAG_MAX; j++) {
|
||||
|
@ -48,7 +48,7 @@ Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBu
|
|||
}
|
||||
}
|
||||
|
||||
Transform scaled_AFrame(frameInA.scaled(rbA->get_body_scale()));
|
||||
Transform3D scaled_AFrame(frameInA.scaled(rbA->get_body_scale()));
|
||||
|
||||
scaled_AFrame.basis.rotref_posscale_decomposition(scaled_AFrame.basis);
|
||||
|
||||
|
@ -56,7 +56,7 @@ Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBu
|
|||
G_TO_B(scaled_AFrame, btFrameA);
|
||||
|
||||
if (rbB) {
|
||||
Transform scaled_BFrame(frameInB.scaled(rbB->get_body_scale()));
|
||||
Transform3D scaled_BFrame(frameInB.scaled(rbB->get_body_scale()));
|
||||
|
||||
scaled_BFrame.basis.rotref_posscale_decomposition(scaled_BFrame.basis);
|
||||
|
||||
|
@ -71,30 +71,30 @@ Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBu
|
|||
setup(sixDOFConstraint);
|
||||
}
|
||||
|
||||
Transform Generic6DOFJointBullet::getFrameOffsetA() const {
|
||||
Transform3D Generic6DOFJointBullet::getFrameOffsetA() const {
|
||||
btTransform btTrs = sixDOFConstraint->getFrameOffsetA();
|
||||
Transform gTrs;
|
||||
Transform3D gTrs;
|
||||
B_TO_G(btTrs, gTrs);
|
||||
return gTrs;
|
||||
}
|
||||
|
||||
Transform Generic6DOFJointBullet::getFrameOffsetB() const {
|
||||
Transform3D Generic6DOFJointBullet::getFrameOffsetB() const {
|
||||
btTransform btTrs = sixDOFConstraint->getFrameOffsetB();
|
||||
Transform gTrs;
|
||||
Transform3D gTrs;
|
||||
B_TO_G(btTrs, gTrs);
|
||||
return gTrs;
|
||||
}
|
||||
|
||||
Transform Generic6DOFJointBullet::getFrameOffsetA() {
|
||||
Transform3D Generic6DOFJointBullet::getFrameOffsetA() {
|
||||
btTransform btTrs = sixDOFConstraint->getFrameOffsetA();
|
||||
Transform gTrs;
|
||||
Transform3D gTrs;
|
||||
B_TO_G(btTrs, gTrs);
|
||||
return gTrs;
|
||||
}
|
||||
|
||||
Transform Generic6DOFJointBullet::getFrameOffsetB() {
|
||||
Transform3D Generic6DOFJointBullet::getFrameOffsetB() {
|
||||
btTransform btTrs = sixDOFConstraint->getFrameOffsetB();
|
||||
Transform gTrs;
|
||||
Transform3D gTrs;
|
||||
B_TO_G(btTrs, gTrs);
|
||||
return gTrs;
|
||||
}
|
||||
|
|
|
@ -48,14 +48,14 @@ class Generic6DOFJointBullet : public JointBullet {
|
|||
bool flags[3][PhysicsServer3D::G6DOF_JOINT_FLAG_MAX];
|
||||
|
||||
public:
|
||||
Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB);
|
||||
Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameInA, const Transform3D &frameInB);
|
||||
|
||||
virtual PhysicsServer3D::JointType get_type() const { return PhysicsServer3D::JOINT_6DOF; }
|
||||
|
||||
Transform getFrameOffsetA() const;
|
||||
Transform getFrameOffsetB() const;
|
||||
Transform getFrameOffsetA();
|
||||
Transform getFrameOffsetB();
|
||||
Transform3D getFrameOffsetA() const;
|
||||
Transform3D getFrameOffsetB() const;
|
||||
Transform3D getFrameOffsetA();
|
||||
Transform3D getFrameOffsetB();
|
||||
|
||||
void set_linear_lower_limit(const Vector3 &linearLower);
|
||||
void set_linear_upper_limit(const Vector3 &linearUpper);
|
||||
|
|
|
@ -40,16 +40,16 @@
|
|||
@author AndreaCatania
|
||||
*/
|
||||
|
||||
HingeJointBullet::HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameA, const Transform &frameB) :
|
||||
HingeJointBullet::HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameA, const Transform3D &frameB) :
|
||||
JointBullet() {
|
||||
Transform scaled_AFrame(frameA.scaled(rbA->get_body_scale()));
|
||||
Transform3D scaled_AFrame(frameA.scaled(rbA->get_body_scale()));
|
||||
scaled_AFrame.basis.rotref_posscale_decomposition(scaled_AFrame.basis);
|
||||
|
||||
btTransform btFrameA;
|
||||
G_TO_B(scaled_AFrame, btFrameA);
|
||||
|
||||
if (rbB) {
|
||||
Transform scaled_BFrame(frameB.scaled(rbB->get_body_scale()));
|
||||
Transform3D scaled_BFrame(frameB.scaled(rbB->get_body_scale()));
|
||||
scaled_BFrame.basis.rotref_posscale_decomposition(scaled_BFrame.basis);
|
||||
|
||||
btTransform btFrameB;
|
||||
|
|
|
@ -41,7 +41,7 @@ class HingeJointBullet : public JointBullet {
|
|||
class btHingeConstraint *hingeConstraint;
|
||||
|
||||
public:
|
||||
HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameA, const Transform &frameB);
|
||||
HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameA, const Transform3D &frameB);
|
||||
HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Vector3 &pivotInA, const Vector3 &pivotInB, const Vector3 &axisInA, const Vector3 &axisInB);
|
||||
|
||||
virtual PhysicsServer3D::JointType get_type() const { return PhysicsServer3D::JOINT_HINGE; }
|
||||
|
|
|
@ -106,11 +106,11 @@ Vector3 BulletPhysicsDirectBodyState3D::get_angular_velocity() const {
|
|||
return body->get_angular_velocity();
|
||||
}
|
||||
|
||||
void BulletPhysicsDirectBodyState3D::set_transform(const Transform &p_transform) {
|
||||
void BulletPhysicsDirectBodyState3D::set_transform(const Transform3D &p_transform) {
|
||||
body->set_transform(p_transform);
|
||||
}
|
||||
|
||||
Transform BulletPhysicsDirectBodyState3D::get_transform() const {
|
||||
Transform3D BulletPhysicsDirectBodyState3D::get_transform() const {
|
||||
return body->get_transform();
|
||||
}
|
||||
|
||||
|
|
|
@ -107,8 +107,8 @@ public:
|
|||
virtual void set_angular_velocity(const Vector3 &p_velocity) override;
|
||||
virtual Vector3 get_angular_velocity() const override;
|
||||
|
||||
virtual void set_transform(const Transform &p_transform) override;
|
||||
virtual Transform get_transform() const override;
|
||||
virtual void set_transform(const Transform3D &p_transform) override;
|
||||
virtual Transform3D get_transform() const override;
|
||||
|
||||
virtual void add_central_force(const Vector3 &p_force) override;
|
||||
virtual void add_force(const Vector3 &p_force, const Vector3 &p_position = Vector3()) override;
|
||||
|
|
|
@ -40,16 +40,16 @@
|
|||
@author AndreaCatania
|
||||
*/
|
||||
|
||||
SliderJointBullet::SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB) :
|
||||
SliderJointBullet::SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameInA, const Transform3D &frameInB) :
|
||||
JointBullet() {
|
||||
Transform scaled_AFrame(frameInA.scaled(rbA->get_body_scale()));
|
||||
Transform3D scaled_AFrame(frameInA.scaled(rbA->get_body_scale()));
|
||||
scaled_AFrame.basis.rotref_posscale_decomposition(scaled_AFrame.basis);
|
||||
|
||||
btTransform btFrameA;
|
||||
G_TO_B(scaled_AFrame, btFrameA);
|
||||
|
||||
if (rbB) {
|
||||
Transform scaled_BFrame(frameInB.scaled(rbB->get_body_scale()));
|
||||
Transform3D scaled_BFrame(frameInB.scaled(rbB->get_body_scale()));
|
||||
scaled_BFrame.basis.rotref_posscale_decomposition(scaled_BFrame.basis);
|
||||
|
||||
btTransform btFrameB;
|
||||
|
@ -70,44 +70,44 @@ const RigidBodyBullet *SliderJointBullet::getRigidBodyB() const {
|
|||
return static_cast<RigidBodyBullet *>(sliderConstraint->getRigidBodyB().getUserPointer());
|
||||
}
|
||||
|
||||
const Transform SliderJointBullet::getCalculatedTransformA() const {
|
||||
const Transform3D SliderJointBullet::getCalculatedTransformA() const {
|
||||
btTransform btTransform = sliderConstraint->getCalculatedTransformA();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
||||
const Transform SliderJointBullet::getCalculatedTransformB() const {
|
||||
const Transform3D SliderJointBullet::getCalculatedTransformB() const {
|
||||
btTransform btTransform = sliderConstraint->getCalculatedTransformB();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
||||
const Transform SliderJointBullet::getFrameOffsetA() const {
|
||||
const Transform3D SliderJointBullet::getFrameOffsetA() const {
|
||||
btTransform btTransform = sliderConstraint->getFrameOffsetA();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
||||
const Transform SliderJointBullet::getFrameOffsetB() const {
|
||||
const Transform3D SliderJointBullet::getFrameOffsetB() const {
|
||||
btTransform btTransform = sliderConstraint->getFrameOffsetB();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
||||
Transform SliderJointBullet::getFrameOffsetA() {
|
||||
Transform3D SliderJointBullet::getFrameOffsetA() {
|
||||
btTransform btTransform = sliderConstraint->getFrameOffsetA();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
||||
Transform SliderJointBullet::getFrameOffsetB() {
|
||||
Transform3D SliderJointBullet::getFrameOffsetB() {
|
||||
btTransform btTransform = sliderConstraint->getFrameOffsetB();
|
||||
Transform gTrans;
|
||||
Transform3D gTrans;
|
||||
B_TO_G(btTransform, gTrans);
|
||||
return gTrans;
|
||||
}
|
||||
|
|
|
@ -44,18 +44,18 @@ class SliderJointBullet : public JointBullet {
|
|||
|
||||
public:
|
||||
/// Reference frame is A
|
||||
SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB);
|
||||
SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform3D &frameInA, const Transform3D &frameInB);
|
||||
|
||||
virtual PhysicsServer3D::JointType get_type() const { return PhysicsServer3D::JOINT_SLIDER; }
|
||||
|
||||
const RigidBodyBullet *getRigidBodyA() const;
|
||||
const RigidBodyBullet *getRigidBodyB() const;
|
||||
const Transform getCalculatedTransformA() const;
|
||||
const Transform getCalculatedTransformB() const;
|
||||
const Transform getFrameOffsetA() const;
|
||||
const Transform getFrameOffsetB() const;
|
||||
Transform getFrameOffsetA();
|
||||
Transform getFrameOffsetB();
|
||||
const Transform3D getCalculatedTransformA() const;
|
||||
const Transform3D getCalculatedTransformB() const;
|
||||
const Transform3D getFrameOffsetA() const;
|
||||
const Transform3D getFrameOffsetB() const;
|
||||
Transform3D getFrameOffsetA();
|
||||
Transform3D getFrameOffsetB();
|
||||
real_t getLowerLinLimit() const;
|
||||
void setLowerLinLimit(real_t lowerLimit);
|
||||
real_t getUpperLinLimit() const;
|
||||
|
|
|
@ -136,7 +136,7 @@ void SoftBodyBullet::destroy_soft_body() {
|
|||
bt_soft_body = nullptr;
|
||||
}
|
||||
|
||||
void SoftBodyBullet::set_soft_transform(const Transform &p_transform) {
|
||||
void SoftBodyBullet::set_soft_transform(const Transform3D &p_transform) {
|
||||
reset_all_node_positions();
|
||||
move_all_nodes(p_transform);
|
||||
}
|
||||
|
@ -159,7 +159,7 @@ AABB SoftBodyBullet::get_bounds() const {
|
|||
return aabb;
|
||||
}
|
||||
|
||||
void SoftBodyBullet::move_all_nodes(const Transform &p_transform) {
|
||||
void SoftBodyBullet::move_all_nodes(const Transform3D &p_transform) {
|
||||
if (!bt_soft_body) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -104,11 +104,11 @@ public:
|
|||
void destroy_soft_body();
|
||||
|
||||
// Special function. This function has bad performance
|
||||
void set_soft_transform(const Transform &p_transform);
|
||||
void set_soft_transform(const Transform3D &p_transform);
|
||||
|
||||
AABB get_bounds() const;
|
||||
|
||||
void move_all_nodes(const Transform &p_transform);
|
||||
void move_all_nodes(const Transform3D &p_transform);
|
||||
void set_node_position(int node_index, const Vector3 &p_global_position);
|
||||
void set_node_position(int node_index, const btVector3 &p_global_position);
|
||||
void get_node_position(int node_index, Vector3 &r_position) const;
|
||||
|
|
|
@ -117,7 +117,7 @@ bool BulletPhysicsDirectSpaceState::intersect_ray(const Vector3 &p_from, const V
|
|||
}
|
||||
}
|
||||
|
||||
int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Transform3D &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
if (p_result_max <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
|
|||
return btQuery.m_count;
|
||||
}
|
||||
|
||||
bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &r_closest_safe, real_t &r_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
|
||||
bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &r_closest_safe, real_t &r_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
|
||||
r_closest_safe = 0.0f;
|
||||
r_closest_unsafe = 0.0f;
|
||||
btVector3 bt_motion;
|
||||
|
@ -214,7 +214,7 @@ bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transf
|
|||
}
|
||||
|
||||
/// Returns the list of contacts pairs in this order: Local contact, other body contact
|
||||
bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
if (p_result_max <= 0) {
|
||||
return false;
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform &
|
|||
return btQuery.m_count;
|
||||
}
|
||||
|
||||
bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->getornull(p_shape);
|
||||
ERR_FAIL_COND_V(!shape, false);
|
||||
|
||||
|
@ -908,7 +908,7 @@ static Ref<StandardMaterial3D> red_mat;
|
|||
static Ref<StandardMaterial3D> blue_mat;
|
||||
#endif
|
||||
|
||||
bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_from, const Vector3 &p_motion, bool p_infinite_inertia, PhysicsServer3D::MotionResult *r_result, bool p_exclude_raycast_shapes) {
|
||||
bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform3D &p_from, const Vector3 &p_motion, bool p_infinite_inertia, PhysicsServer3D::MotionResult *r_result, bool p_exclude_raycast_shapes) {
|
||||
#if debug_test_motion
|
||||
/// Yes I know this is not good, but I've used it as fast debugging hack.
|
||||
/// I'm leaving it here just for speedup the other eventual debugs
|
||||
|
@ -1062,7 +1062,7 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
|
|||
return has_penetration;
|
||||
}
|
||||
|
||||
int SpaceBullet::test_ray_separation(RigidBodyBullet *p_body, const Transform &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, PhysicsServer3D::SeparationResult *r_results, int p_result_max, real_t p_margin) {
|
||||
int SpaceBullet::test_ray_separation(RigidBodyBullet *p_body, const Transform3D &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, PhysicsServer3D::SeparationResult *r_results, int p_result_max, real_t p_margin) {
|
||||
btTransform body_transform;
|
||||
G_TO_B(p_transform, body_transform);
|
||||
UNSCALE_BT_BASIS(body_transform);
|
||||
|
|
|
@ -78,11 +78,11 @@ public:
|
|||
|
||||
virtual int intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, bool p_pick_ray = false) override;
|
||||
virtual int intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &r_closest_safe, real_t &r_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, ShapeRestInfo *r_info = nullptr) override;
|
||||
virtual int intersect_shape(const RID &p_shape, const Transform3D &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &r_closest_safe, real_t &r_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false, ShapeRestInfo *r_info = nullptr) override;
|
||||
/// Returns the list of contacts pairs in this order: Local contact, other body contact
|
||||
virtual bool collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool collide_shape(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual bool rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, bool p_collide_with_bodies = true, bool p_collide_with_areas = false) override;
|
||||
virtual Vector3 get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const override;
|
||||
};
|
||||
|
||||
|
@ -188,8 +188,8 @@ public:
|
|||
real_t get_linear_damp() const { return linear_damp; }
|
||||
real_t get_angular_damp() const { return angular_damp; }
|
||||
|
||||
bool test_body_motion(RigidBodyBullet *p_body, const Transform &p_from, const Vector3 &p_motion, bool p_infinite_inertia, PhysicsServer3D::MotionResult *r_result, bool p_exclude_raycast_shapes);
|
||||
int test_ray_separation(RigidBodyBullet *p_body, const Transform &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, PhysicsServer3D::SeparationResult *r_results, int p_result_max, real_t p_margin);
|
||||
bool test_body_motion(RigidBodyBullet *p_body, const Transform3D &p_from, const Vector3 &p_motion, bool p_infinite_inertia, PhysicsServer3D::MotionResult *r_result, bool p_exclude_raycast_shapes);
|
||||
int test_ray_separation(RigidBodyBullet *p_body, const Transform3D &p_transform, bool p_infinite_inertia, Vector3 &r_recover_motion, PhysicsServer3D::SeparationResult *r_results, int p_result_max, real_t p_margin);
|
||||
|
||||
private:
|
||||
void create_empty_world(bool p_create_soft_world);
|
||||
|
|
|
@ -265,7 +265,7 @@ void CSGBrush::build_from_faces(const Vector<Vector3> &p_vertices, const Vector<
|
|||
_regen_face_aabbs();
|
||||
}
|
||||
|
||||
void CSGBrush::copy_from(const CSGBrush &p_brush, const Transform &p_xform) {
|
||||
void CSGBrush::copy_from(const CSGBrush &p_brush, const Transform3D &p_xform) {
|
||||
faces = p_brush.faces;
|
||||
materials = p_brush.materials;
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ struct CSGBrush {
|
|||
|
||||
// Create a brush from faces.
|
||||
void build_from_faces(const Vector<Vector3> &p_vertices, const Vector<Vector2> &p_uvs, const Vector<bool> &p_smooth, const Vector<Ref<Material>> &p_materials, const Vector<bool> &p_invert_faces);
|
||||
void copy_from(const CSGBrush &p_brush, const Transform &p_xform);
|
||||
void copy_from(const CSGBrush &p_brush, const Transform3D &p_xform);
|
||||
};
|
||||
|
||||
struct CSGBrushOperation {
|
||||
|
@ -165,8 +165,8 @@ struct CSGBrushOperation {
|
|||
Vector<Vertex2D> vertices;
|
||||
Vector<Face2D> faces;
|
||||
Plane plane;
|
||||
Transform to_2D;
|
||||
Transform to_3D;
|
||||
Transform3D to_2D;
|
||||
Transform3D to_3D;
|
||||
float vertex_snap2 = 0.0;
|
||||
|
||||
inline int _get_point_idx(const Vector2 &p_point);
|
||||
|
|
|
@ -99,9 +99,9 @@ Variant CSGShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int
|
|||
void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
|
||||
CSGShape3D *cs = Object::cast_to<CSGShape3D>(p_gizmo->get_spatial_node());
|
||||
|
||||
Transform gt = cs->get_global_transform();
|
||||
Transform3D gt = cs->get_global_transform();
|
||||
//gt.orthonormalize();
|
||||
Transform gi = gt.affine_inverse();
|
||||
Transform3D gi = gt.affine_inverse();
|
||||
|
||||
Vector3 ray_from = p_camera->project_ray_origin(p_point);
|
||||
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
|
||||
|
|
|
@ -578,7 +578,7 @@ Array CSGShape3D::get_meshes() const {
|
|||
if (root_mesh.is_valid()) {
|
||||
Array arr;
|
||||
arr.resize(2);
|
||||
arr[0] = Transform();
|
||||
arr[0] = Transform3D();
|
||||
arr[1] = root_mesh;
|
||||
return arr;
|
||||
}
|
||||
|
@ -1978,13 +1978,13 @@ CSGBrush *CSGPolygon3D::_build_brush() {
|
|||
float u1 = 0.0;
|
||||
float u2 = path_continuous_u ? 0.0 : 1.0;
|
||||
|
||||
Transform path_to_this;
|
||||
Transform3D path_to_this;
|
||||
if (!path_local) {
|
||||
// center on paths origin
|
||||
path_to_this = get_global_transform().affine_inverse() * path->get_global_transform();
|
||||
}
|
||||
|
||||
Transform prev_xf;
|
||||
Transform3D prev_xf;
|
||||
|
||||
Vector3 lookat_dir;
|
||||
|
||||
|
@ -2006,7 +2006,7 @@ CSGBrush *CSGPolygon3D::_build_brush() {
|
|||
ofs = 0.0;
|
||||
}
|
||||
|
||||
Transform xf;
|
||||
Transform3D xf;
|
||||
xf.origin = curve->interpolate_baked(ofs);
|
||||
|
||||
Vector3 local_dir;
|
||||
|
|
|
@ -79,23 +79,23 @@ enum RotOrder {
|
|||
// references: ComputePivotTransform / run the calculation
|
||||
// This is the local pivot transform for the node, not the global transforms
|
||||
Transform ComputePivotTransform(
|
||||
Transform chain[TransformationComp_MAXIMUM],
|
||||
Transform &geometric_transform) {
|
||||
Transform3D chain[TransformationComp_MAXIMUM],
|
||||
Transform3D &geometric_transform) {
|
||||
// Maya pivots
|
||||
Transform T = chain[TransformationComp_Translation];
|
||||
Transform Roff = chain[TransformationComp_RotationOffset];
|
||||
Transform Rp = chain[TransformationComp_RotationPivot];
|
||||
Transform Rpre = chain[TransformationComp_PreRotation];
|
||||
Transform R = chain[TransformationComp_Rotation];
|
||||
Transform Rpost = chain[TransformationComp_PostRotation];
|
||||
Transform Soff = chain[TransformationComp_ScalingOffset];
|
||||
Transform Sp = chain[TransformationComp_ScalingPivot];
|
||||
Transform S = chain[TransformationComp_Scaling];
|
||||
Transform3D T = chain[TransformationComp_Translation];
|
||||
Transform3D Roff = chain[TransformationComp_RotationOffset];
|
||||
Transform3D Rp = chain[TransformationComp_RotationPivot];
|
||||
Transform3D Rpre = chain[TransformationComp_PreRotation];
|
||||
Transform3D R = chain[TransformationComp_Rotation];
|
||||
Transform3D Rpost = chain[TransformationComp_PostRotation];
|
||||
Transform3D Soff = chain[TransformationComp_ScalingOffset];
|
||||
Transform3D Sp = chain[TransformationComp_ScalingPivot];
|
||||
Transform3D S = chain[TransformationComp_Scaling];
|
||||
|
||||
// 3DS Max Pivots
|
||||
Transform OT = chain[TransformationComp_GeometricTranslation];
|
||||
Transform OR = chain[TransformationComp_GeometricRotation];
|
||||
Transform OS = chain[TransformationComp_GeometricScaling];
|
||||
Transform3D OT = chain[TransformationComp_GeometricTranslation];
|
||||
Transform3D OR = chain[TransformationComp_GeometricRotation];
|
||||
Transform3D OS = chain[TransformationComp_GeometricScaling];
|
||||
|
||||
// Calculate 3DS max pivot transform - use geometric space (e.g doesn't effect children nodes only the current node)
|
||||
geometric_transform = OT * OR * OS;
|
||||
|
|
|
@ -116,8 +116,8 @@ void PivotTransform::ReadTransformChain() {
|
|||
}
|
||||
}
|
||||
|
||||
Transform PivotTransform::ComputeLocalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const {
|
||||
Transform T, Roff, Rp, Soff, Sp, S;
|
||||
Transform3D PivotTransform::ComputeLocalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const {
|
||||
Transform3D T, Roff, Rp, Soff, Sp, S;
|
||||
|
||||
// Here I assume this is the operation which needs done.
|
||||
// Its WorldTransform * V
|
||||
|
@ -132,29 +132,29 @@ Transform PivotTransform::ComputeLocalTransform(Vector3 p_translation, Quat p_ro
|
|||
// Scaling node
|
||||
S.scale(p_scaling);
|
||||
// Rotation pivots
|
||||
Transform Rpre = Transform(pre_rotation);
|
||||
Transform R = Transform(p_rotation);
|
||||
Transform Rpost = Transform(post_rotation);
|
||||
Transform3D Rpre = Transform3D(pre_rotation);
|
||||
Transform3D R = Transform3D(p_rotation);
|
||||
Transform3D Rpost = Transform3D(post_rotation);
|
||||
|
||||
return T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
|
||||
}
|
||||
|
||||
Transform PivotTransform::ComputeGlobalTransform(Transform t) const {
|
||||
Transform3D PivotTransform::ComputeGlobalTransform(Transform3D t) const {
|
||||
Vector3 pos = t.origin;
|
||||
Vector3 scale = t.basis.get_scale();
|
||||
Quat rot = t.basis.get_rotation_quat();
|
||||
return ComputeGlobalTransform(pos, rot, scale);
|
||||
}
|
||||
|
||||
Transform PivotTransform::ComputeLocalTransform(Transform t) const {
|
||||
Transform3D PivotTransform::ComputeLocalTransform(Transform3D t) const {
|
||||
Vector3 pos = t.origin;
|
||||
Vector3 scale = t.basis.get_scale();
|
||||
Quat rot = t.basis.get_rotation_quat();
|
||||
return ComputeLocalTransform(pos, rot, scale);
|
||||
}
|
||||
|
||||
Transform PivotTransform::ComputeGlobalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const {
|
||||
Transform T, Roff, Rp, Soff, Sp, S;
|
||||
Transform3D PivotTransform::ComputeGlobalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const {
|
||||
Transform3D T, Roff, Rp, Soff, Sp, S;
|
||||
|
||||
// Here I assume this is the operation which needs done.
|
||||
// Its WorldTransform * V
|
||||
|
@ -170,26 +170,26 @@ Transform PivotTransform::ComputeGlobalTransform(Vector3 p_translation, Quat p_r
|
|||
S.scale(p_scaling);
|
||||
|
||||
// Rotation pivots
|
||||
Transform Rpre = Transform(pre_rotation);
|
||||
Transform R = Transform(p_rotation);
|
||||
Transform Rpost = Transform(post_rotation);
|
||||
Transform3D Rpre = Transform3D(pre_rotation);
|
||||
Transform3D R = Transform3D(p_rotation);
|
||||
Transform3D Rpost = Transform3D(post_rotation);
|
||||
|
||||
Transform parent_global_xform;
|
||||
Transform parent_local_scaling_m;
|
||||
Transform3D parent_global_xform;
|
||||
Transform3D parent_local_scaling_m;
|
||||
|
||||
if (parent_transform.is_valid()) {
|
||||
parent_global_xform = parent_transform->GlobalTransform;
|
||||
parent_local_scaling_m = parent_transform->Local_Scaling_Matrix;
|
||||
}
|
||||
|
||||
Transform local_rotation_m, parent_global_rotation_m;
|
||||
Transform3D local_rotation_m, parent_global_rotation_m;
|
||||
Quat parent_global_rotation = parent_global_xform.basis.get_rotation_quat();
|
||||
parent_global_rotation_m.basis.set_quat(parent_global_rotation);
|
||||
local_rotation_m = Rpre * R * Rpost;
|
||||
|
||||
//Basis parent_global_rotation = Basis(parent_global_xform.get_basis().get_rotation_quat().normalized());
|
||||
|
||||
Transform local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
|
||||
Transform3D local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
|
||||
Vector3 parent_translation = parent_global_xform.get_origin();
|
||||
parent_shear_translation.origin = parent_translation;
|
||||
parent_shear_rotation = parent_shear_translation.affine_inverse() * parent_global_xform;
|
||||
|
@ -197,26 +197,26 @@ Transform PivotTransform::ComputeGlobalTransform(Vector3 p_translation, Quat p_r
|
|||
local_shear_scaling = S;
|
||||
|
||||
// Inherit type handler - we don't care about T here, just reordering RSrs etc.
|
||||
Transform global_rotation_scale;
|
||||
Transform3D global_rotation_scale;
|
||||
if (inherit_type == FBXDocParser::Transform_RrSs) {
|
||||
global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_shear_scaling * local_shear_scaling;
|
||||
} else if (inherit_type == FBXDocParser::Transform_RSrs) {
|
||||
global_rotation_scale = parent_global_rotation_m * parent_shear_scaling * local_rotation_m * local_shear_scaling;
|
||||
} else if (inherit_type == FBXDocParser::Transform_Rrs) {
|
||||
Transform parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.affine_inverse();
|
||||
Transform3D parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.affine_inverse();
|
||||
global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_global_shear_m_noLocal * local_shear_scaling;
|
||||
}
|
||||
Transform local_transform = T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
|
||||
//Transform local_translation_pivoted = Transform(Basis(), LocalTransform.origin);
|
||||
Transform3D local_transform = T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
|
||||
//Transform3D local_translation_pivoted = Transform3D(Basis(), LocalTransform.origin);
|
||||
|
||||
ERR_FAIL_COND_V_MSG(local_transform.basis.determinant() == 0, Transform(), "Det == 0 prevented in scene file");
|
||||
ERR_FAIL_COND_V_MSG(local_transform.basis.determinant() == 0, Transform3D(), "Det == 0 prevented in scene file");
|
||||
|
||||
// manual hack to force SSC not to be compensated for - until we can handle it properly with tests
|
||||
return parent_global_xform * local_transform;
|
||||
}
|
||||
|
||||
void PivotTransform::ComputePivotTransform() {
|
||||
Transform T, Roff, Rp, Soff, Sp, S;
|
||||
Transform3D T, Roff, Rp, Soff, Sp, S;
|
||||
|
||||
// Here I assume this is the operation which needs done.
|
||||
// Its WorldTransform * V
|
||||
|
@ -237,26 +237,26 @@ void PivotTransform::ComputePivotTransform() {
|
|||
Local_Scaling_Matrix = S; // copy for when node / child is looking for the value of this.
|
||||
|
||||
// Rotation pivots
|
||||
Transform Rpre = Transform(pre_rotation);
|
||||
Transform R = Transform(rotation);
|
||||
Transform Rpost = Transform(post_rotation);
|
||||
Transform3D Rpre = Transform3D(pre_rotation);
|
||||
Transform3D R = Transform3D(rotation);
|
||||
Transform3D Rpost = Transform3D(post_rotation);
|
||||
|
||||
Transform parent_global_xform;
|
||||
Transform parent_local_scaling_m;
|
||||
Transform3D parent_global_xform;
|
||||
Transform3D parent_local_scaling_m;
|
||||
|
||||
if (parent_transform.is_valid()) {
|
||||
parent_global_xform = parent_transform->GlobalTransform;
|
||||
parent_local_scaling_m = parent_transform->Local_Scaling_Matrix;
|
||||
}
|
||||
|
||||
Transform local_rotation_m, parent_global_rotation_m;
|
||||
Transform3D local_rotation_m, parent_global_rotation_m;
|
||||
Quat parent_global_rotation = parent_global_xform.basis.get_rotation_quat();
|
||||
parent_global_rotation_m.basis.set_quat(parent_global_rotation);
|
||||
local_rotation_m = Rpre * R * Rpost;
|
||||
|
||||
//Basis parent_global_rotation = Basis(parent_global_xform.get_basis().get_rotation_quat().normalized());
|
||||
|
||||
Transform local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
|
||||
Transform3D local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
|
||||
Vector3 parent_translation = parent_global_xform.get_origin();
|
||||
parent_shear_translation.origin = parent_translation;
|
||||
parent_shear_rotation = parent_shear_translation.affine_inverse() * parent_global_xform;
|
||||
|
@ -264,24 +264,24 @@ void PivotTransform::ComputePivotTransform() {
|
|||
local_shear_scaling = S;
|
||||
|
||||
// Inherit type handler - we don't care about T here, just reordering RSrs etc.
|
||||
Transform global_rotation_scale;
|
||||
Transform3D global_rotation_scale;
|
||||
if (inherit_type == FBXDocParser::Transform_RrSs) {
|
||||
global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_shear_scaling * local_shear_scaling;
|
||||
} else if (inherit_type == FBXDocParser::Transform_RSrs) {
|
||||
global_rotation_scale = parent_global_rotation_m * parent_shear_scaling * local_rotation_m * local_shear_scaling;
|
||||
} else if (inherit_type == FBXDocParser::Transform_Rrs) {
|
||||
Transform parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.inverse();
|
||||
Transform3D parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.inverse();
|
||||
global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_global_shear_m_noLocal * local_shear_scaling;
|
||||
}
|
||||
LocalTransform = Transform();
|
||||
LocalTransform = Transform3D();
|
||||
LocalTransform = T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
|
||||
|
||||
ERR_FAIL_COND_MSG(LocalTransform.basis.determinant() == 0, "invalid scale reset");
|
||||
|
||||
Transform local_translation_pivoted = Transform(Basis(), LocalTransform.origin);
|
||||
GlobalTransform = Transform();
|
||||
Transform3D local_translation_pivoted = Transform3D(Basis(), LocalTransform.origin);
|
||||
GlobalTransform = Transform3D();
|
||||
//GlobalTransform = parent_global_xform * LocalTransform;
|
||||
Transform global_origin = Transform(Basis(), parent_translation);
|
||||
Transform3D global_origin = Transform3D(Basis(), parent_translation);
|
||||
GlobalTransform = (global_origin * local_translation_pivoted) * global_rotation_scale;
|
||||
|
||||
ImportUtils::debug_xform("local xform calculation", LocalTransform);
|
||||
|
|
|
@ -85,10 +85,10 @@ struct PivotTransform : Reference, ModelAbstraction {
|
|||
print_verbose("raw post_rotation " + raw_post_rotation * (180 / Math_PI));
|
||||
}
|
||||
|
||||
Transform ComputeGlobalTransform(Transform t) const;
|
||||
Transform ComputeLocalTransform(Transform t) const;
|
||||
Transform ComputeGlobalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const;
|
||||
Transform ComputeLocalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const;
|
||||
Transform3D ComputeGlobalTransform(Transform3D t) const;
|
||||
Transform3D ComputeLocalTransform(Transform3D t) const;
|
||||
Transform3D ComputeGlobalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const;
|
||||
Transform3D ComputeLocalTransform(Vector3 p_translation, Quat p_rotation, Vector3 p_scaling) const;
|
||||
|
||||
/* Extract into xforms and calculate once */
|
||||
void ComputePivotTransform();
|
||||
|
@ -105,10 +105,10 @@ struct PivotTransform : Reference, ModelAbstraction {
|
|||
//Transform chain[TransformationComp_MAXIMUM];
|
||||
|
||||
// cached for later use
|
||||
Transform GlobalTransform = Transform();
|
||||
Transform LocalTransform = Transform();
|
||||
Transform Local_Scaling_Matrix = Transform(); // used for inherit type.
|
||||
Transform GeometricTransform = Transform(); // 3DS max only
|
||||
Transform3D GlobalTransform = Transform3D();
|
||||
Transform3D LocalTransform = Transform3D();
|
||||
Transform3D Local_Scaling_Matrix = Transform3D(); // used for inherit type.
|
||||
Transform3D GeometricTransform = Transform3D(); // 3DS max only
|
||||
FBXDocParser::TransformInheritance inherit_type = FBXDocParser::TransformInheritance_MAX; // maya fbx requires this - sorry <3
|
||||
};
|
||||
|
||||
|
|
|
@ -1023,7 +1023,7 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
|
|||
bone = state.fbx_bone_map[target_id];
|
||||
}
|
||||
|
||||
Transform target_transform;
|
||||
Transform3D target_transform;
|
||||
|
||||
if (state.fbx_target_map.has(target_id)) {
|
||||
Ref<FBXNode> node_ref = state.fbx_target_map[target_id];
|
||||
|
@ -1165,7 +1165,7 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
|
|||
}
|
||||
|
||||
bool valid_rest = false;
|
||||
Transform bone_rest;
|
||||
Transform3D bone_rest;
|
||||
int skeleton_bone = -1;
|
||||
if (state.fbx_bone_map.has(target_id)) {
|
||||
if (bone.is_valid() && bone->fbx_skeleton.is_valid()) {
|
||||
|
@ -1208,10 +1208,10 @@ Node3D *EditorSceneImporterFBX::_generate_scene(
|
|||
|
||||
// node animations must also include pivots
|
||||
if (skeleton_bone >= 0) {
|
||||
Transform xform = Transform();
|
||||
Transform3D xform = Transform3D();
|
||||
xform.basis.set_quat_scale(rot, scale);
|
||||
xform.origin = pos;
|
||||
const Transform t = bone_rest.affine_inverse() * xform;
|
||||
const Transform3D t = bone_rest.affine_inverse() * xform;
|
||||
|
||||
// populate this again
|
||||
rot = t.basis.get_rotation_quat();
|
||||
|
|
|
@ -242,13 +242,13 @@ public:
|
|||
return target_id;
|
||||
}
|
||||
|
||||
Transform GetBindPose() const {
|
||||
Transform3D GetBindPose() const {
|
||||
return transform;
|
||||
}
|
||||
|
||||
private:
|
||||
uint64_t target_id = 0;
|
||||
Transform transform;
|
||||
Transform3D transform;
|
||||
};
|
||||
|
||||
/** DOM base class for FBX cameras attached to a node */
|
||||
|
@ -905,11 +905,11 @@ public:
|
|||
}
|
||||
|
||||
/** */
|
||||
const Transform &GetTransform() const {
|
||||
const Transform3D &GetTransform() const {
|
||||
return transform;
|
||||
}
|
||||
|
||||
const Transform &TransformLink() const {
|
||||
const Transform3D &TransformLink() const {
|
||||
return transformLink;
|
||||
}
|
||||
|
||||
|
@ -917,7 +917,7 @@ public:
|
|||
return node;
|
||||
}
|
||||
|
||||
const Transform &TransformAssociateModel() const {
|
||||
const Transform3D &TransformAssociateModel() const {
|
||||
return transformAssociateModel;
|
||||
}
|
||||
|
||||
|
@ -941,9 +941,9 @@ private:
|
|||
std::vector<float> weights;
|
||||
std::vector<unsigned int> indices;
|
||||
|
||||
Transform transform;
|
||||
Transform transformLink;
|
||||
Transform transformAssociateModel;
|
||||
Transform3D transform;
|
||||
Transform3D transformLink;
|
||||
Transform3D transformAssociateModel;
|
||||
SkinLinkMode link_mode;
|
||||
bool valid_transformAssociateModel = false;
|
||||
const Model *node = nullptr;
|
||||
|
|
|
@ -1157,7 +1157,7 @@ void ParseVectorDataArray(std::vector<int64_t> &out, const ElementPtr el) {
|
|||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
Transform ReadMatrix(const ElementPtr element) {
|
||||
Transform3D ReadMatrix(const ElementPtr element) {
|
||||
std::vector<float> values;
|
||||
ParseVectorDataArray(values, element);
|
||||
|
||||
|
@ -1172,7 +1172,7 @@ Transform ReadMatrix(const ElementPtr element) {
|
|||
}
|
||||
}
|
||||
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
Basis basis;
|
||||
|
||||
basis.set(
|
||||
|
|
|
@ -264,7 +264,7 @@ TokenPtr GetRequiredToken(const ElementPtr el, unsigned int index);
|
|||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// read a 4x4 matrix from an array of 16 floats
|
||||
Transform ReadMatrix(const ElementPtr element);
|
||||
Transform3D ReadMatrix(const ElementPtr element);
|
||||
} // namespace FBXDocParser
|
||||
|
||||
#endif // FBX_PARSER_H
|
||||
|
|
|
@ -121,9 +121,9 @@ Vector3 ImportUtils::QuaternionToEuler(FBXDocParser::Model::RotOrder mode, const
|
|||
return BasisToEuler(mode, p_rotation);
|
||||
}
|
||||
|
||||
Transform get_unscaled_transform(const Transform &p_initial, real_t p_scale) {
|
||||
Transform unscaled = Transform(p_initial.basis, p_initial.origin * p_scale);
|
||||
ERR_FAIL_COND_V_MSG(unscaled.basis.determinant() == 0, Transform(), "det is zero unscaled?");
|
||||
Transform3D get_unscaled_transform(const Transform3D &p_initial, real_t p_scale) {
|
||||
Transform3D unscaled = Transform3D(p_initial.basis, p_initial.origin * p_scale);
|
||||
ERR_FAIL_COND_V_MSG(unscaled.basis.determinant() == 0, Transform3D(), "det is zero unscaled?");
|
||||
return unscaled;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ public:
|
|||
/// Converts quaternion into rotation order vector (in rad).
|
||||
static Vector3 QuaternionToEuler(FBXDocParser::Model::RotOrder mode, const Quat &p_rotation);
|
||||
|
||||
static void debug_xform(String name, const Transform &t) {
|
||||
static void debug_xform(String name, const Transform3D &t) {
|
||||
print_verbose(name + " " + t.origin + " rotation: " + (t.basis.get_euler() * (180 / Math_PI)));
|
||||
}
|
||||
|
||||
|
@ -391,7 +391,7 @@ public:
|
|||
};
|
||||
|
||||
// Apply the transforms so the basis will have scale 1.
|
||||
Transform get_unscaled_transform(const Transform &p_initial, real_t p_scale);
|
||||
Transform3D get_unscaled_transform(const Transform3D &p_initial, real_t p_scale);
|
||||
|
||||
/// Uses the Newell's method to compute any polygon normal.
|
||||
/// The polygon must be at least size of 3 or bigger.
|
||||
|
|
|
@ -32,18 +32,18 @@
|
|||
|
||||
#include "core/math/transform.h"
|
||||
|
||||
static_assert(sizeof(godot_transform) == sizeof(Transform), "Transform size mismatch");
|
||||
static_assert(sizeof(godot_transform) == sizeof(Transform3D), "Transform3D size mismatch");
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void GDAPI godot_transform_new(godot_transform *p_self) {
|
||||
memnew_placement(p_self, Transform);
|
||||
memnew_placement(p_self, Transform3D);
|
||||
}
|
||||
|
||||
void GDAPI godot_transform_new_copy(godot_transform *r_dest, const godot_transform *p_src) {
|
||||
memnew_placement(r_dest, Transform(*(Transform *)p_src));
|
||||
memnew_placement(r_dest, Transform3D(*(Transform3D *)p_src));
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -163,7 +163,7 @@ void GDAPI godot_variant_new_basis(godot_variant *r_dest, const godot_basis *p_b
|
|||
|
||||
void GDAPI godot_variant_new_transform(godot_variant *r_dest, const godot_transform *p_trans) {
|
||||
Variant *dest = (Variant *)r_dest;
|
||||
const Transform *trans = (const Transform *)p_trans;
|
||||
const Transform3D *trans = (const Transform3D *)p_trans;
|
||||
memnew_placement_custom(dest, Variant, Variant(*trans));
|
||||
}
|
||||
|
||||
|
@ -405,7 +405,7 @@ godot_basis GDAPI godot_variant_as_basis(const godot_variant *p_self) {
|
|||
godot_transform GDAPI godot_variant_as_transform(const godot_variant *p_self) {
|
||||
godot_transform raw_dest;
|
||||
const Variant *self = (const Variant *)p_self;
|
||||
Transform *dest = (Transform *)&raw_dest;
|
||||
Transform3D *dest = (Transform3D *)&raw_dest;
|
||||
*dest = *self;
|
||||
return raw_dest;
|
||||
}
|
||||
|
|
|
@ -363,7 +363,7 @@ void unregister_gdnative_types() {
|
|||
print_line(String("aabb:\t") + itos(sizeof(AABB)));
|
||||
print_line(String("rid:\t") + itos(sizeof(RID)));
|
||||
print_line(String("string:\t") + itos(sizeof(String)));
|
||||
print_line(String("transform:\t") + itos(sizeof(Transform)));
|
||||
print_line(String("transform:\t") + itos(sizeof(Transform3D)));
|
||||
print_line(String("transfo2D:\t") + itos(sizeof(Transform2D)));
|
||||
print_line(String("variant:\t") + itos(sizeof(Variant)));
|
||||
print_line(String("vector2:\t") + itos(sizeof(Vector2)));
|
||||
|
|
|
@ -173,14 +173,14 @@ Size2 XRInterfaceGDNative::get_render_targetsize() {
|
|||
return *vec;
|
||||
}
|
||||
|
||||
Transform XRInterfaceGDNative::get_transform_for_eye(XRInterface::Eyes p_eye, const Transform &p_cam_transform) {
|
||||
Transform *ret;
|
||||
Transform3D XRInterfaceGDNative::get_transform_for_eye(XRInterface::Eyes p_eye, const Transform3D &p_cam_transform) {
|
||||
Transform3D *ret;
|
||||
|
||||
ERR_FAIL_COND_V(interface == nullptr, Transform());
|
||||
ERR_FAIL_COND_V(interface == nullptr, Transform3D());
|
||||
|
||||
godot_transform t = interface->get_transform_for_eye(data, (int)p_eye, (godot_transform *)&p_cam_transform);
|
||||
|
||||
ret = (Transform *)&t;
|
||||
ret = (Transform3D *)&t;
|
||||
|
||||
return *ret;
|
||||
}
|
||||
|
@ -243,13 +243,13 @@ godot_float GDAPI godot_xr_get_worldscale() {
|
|||
|
||||
godot_transform GDAPI godot_xr_get_reference_frame() {
|
||||
godot_transform reference_frame;
|
||||
Transform *reference_frame_ptr = (Transform *)&reference_frame;
|
||||
Transform3D *reference_frame_ptr = (Transform3D *)&reference_frame;
|
||||
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
if (xr_server != nullptr) {
|
||||
*reference_frame_ptr = xr_server->get_reference_frame();
|
||||
} else {
|
||||
memnew_placement(&reference_frame, Transform);
|
||||
memnew_placement(&reference_frame, Transform3D);
|
||||
}
|
||||
|
||||
return reference_frame;
|
||||
|
@ -362,7 +362,7 @@ void GDAPI godot_xr_set_controller_transform(godot_int p_controller_id, godot_tr
|
|||
|
||||
Ref<XRPositionalTracker> tracker = xr_server->find_by_type_and_id(XRServer::TRACKER_CONTROLLER, p_controller_id);
|
||||
if (tracker.is_valid()) {
|
||||
Transform *transform = (Transform *)p_transform;
|
||||
Transform3D *transform = (Transform3D *)p_transform;
|
||||
if (p_tracks_orientation) {
|
||||
tracker->set_orientation(transform->basis);
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
/** rendering and internal **/
|
||||
virtual Size2 get_render_targetsize() override;
|
||||
virtual bool is_stereo() override;
|
||||
virtual Transform get_transform_for_eye(XRInterface::Eyes p_eye, const Transform &p_cam_transform) override;
|
||||
virtual Transform3D get_transform_for_eye(XRInterface::Eyes p_eye, const Transform3D &p_cam_transform) override;
|
||||
|
||||
// we expose a Vector<float> version of this function to GDNative
|
||||
Vector<float> _get_projection_for_eye(XRInterface::Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far);
|
||||
|
|
|
@ -270,7 +270,7 @@ COMMAND_2(region_set_map, RID, p_region, RID, p_map) {
|
|||
}
|
||||
}
|
||||
|
||||
COMMAND_2(region_set_transform, RID, p_region, Transform, p_transform) {
|
||||
COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform) {
|
||||
NavRegion *region = region_owner.getornull(p_region);
|
||||
ERR_FAIL_COND(region == nullptr);
|
||||
|
||||
|
|
|
@ -113,7 +113,7 @@ public:
|
|||
COMMAND_2(region_set_map, RID, p_region, RID, p_map);
|
||||
COMMAND_2(region_set_layers, RID, p_region, uint32_t, p_layers);
|
||||
virtual uint32_t region_get_layers(RID p_region) const;
|
||||
COMMAND_2(region_set_transform, RID, p_region, Transform, p_transform);
|
||||
COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform);
|
||||
COMMAND_2(region_set_navmesh, RID, p_region, Ref<NavigationMesh>, p_nav_mesh);
|
||||
virtual void region_bake_navmesh(Ref<NavigationMesh> r_mesh, Node *p_node) const;
|
||||
virtual int region_get_connections_count(RID p_region) const;
|
||||
|
|
|
@ -52,7 +52,7 @@ uint32_t NavRegion::get_layers() const {
|
|||
return layers;
|
||||
}
|
||||
|
||||
void NavRegion::set_transform(Transform p_transform) {
|
||||
void NavRegion::set_transform(Transform3D p_transform) {
|
||||
transform = p_transform;
|
||||
polygons_dirty = true;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ class NavRegion;
|
|||
|
||||
class NavRegion : public NavRid {
|
||||
NavMap *map = nullptr;
|
||||
Transform transform;
|
||||
Transform3D transform;
|
||||
Ref<NavigationMesh> mesh;
|
||||
uint32_t layers = 1;
|
||||
Vector<gd::Edge::Connection> connections;
|
||||
|
@ -71,8 +71,8 @@ public:
|
|||
void set_layers(uint32_t p_layers);
|
||||
uint32_t get_layers() const;
|
||||
|
||||
void set_transform(Transform transform);
|
||||
const Transform &get_transform() const {
|
||||
void set_transform(Transform3D transform);
|
||||
const Transform3D &get_transform() const {
|
||||
return transform;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ void NavigationMeshGenerator::_add_vertex(const Vector3 &p_vec3, Vector<float> &
|
|||
p_verticies.push_back(p_vec3.z);
|
||||
}
|
||||
|
||||
void NavigationMeshGenerator::_add_mesh(const Ref<Mesh> &p_mesh, const Transform &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices) {
|
||||
void NavigationMeshGenerator::_add_mesh(const Ref<Mesh> &p_mesh, const Transform3D &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices) {
|
||||
int current_vertex_count;
|
||||
|
||||
for (int i = 0; i < p_mesh->get_surface_count(); i++) {
|
||||
|
@ -123,7 +123,7 @@ void NavigationMeshGenerator::_add_mesh(const Ref<Mesh> &p_mesh, const Transform
|
|||
}
|
||||
}
|
||||
|
||||
void NavigationMeshGenerator::_add_faces(const PackedVector3Array &p_faces, const Transform &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices) {
|
||||
void NavigationMeshGenerator::_add_faces(const PackedVector3Array &p_faces, const Transform3D &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices) {
|
||||
int face_count = p_faces.size() / 3;
|
||||
int current_vertex_count = p_verticies.size() / 3;
|
||||
|
||||
|
@ -138,7 +138,7 @@ void NavigationMeshGenerator::_add_faces(const PackedVector3Array &p_faces, cons
|
|||
}
|
||||
}
|
||||
|
||||
void NavigationMeshGenerator::_parse_geometry(Transform p_accumulated_transform, Node *p_node, Vector<float> &p_verticies, Vector<int> &p_indices, int p_generate_from, uint32_t p_collision_mask, bool p_recurse_children) {
|
||||
void NavigationMeshGenerator::_parse_geometry(Transform3D p_accumulated_transform, Node *p_node, Vector<float> &p_verticies, Vector<int> &p_indices, int p_generate_from, uint32_t p_collision_mask, bool p_recurse_children) {
|
||||
if (Object::cast_to<MeshInstance3D>(p_node) && p_generate_from != NavigationMesh::PARSED_GEOMETRY_STATIC_COLLIDERS) {
|
||||
MeshInstance3D *mesh_instance = Object::cast_to<MeshInstance3D>(p_node);
|
||||
Ref<Mesh> mesh = mesh_instance->get_mesh();
|
||||
|
@ -169,7 +169,7 @@ void NavigationMeshGenerator::_parse_geometry(Transform p_accumulated_transform,
|
|||
if (Object::cast_to<CollisionShape3D>(child)) {
|
||||
CollisionShape3D *col_shape = Object::cast_to<CollisionShape3D>(child);
|
||||
|
||||
Transform transform = p_accumulated_transform * static_body->get_transform() * col_shape->get_transform();
|
||||
Transform3D transform = p_accumulated_transform * static_body->get_transform() * col_shape->get_transform();
|
||||
|
||||
Ref<Mesh> mesh;
|
||||
Ref<Shape3D> s = col_shape->get_shape();
|
||||
|
@ -251,7 +251,7 @@ void NavigationMeshGenerator::_parse_geometry(Transform p_accumulated_transform,
|
|||
if (Object::cast_to<GridMap>(p_node) && p_generate_from != NavigationMesh::PARSED_GEOMETRY_STATIC_COLLIDERS) {
|
||||
GridMap *gridmap_instance = Object::cast_to<GridMap>(p_node);
|
||||
Array meshes = gridmap_instance->get_meshes();
|
||||
Transform xform = gridmap_instance->get_transform();
|
||||
Transform3D xform = gridmap_instance->get_transform();
|
||||
for (int i = 0; i < meshes.size(); i += 2) {
|
||||
Ref<Mesh> mesh = meshes[i + 1];
|
||||
if (mesh.is_valid()) {
|
||||
|
@ -513,7 +513,7 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node)
|
|||
p_node->get_tree()->get_nodes_in_group(p_nav_mesh->get_source_group_name(), &parse_nodes);
|
||||
}
|
||||
|
||||
Transform navmesh_xform = Object::cast_to<Node3D>(p_node)->get_transform().affine_inverse();
|
||||
Transform3D navmesh_xform = Object::cast_to<Node3D>(p_node)->get_transform().affine_inverse();
|
||||
for (const List<Node *>::Element *E = parse_nodes.front(); E; E = E->next()) {
|
||||
int geometry_type = p_nav_mesh->get_parsed_geometry_type();
|
||||
uint32_t collision_mask = p_nav_mesh->get_collision_mask();
|
||||
|
|
|
@ -50,9 +50,9 @@ protected:
|
|||
static void _bind_methods();
|
||||
|
||||
static void _add_vertex(const Vector3 &p_vec3, Vector<float> &p_verticies);
|
||||
static void _add_mesh(const Ref<Mesh> &p_mesh, const Transform &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices);
|
||||
static void _add_faces(const PackedVector3Array &p_faces, const Transform &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices);
|
||||
static void _parse_geometry(Transform p_accumulated_transform, Node *p_node, Vector<float> &p_verticies, Vector<int> &p_indices, int p_generate_from, uint32_t p_collision_mask, bool p_recurse_children);
|
||||
static void _add_mesh(const Ref<Mesh> &p_mesh, const Transform3D &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices);
|
||||
static void _add_faces(const PackedVector3Array &p_faces, const Transform3D &p_xform, Vector<float> &p_verticies, Vector<int> &p_indices);
|
||||
static void _parse_geometry(Transform3D p_accumulated_transform, Node *p_node, Vector<float> &p_verticies, Vector<int> &p_indices, int p_generate_from, uint32_t p_collision_mask, bool p_recurse_children);
|
||||
|
||||
static void _convert_detail_mesh_to_native_navigation_mesh(const rcPolyMeshDetail *p_detail_mesh, Ref<NavigationMesh> p_nav_mesh);
|
||||
static void _build_recast_navigation_mesh(
|
||||
|
|
|
@ -169,7 +169,7 @@ void (*type_init_function_table[])(Variant *) = {
|
|||
&VariantInitializer<Quat>::init, // QUAT.
|
||||
&VariantInitializer<AABB>::init, // AABB.
|
||||
&VariantInitializer<Basis>::init, // BASIS.
|
||||
&VariantInitializer<Transform>::init, // TRANSFORM.
|
||||
&VariantInitializer<Transform3D>::init, // TRANSFORM3D.
|
||||
&VariantInitializer<Color>::init, // COLOR.
|
||||
&VariantInitializer<StringName>::init, // STRING_NAME.
|
||||
&VariantInitializer<NodePath>::init, // NODE_PATH.
|
||||
|
@ -3153,7 +3153,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
|
|||
OPCODE_TYPE_ADJUST(QUAT, Quat);
|
||||
OPCODE_TYPE_ADJUST(AABB, AABB);
|
||||
OPCODE_TYPE_ADJUST(BASIS, Basis);
|
||||
OPCODE_TYPE_ADJUST(TRANSFORM, Transform);
|
||||
OPCODE_TYPE_ADJUST(TRANSFORM, Transform3D);
|
||||
OPCODE_TYPE_ADJUST(COLOR, Color);
|
||||
OPCODE_TYPE_ADJUST(STRING_NAME, StringName);
|
||||
OPCODE_TYPE_ADJUST(NODE_PATH, NodePath);
|
||||
|
|
|
@ -357,10 +357,10 @@ static Quat _arr_to_quat(const Array &p_array) {
|
|||
return Quat(p_array[0], p_array[1], p_array[2], p_array[3]);
|
||||
}
|
||||
|
||||
static Transform _arr_to_xform(const Array &p_array) {
|
||||
ERR_FAIL_COND_V(p_array.size() != 16, Transform());
|
||||
static Transform3D _arr_to_xform(const Array &p_array) {
|
||||
ERR_FAIL_COND_V(p_array.size() != 16, Transform3D());
|
||||
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis.set_axis(Vector3::AXIS_X, Vector3(p_array[0], p_array[1], p_array[2]));
|
||||
xform.basis.set_axis(Vector3::AXIS_Y, Vector3(p_array[4], p_array[5], p_array[6]));
|
||||
xform.basis.set_axis(Vector3::AXIS_Z, Vector3(p_array[8], p_array[9], p_array[10]));
|
||||
|
@ -369,7 +369,7 @@ static Transform _arr_to_xform(const Array &p_array) {
|
|||
return xform;
|
||||
}
|
||||
|
||||
static Vector<real_t> _xform_to_array(const Transform p_transform) {
|
||||
static Vector<real_t> _xform_to_array(const Transform3D p_transform) {
|
||||
Vector<real_t> array;
|
||||
array.resize(16);
|
||||
Vector3 axis_x = p_transform.get_basis().get_axis(Vector3::AXIS_X);
|
||||
|
@ -421,7 +421,7 @@ Error GLTFDocument::_serialize_nodes(Ref<GLTFState> state) {
|
|||
}
|
||||
if (n->skeleton != -1 && n->skin < 0) {
|
||||
}
|
||||
if (n->xform != Transform()) {
|
||||
if (n->xform != Transform3D()) {
|
||||
node["matrix"] = _xform_to_array(n->xform);
|
||||
}
|
||||
|
||||
|
@ -1939,7 +1939,7 @@ GLTFAccessorIndex GLTFDocument::_encode_accessor_as_vec3(Ref<GLTFState> state, c
|
|||
return state->accessors.size() - 1;
|
||||
}
|
||||
|
||||
GLTFAccessorIndex GLTFDocument::_encode_accessor_as_xform(Ref<GLTFState> state, const Vector<Transform> p_attribs, const bool p_for_vertex) {
|
||||
GLTFAccessorIndex GLTFDocument::_encode_accessor_as_xform(Ref<GLTFState> state, const Vector<Transform3D> p_attribs, const bool p_for_vertex) {
|
||||
if (p_attribs.size() == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
@ -1953,7 +1953,7 @@ GLTFAccessorIndex GLTFDocument::_encode_accessor_as_xform(Ref<GLTFState> state,
|
|||
Vector<double> type_min;
|
||||
type_min.resize(element_count);
|
||||
for (int i = 0; i < p_attribs.size(); i++) {
|
||||
Transform attrib = p_attribs[i];
|
||||
Transform3D attrib = p_attribs[i];
|
||||
Basis basis = attrib.get_basis();
|
||||
Vector3 axis_0 = basis.get_axis(Vector3::AXIS_X);
|
||||
|
||||
|
@ -2107,9 +2107,9 @@ Vector<Basis> GLTFDocument::_decode_accessor_as_basis(Ref<GLTFState> state, cons
|
|||
return ret;
|
||||
}
|
||||
|
||||
Vector<Transform> GLTFDocument::_decode_accessor_as_xform(Ref<GLTFState> state, const GLTFAccessorIndex p_accessor, const bool p_for_vertex) {
|
||||
Vector<Transform3D> GLTFDocument::_decode_accessor_as_xform(Ref<GLTFState> state, const GLTFAccessorIndex p_accessor, const bool p_for_vertex) {
|
||||
const Vector<double> attribs = _decode_accessor(state, p_accessor, p_for_vertex);
|
||||
Vector<Transform> ret;
|
||||
Vector<Transform3D> ret;
|
||||
|
||||
if (attribs.size() == 0) {
|
||||
return ret;
|
||||
|
@ -4279,7 +4279,7 @@ Error GLTFDocument::_create_skins(Ref<GLTFState> state) {
|
|||
GLTFNodeIndex node = gltf_skin->joints_original[joint_i];
|
||||
String bone_name = state->nodes[node]->get_name();
|
||||
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
if (has_ibms) {
|
||||
xform = gltf_skin->inverse_binds[joint_i];
|
||||
}
|
||||
|
@ -4323,8 +4323,8 @@ bool GLTFDocument::_skins_are_same(const Ref<Skin> skin_a, const Ref<Skin> skin_
|
|||
return false;
|
||||
}
|
||||
|
||||
Transform a_xform = skin_a->get_bind_pose(i);
|
||||
Transform b_xform = skin_b->get_bind_pose(i);
|
||||
Transform3D a_xform = skin_a->get_bind_pose(i);
|
||||
Transform3D b_xform = skin_b->get_bind_pose(i);
|
||||
|
||||
if (a_xform != b_xform) {
|
||||
return false;
|
||||
|
@ -5075,7 +5075,7 @@ GLTFSkeletonIndex GLTFDocument::_convert_skeleton(Ref<GLTFState> state, Skeleton
|
|||
}
|
||||
|
||||
void GLTFDocument::_convert_spatial(Ref<GLTFState> state, Node3D *p_spatial, Ref<GLTFNode> p_node) {
|
||||
Transform xform = p_spatial->get_transform();
|
||||
Transform3D xform = p_spatial->get_transform();
|
||||
p_node->scale = xform.basis.get_scale();
|
||||
p_node->rotation = xform.basis.get_rotation_quat();
|
||||
p_node->translation = xform.origin;
|
||||
|
@ -5240,7 +5240,7 @@ void GLTFDocument::_convert_grid_map_to_gltf(Node *p_scene_parent, const GLTFNod
|
|||
Vector3(cell_location.x, cell_location.y, cell_location.z));
|
||||
EditorSceneImporterMeshNode3D *import_mesh_node = memnew(EditorSceneImporterMeshNode3D);
|
||||
import_mesh_node->set_mesh(grid_map->get_mesh_library()->get_item_mesh(cell));
|
||||
Transform cell_xform;
|
||||
Transform3D cell_xform;
|
||||
cell_xform.basis.set_orthogonal_index(
|
||||
grid_map->get_cell_item_orientation(
|
||||
Vector3(cell_location.x, cell_location.y, cell_location.z)));
|
||||
|
@ -5268,7 +5268,7 @@ void GLTFDocument::_convert_mult_mesh_instance_to_gltf(Node *p_scene_parent, con
|
|||
for (int32_t instance_i = 0; instance_i < multi_mesh->get_instance_count();
|
||||
instance_i++) {
|
||||
GLTFNode *new_gltf_node = memnew(GLTFNode);
|
||||
Transform transform;
|
||||
Transform3D transform;
|
||||
if (multi_mesh->get_transform_format() == MultiMesh::TRANSFORM_2D) {
|
||||
Transform2D xform_2d = multi_mesh->get_instance_transform_2d(instance_i);
|
||||
transform.origin =
|
||||
|
@ -5715,7 +5715,7 @@ void GLTFDocument::_import_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
}
|
||||
|
||||
if (gltf_node->skeleton >= 0) {
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis.set_quat_scale(rot, scale);
|
||||
xform.origin = pos;
|
||||
|
||||
|
@ -5808,7 +5808,7 @@ void GLTFDocument::_convert_mesh_instances(Ref<GLTFState> state) {
|
|||
}
|
||||
MeshInstance3D *mi = Object::cast_to<MeshInstance3D>(mi_element->get());
|
||||
ERR_CONTINUE(!mi);
|
||||
Transform mi_xform = mi->get_transform();
|
||||
Transform3D mi_xform = mi->get_transform();
|
||||
node->scale = mi_xform.basis.get_scale();
|
||||
node->rotation = mi_xform.basis.get_rotation_quat();
|
||||
node->translation = mi_xform.origin;
|
||||
|
@ -5872,7 +5872,7 @@ void GLTFDocument::_convert_mesh_instances(Ref<GLTFState> state) {
|
|||
String gltf_bone_name = _gen_unique_bone_name(state, skeleton_gltf_i, godot_bone_name);
|
||||
joint_node->set_name(gltf_bone_name);
|
||||
|
||||
Transform bone_rest_xform = skeleton->get_bone_rest(bone_index);
|
||||
Transform3D bone_rest_xform = skeleton->get_bone_rest(bone_index);
|
||||
joint_node->scale = bone_rest_xform.basis.get_scale();
|
||||
joint_node->rotation = bone_rest_xform.basis.get_rotation_quat();
|
||||
joint_node->translation = bone_rest_xform.origin;
|
||||
|
@ -5995,12 +5995,12 @@ void GLTFDocument::_process_mesh_instances(Ref<GLTFState> state, Node *scene_roo
|
|||
|
||||
mi->set_skin(state->skins.write[skin_i]->godot_skin);
|
||||
mi->set_skeleton_path(mi->get_path_to(skeleton));
|
||||
mi->set_transform(Transform());
|
||||
mi->set_transform(Transform3D());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state, GLTFAnimation::Track p_track, Ref<Animation> p_animation, Transform p_bone_rest, int32_t p_track_i, GLTFNodeIndex p_node_i) {
|
||||
GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state, GLTFAnimation::Track p_track, Ref<Animation> p_animation, Transform3D p_bone_rest, int32_t p_track_i, GLTFNodeIndex p_node_i) {
|
||||
Animation::InterpolationType interpolation = p_animation->track_get_interpolation_type(p_track_i);
|
||||
|
||||
GLTFAnimation::Interpolation gltf_interpolation = GLTFAnimation::INTERP_LINEAR;
|
||||
|
@ -6040,7 +6040,7 @@ GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state
|
|||
Vector3 scale;
|
||||
Error err = p_animation->transform_track_get_key(p_track_i, key_i, &translation, &rotation, &scale);
|
||||
ERR_CONTINUE(err != OK);
|
||||
Transform xform;
|
||||
Transform3D xform;
|
||||
xform.basis.set_quat_scale(rotation, scale);
|
||||
xform.origin = translation;
|
||||
xform = p_bone_rest * xform;
|
||||
|
@ -6063,7 +6063,7 @@ GLTFAnimation::Track GLTFDocument::_convert_animation_track(Ref<GLTFState> state
|
|||
p_track.rotation_track.values.resize(key_count);
|
||||
p_track.rotation_track.interpolation = gltf_interpolation;
|
||||
for (int32_t key_i = 0; key_i < key_count; key_i++) {
|
||||
Transform xform = p_animation->track_get_key_value(p_track_i, key_i);
|
||||
Transform3D xform = p_animation->track_get_key_value(p_track_i, key_i);
|
||||
p_track.translation_track.values.write[key_i] = xform.get_origin();
|
||||
p_track.rotation_track.values.write[key_i] = xform.basis.get_rotation_quat();
|
||||
p_track.scale_track.values.write[key_i] = xform.basis.get_scale();
|
||||
|
@ -6210,7 +6210,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
if (translation_track_i) {
|
||||
track = translation_track_i->get();
|
||||
}
|
||||
track = _convert_animation_track(state, track, animation, Transform(), track_i, node_index);
|
||||
track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
|
||||
gltf_animation->get_tracks().insert(node_index, track);
|
||||
}
|
||||
}
|
||||
|
@ -6226,7 +6226,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
if (rotation_degree_track_i) {
|
||||
track = rotation_degree_track_i->get();
|
||||
}
|
||||
track = _convert_animation_track(state, track, animation, Transform(), track_i, node_index);
|
||||
track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
|
||||
gltf_animation->get_tracks().insert(node_index, track);
|
||||
}
|
||||
}
|
||||
|
@ -6242,7 +6242,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
if (scale_track_i) {
|
||||
track = scale_track_i->get();
|
||||
}
|
||||
track = _convert_animation_track(state, track, animation, Transform(), track_i, node_index);
|
||||
track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
|
||||
gltf_animation->get_tracks().insert(node_index, track);
|
||||
}
|
||||
}
|
||||
|
@ -6253,7 +6253,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
for (Map<GLTFNodeIndex, Node *>::Element *transform_track_i = state->scene_nodes.front(); transform_track_i; transform_track_i = transform_track_i->next()) {
|
||||
if (transform_track_i->get() == node) {
|
||||
GLTFAnimation::Track track;
|
||||
track = _convert_animation_track(state, track, animation, Transform(), track_i, transform_track_i->key());
|
||||
track = _convert_animation_track(state, track, animation, Transform3D(), track_i, transform_track_i->key());
|
||||
gltf_animation->get_tracks().insert(transform_track_i->key(), track);
|
||||
}
|
||||
}
|
||||
|
@ -6341,7 +6341,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
Ref<GLTFSkeleton> skeleton_gltf = state->skeletons[skeleton_gltf_i];
|
||||
int32_t bone = skeleton->find_bone(suffix);
|
||||
ERR_CONTINUE(bone == -1);
|
||||
Transform xform = skeleton->get_bone_rest(bone);
|
||||
Transform3D xform = skeleton->get_bone_rest(bone);
|
||||
if (!skeleton_gltf->godot_bone_node.has(bone)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -6368,7 +6368,7 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
if (node_track_i) {
|
||||
track = node_track_i->get();
|
||||
}
|
||||
track = _convert_animation_track(state, track, animation, Transform(), track_i, node_index);
|
||||
track = _convert_animation_track(state, track, animation, Transform3D(), track_i, node_index);
|
||||
gltf_animation->get_tracks().insert(node_index, track);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -214,7 +214,7 @@ private:
|
|||
Vector<Basis> _decode_accessor_as_basis(Ref<GLTFState> state,
|
||||
const GLTFAccessorIndex p_accessor,
|
||||
const bool p_for_vertex);
|
||||
Vector<Transform> _decode_accessor_as_xform(Ref<GLTFState> state,
|
||||
Vector<Transform3D> _decode_accessor_as_xform(Ref<GLTFState> state,
|
||||
const GLTFAccessorIndex p_accessor,
|
||||
const bool p_for_vertex);
|
||||
Error _parse_meshes(Ref<GLTFState> state);
|
||||
|
@ -317,7 +317,7 @@ private:
|
|||
const Vector<int32_t> p_attribs,
|
||||
const bool p_for_vertex);
|
||||
GLTFAccessorIndex _encode_accessor_as_xform(Ref<GLTFState> state,
|
||||
const Vector<Transform> p_attribs,
|
||||
const Vector<Transform3D> p_attribs,
|
||||
const bool p_for_vertex);
|
||||
Error _encode_buffer_view(Ref<GLTFState> state, const double *src,
|
||||
const int count, const GLTFType type,
|
||||
|
@ -333,7 +333,7 @@ private:
|
|||
String interpolation_to_string(const GLTFAnimation::Interpolation p_interp);
|
||||
GLTFAnimation::Track _convert_animation_track(Ref<GLTFState> state,
|
||||
GLTFAnimation::Track p_track,
|
||||
Ref<Animation> p_animation, Transform p_bone_rest,
|
||||
Ref<Animation> p_animation, Transform3D p_bone_rest,
|
||||
int32_t p_track_i,
|
||||
GLTFNodeIndex p_node_i);
|
||||
Error _encode_buffer_bins(Ref<GLTFState> state, const String &p_path);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue