You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Implemented ragdoll
Implementing ragdoll Implementing ragdoll Implementing ragdoll Implementing ragdoll Implementing ragdoll a Implemented implicit hierarchy. Improved Added some physics properties Added bone offset to preserve COM, partially fixed scaling work in progress WIP wip Implemented Joint Gizmos Implemented pin joint joint Implemented all joints
This commit is contained in:
committed by
Andrea Catania
parent
8c30337565
commit
9e57a07fb6
@@ -72,6 +72,14 @@
|
||||
#define MIN_FOV 0.01
|
||||
#define MAX_FOV 179
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
#define get_global_gizmo_transform get_global_gizmo_transform
|
||||
#define get_local_gizmo_transform get_local_gizmo_transform
|
||||
#else
|
||||
#define get_global_gizmo_transform get_global_transform
|
||||
#define get_local_gizmo_transform get_transform
|
||||
#endif
|
||||
|
||||
void SpatialEditorViewport::_update_camera(float p_interp_delta) {
|
||||
|
||||
bool is_orthogonal = camera->get_projection() == Camera::PROJECTION_ORTHOGONAL;
|
||||
@@ -584,8 +592,8 @@ void SpatialEditorViewport::_compute_edit(const Point2 &p_point) {
|
||||
if (!se)
|
||||
continue;
|
||||
|
||||
se->original = se->sp->get_global_transform();
|
||||
se->original_local = se->sp->get_transform();
|
||||
se->original = se->sp->get_global_gizmo_transform();
|
||||
se->original_local = se->sp->get_local_gizmo_transform();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1184,7 +1192,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
||||
if (!se)
|
||||
continue;
|
||||
|
||||
undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_transform());
|
||||
undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_gizmo_transform());
|
||||
undo_redo->add_undo_method(sp, "set_global_transform", se->original);
|
||||
}
|
||||
undo_redo->commit_action();
|
||||
@@ -2150,7 +2158,7 @@ void SpatialEditorViewport::_notification(int p_what) {
|
||||
se->aabb = vi ? vi->get_aabb() : AABB(Vector3(-0.2, -0.2, -0.2), Vector3(0.4, 0.4, 0.4));
|
||||
}
|
||||
|
||||
Transform t = sp->get_global_transform();
|
||||
Transform t = sp->get_global_gizmo_transform();
|
||||
t.translate(se->aabb.position);
|
||||
|
||||
// apply AABB scaling before item's global transform
|
||||
@@ -2503,7 +2511,7 @@ void SpatialEditorViewport::_menu_option(int p_option) {
|
||||
xform.scale_basis(sp->get_scale());
|
||||
|
||||
undo_redo->add_do_method(sp, "set_global_transform", xform);
|
||||
undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_transform());
|
||||
undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_gizmo_transform());
|
||||
}
|
||||
undo_redo->commit_action();
|
||||
} break;
|
||||
@@ -2961,7 +2969,7 @@ void SpatialEditorViewport::focus_selection() {
|
||||
if (!se)
|
||||
continue;
|
||||
|
||||
center += sp->get_global_transform().origin;
|
||||
center += sp->get_global_gizmo_transform().origin;
|
||||
count++;
|
||||
}
|
||||
|
||||
@@ -3043,7 +3051,7 @@ AABB SpatialEditorViewport::_calculate_spatial_bounds(const Spatial *p_parent, c
|
||||
MeshInstance *mesh_instance = Object::cast_to<MeshInstance>(child);
|
||||
if (mesh_instance) {
|
||||
AABB mesh_instance_bounds = mesh_instance->get_aabb();
|
||||
mesh_instance_bounds.position += mesh_instance->get_global_transform().origin - p_parent->get_global_transform().origin;
|
||||
mesh_instance_bounds.position += mesh_instance->get_global_gizmo_transform().origin - p_parent->get_global_gizmo_transform().origin;
|
||||
bounds.merge_with(mesh_instance_bounds);
|
||||
}
|
||||
bounds = _calculate_spatial_bounds(child, bounds);
|
||||
@@ -3154,7 +3162,7 @@ bool SpatialEditorViewport::_create_instance(Node *parent, String &path, const P
|
||||
Transform global_transform;
|
||||
Spatial *parent_spatial = Object::cast_to<Spatial>(parent);
|
||||
if (parent_spatial)
|
||||
global_transform = parent_spatial->get_global_transform();
|
||||
global_transform = parent_spatial->get_global_gizmo_transform();
|
||||
|
||||
global_transform.origin = spatial_editor->snap_point(_get_instance_position(p_point));
|
||||
|
||||
@@ -3787,7 +3795,8 @@ void SpatialEditor::update_transform_gizmo() {
|
||||
if (!se)
|
||||
continue;
|
||||
|
||||
Transform xf = se->sp->get_global_transform();
|
||||
Transform xf = se->sp->get_global_gizmo_transform();
|
||||
|
||||
if (first) {
|
||||
center.position = xf.origin;
|
||||
first = false;
|
||||
@@ -4054,7 +4063,7 @@ void SpatialEditor::_xform_dialog_action() {
|
||||
|
||||
bool post = xform_type->get_selected() > 0;
|
||||
|
||||
Transform tr = sp->get_global_transform();
|
||||
Transform tr = sp->get_global_gizmo_transform();
|
||||
if (post)
|
||||
tr = tr * t;
|
||||
else {
|
||||
@@ -4064,7 +4073,7 @@ void SpatialEditor::_xform_dialog_action() {
|
||||
}
|
||||
|
||||
undo_redo->add_do_method(sp, "set_global_transform", tr);
|
||||
undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_transform());
|
||||
undo_redo->add_undo_method(sp, "set_global_transform", sp->get_global_gizmo_transform());
|
||||
}
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user