summaryrefslogtreecommitdiffstats
path: root/scene
diff options
context:
space:
mode:
authorJiří Švejda <jirisvd@gmail.com>2023-12-18 17:28:50 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-09-16 16:47:13 +0200
commitacba31b746052fec9a0f30fc567047a19031e79a (patch)
tree44aa3280a359539acedaa91c9218e90230feedd3 /scene
parentd915947f3d79858ccc363a353da79239a01d008b (diff)
downloadredot-engine-acba31b746052fec9a0f30fc567047a19031e79a.tar.gz
Fix SoftBody3D pinned points breaking when reloading scene
(cherry picked from commit bde8c5977b5b3f31619af182ffc521bbec98df78)
Diffstat (limited to 'scene')
-rw-r--r--scene/3d/soft_body_3d.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/scene/3d/soft_body_3d.cpp b/scene/3d/soft_body_3d.cpp
index f02cd9b700..4fe5dd2385 100644
--- a/scene/3d/soft_body_3d.cpp
+++ b/scene/3d/soft_body_3d.cpp
@@ -218,7 +218,13 @@ bool SoftBody3D::_set_property_pinned_points_attachment(int p_item, const String
if ("spatial_attachment_path" == p_what) {
PinnedPoint *w = pinned_points.ptrw();
- callable_mp(this, &SoftBody3D::_pin_point_deferred).call_deferred(Variant(w[p_item].point_index), true, p_value);
+
+ if (is_inside_tree()) {
+ callable_mp(this, &SoftBody3D::_pin_point_deferred).call_deferred(Variant(w[p_item].point_index), true, p_value);
+ } else {
+ pin_point(w[p_item].point_index, true, p_value);
+ _make_cache_dirty();
+ }
} else if ("offset" == p_what) {
PinnedPoint *w = pinned_points.ptrw();
w[p_item].offset = p_value;