summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.cpp6
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.h1
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp5
3 files changed, 12 insertions, 0 deletions
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp
index c2d5885e43..4afbb87197 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -356,6 +356,7 @@ bool CollisionShape2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_e
return false;
}
+ original_point = handles[edit_handle];
original = get_handle_value(edit_handle);
original_transform = node->get_global_transform();
last_point = original;
@@ -572,6 +573,11 @@ void CollisionShape2DEditor::edit(Node *p_node) {
_get_current_shape_type();
} else {
+ if (pressed) {
+ set_handle(edit_handle, original_point);
+ pressed = false;
+ }
+
edit_handle = -1;
shape_type = -1;
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h
index 68fc0ddbdf..9c37b6cf9d 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.h
+++ b/editor/plugins/collision_shape_2d_editor_plugin.h
@@ -71,6 +71,7 @@ class CollisionShape2DEditor : public Control {
bool pressed;
Variant original;
Transform2D original_transform;
+ Vector2 original_point;
Point2 last_point;
Variant get_handle_value(int idx) const;
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 333771ceb4..7c5b8600d4 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -2102,6 +2102,11 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
if (_edit.mode == TRANSFORM_NONE) {
+ if (_edit.gizmo.is_valid()) {
+ // Restore.
+ _edit.gizmo->commit_handle(_edit.gizmo_handle, _edit.gizmo_handle_secondary, _edit.gizmo_initial_value, true);
+ _edit.gizmo = Ref<EditorNode3DGizmo>();
+ }
if (k->get_keycode() == Key::ESCAPE && !cursor.region_select) {
_clear_selected();
return;