diff options
author | Jiří Švejda <jirisvd@gmail.com> | 2023-12-18 17:28:50 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-09-16 16:47:13 +0200 |
commit | acba31b746052fec9a0f30fc567047a19031e79a (patch) | |
tree | 44aa3280a359539acedaa91c9218e90230feedd3 /scene | |
parent | d915947f3d79858ccc363a353da79239a01d008b (diff) | |
download | redot-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.cpp | 8 |
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; |