diff options
author | Zi Ye <major.mcdoom@gmail.com> | 2024-02-12 22:29:31 -0600 |
---|---|---|
committer | Zi Ye <major.mcdoom@gmail.com> | 2024-02-12 22:29:31 -0600 |
commit | 123dbdb4af22bc26686a9da20b5f5ddd620292db (patch) | |
tree | 28619945a0ed4fb8793bbbc52fe0ad3902f8b4aa | |
parent | 9050ee1542f4e071188e8e4f868f3507bb31b3dc (diff) | |
download | redot-engine-123dbdb4af22bc26686a9da20b5f5ddd620292db.tar.gz |
Fixed an edge case bug in drag-and-drop Node3D spawning.
-rw-r--r-- | editor/plugins/node_3d_editor_plugin.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 4dc7222b74..eb840fcb51 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -4364,7 +4364,16 @@ bool Node3DEditorViewport::_create_instance(Node *parent, String &path, const Po Node3D *node3d = Object::cast_to<Node3D>(instantiated_scene); if (node3d) { - undo_redo->add_do_method(instantiated_scene, "set_transform", node3d->get_transform()); + Transform3D parent_tf; + Node3D *parent_node3d = Object::cast_to<Node3D>(parent); + if (parent_node3d) { + parent_tf = parent_node3d->get_global_gizmo_transform(); + } + + Transform3D new_tf = node3d->get_transform(); + new_tf.origin = parent_tf.xform_inv(preview_node_pos); + + undo_redo->add_do_method(instantiated_scene, "set_transform", new_tf); } return true; |