Skip to content

Commit 5c38a9f

Browse files
committed
Merge pull request godotengine#89003 from akien-mga/node3d-reparent-no-global-transform
Don't access Node3D/Node2D/Control global transform in `reparent` unless needed
2 parents b0c184c + 810a0db commit 5c38a9f

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

scene/2d/node_2d.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,12 @@ void Node2D::_update_transform() {
143143

144144
void Node2D::reparent(Node *p_parent, bool p_keep_global_transform) {
145145
ERR_THREAD_GUARD;
146-
Transform2D temp = get_global_transform();
147-
Node::reparent(p_parent);
148146
if (p_keep_global_transform) {
147+
Transform2D temp = get_global_transform();
148+
Node::reparent(p_parent);
149149
set_global_transform(temp);
150+
} else {
151+
Node::reparent(p_parent);
150152
}
151153
}
152154

scene/3d/node_3d.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,10 +719,12 @@ void Node3D::set_disable_gizmos(bool p_enabled) {
719719

720720
void Node3D::reparent(Node *p_parent, bool p_keep_global_transform) {
721721
ERR_THREAD_GUARD;
722-
Transform3D temp = get_global_transform();
723-
Node::reparent(p_parent);
724722
if (p_keep_global_transform) {
723+
Transform3D temp = get_global_transform();
724+
Node::reparent(p_parent);
725725
set_global_transform(temp);
726+
} else {
727+
Node::reparent(p_parent);
726728
}
727729
}
728730

scene/gui/control.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,12 @@ Size2 Control::_edit_get_minimum_size() const {
188188

189189
void Control::reparent(Node *p_parent, bool p_keep_global_transform) {
190190
ERR_MAIN_THREAD_GUARD;
191-
Transform2D temp = get_global_transform();
192-
Node::reparent(p_parent);
193191
if (p_keep_global_transform) {
192+
Transform2D temp = get_global_transform();
193+
Node::reparent(p_parent);
194194
set_global_position(temp.get_origin());
195+
} else {
196+
Node::reparent(p_parent);
195197
}
196198
}
197199

0 commit comments

Comments
 (0)