Skip to content

Commit

Permalink
Merge pull request #58372 from KoBeWi/orphan_ci
Browse files Browse the repository at this point in the history
Fix 2D instance drop position
  • Loading branch information
akien-mga authored Feb 21, 2022
2 parents cb27e38 + 3a9fb3a commit b829615
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions editor/plugins/canvas_item_editor_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5500,16 +5500,18 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
editor_data->get_undo_redo().add_do_method(ed, "live_debug_instance_node", edited_scene->get_path_to(parent), path, new_name);
editor_data->get_undo_redo().add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)) + "/" + new_name));

CanvasItem *parent_ci = Object::cast_to<CanvasItem>(parent);
if (parent_ci) {
CanvasItem *instance_ci = Object::cast_to<CanvasItem>(instantiated_scene);
if (instance_ci) {
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>(instantiated_scene);
if (instance_ci) {
target_pos += instance_ci->_edit_get_position();

CanvasItem *parent_ci = Object::cast_to<CanvasItem>(parent);
if (parent_ci) {
target_pos = parent_ci->get_global_transform_with_canvas().affine_inverse().xform(target_pos);
}
// Preserve instance position of the original scene.
target_pos += instance_ci->_edit_get_position();

editor_data->get_undo_redo().add_do_method(instantiated_scene, "set_position", target_pos);
}

Expand Down

0 comments on commit b829615

Please sign in to comment.