Fix 2D instance drop position
This commit is contained in:
parent
b0ba9468ee
commit
3a9fb3aff0
|
@ -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_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));
|
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) {
|
|
||||||
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);
|
CanvasItem *instance_ci = Object::cast_to<CanvasItem>(instantiated_scene);
|
||||||
if (instance_ci) {
|
if (instance_ci) {
|
||||||
target_pos += instance_ci->_edit_get_position();
|
Vector2 target_pos = canvas_item_editor->get_canvas_transform().affine_inverse().xform(p_point);
|
||||||
|
target_pos = canvas_item_editor->snap_point(target_pos);
|
||||||
|
|
||||||
|
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);
|
editor_data->get_undo_redo().add_do_method(instantiated_scene, "set_position", target_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue