From 4900dddb8817a7ffba10f0e280bfda75dfc1a591 Mon Sep 17 00:00:00 2001 From: "Silc Lizard (Tokage) Renew" <61938263+TokageItLab@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:08:49 +0900 Subject: [PATCH] Modify allocation process of the PhysicalBoneSimulator in Skeleton3D --- scene/3d/skeleton_3d.cpp | 16 +++++----------- scene/3d/skeleton_3d.h | 1 - 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp index db36a0a63013..6b24b50dac8a 100644 --- a/scene/3d/skeleton_3d.cpp +++ b/scene/3d/skeleton_3d.cpp @@ -271,16 +271,15 @@ void Skeleton3D::_update_process_order() { #ifndef DISABLE_DEPRECATED void Skeleton3D::setup_simulator() { + if (simulator && simulator->get_parent() == this) { + remove_child(simulator); + simulator->queue_free(); + } PhysicalBoneSimulator3D *sim = memnew(PhysicalBoneSimulator3D); simulator = sim; sim->is_compat = true; sim->set_active(false); // Don't run unneeded process. - add_child(sim); -} - -void Skeleton3D::remove_simulator() { - remove_child(simulator); - memdelete(simulator); + add_child(simulator); } #endif // _DISABLE_DEPRECATED @@ -294,11 +293,6 @@ void Skeleton3D::_notification(int p_what) { setup_simulator(); #endif // _DISABLE_DEPRECATED } break; -#ifndef DISABLE_DEPRECATED - case NOTIFICATION_EXIT_TREE: { - remove_simulator(); - } break; -#endif // _DISABLE_DEPRECATED case NOTIFICATION_UPDATE_SKELETON: { // Update bone transforms to apply unprocessed poses. force_update_all_dirty_bones(); diff --git a/scene/3d/skeleton_3d.h b/scene/3d/skeleton_3d.h index 5b6f60dbd463..8eb215d1db04 100644 --- a/scene/3d/skeleton_3d.h +++ b/scene/3d/skeleton_3d.h @@ -69,7 +69,6 @@ class Skeleton3D : public Node3D { #ifndef DISABLE_DEPRECATED Node *simulator = nullptr; void setup_simulator(); - void remove_simulator(); #endif // _DISABLE_DEPRECATED public: