Răsfoiți Sursa

CanvasItemEditor: Fix losing position for drag'n'dropped scenes

Fixes #26549.
Supersedes #36309.

(cherry picked from commit a403131a25e165471f96ee2eb3f3db91994f8ce1)
Rémi Verschelde 5 ani în urmă
părinte
comite
636b1e4518
1 a modificat fișierele cu 5 adăugiri și 0 ștergeri
  1. 5 0
      editor/plugins/canvas_item_editor_plugin.cpp

+ 5 - 0
editor/plugins/canvas_item_editor_plugin.cpp

@@ -6013,6 +6013,11 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
 		Vector2 target_pos = canvas_item_editor->get_canvas_transform().affine_inverse().xform(p_point);
 		target_pos = canvas_item_editor->snap_point(target_pos);
 		target_pos = parent_ci->get_global_transform_with_canvas().affine_inverse().xform(target_pos);
+		// Preserve instance position of the original scene.
+		CanvasItem *instance_ci = Object::cast_to<CanvasItem>(instanced_scene);
+		if (instance_ci) {
+			target_pos += instance_ci->_edit_get_position();
+		}
 		editor_data->get_undo_redo().add_do_method(instanced_scene, "set_position", target_pos);
 	}