From e9a6a84468a800a30372e4dc1b85931fb851470c Mon Sep 17 00:00:00 2001 From: "Silc Lizard (Tokage) Renew" <61938263+TokageItLab@users.noreply.github.com> Date: Thu, 13 Nov 2025 07:22:38 +0900 Subject: [PATCH] Make AnimationLibrary use RBMap instead of HashMap --- scene/resources/animation_library.cpp | 10 +++++----- scene/resources/animation_library.h | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/scene/resources/animation_library.cpp b/scene/resources/animation_library.cpp index 899f8b45569..8e2042a4ebe 100644 --- a/scene/resources/animation_library.cpp +++ b/scene/resources/animation_library.cpp @@ -49,13 +49,13 @@ Error AnimationLibrary::add_animation(const StringName &p_name, const Refdisconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); + animations[p_name]->disconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); animations.erase(p_name); emit_signal(SNAME("animation_removed"), p_name); } animations.insert(p_name, p_animation); - animations.get(p_name)->connect_changed(callable_mp(this, &AnimationLibrary::_animation_changed).bind(p_name)); + animations[p_name]->connect_changed(callable_mp(this, &AnimationLibrary::_animation_changed).bind(p_name)); emit_signal(SNAME("animation_added"), p_name); notify_property_list_changed(); return OK; @@ -64,7 +64,7 @@ Error AnimationLibrary::add_animation(const StringName &p_name, const Refdisconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); + animations[p_name]->disconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); animations.erase(p_name); emit_signal(SNAME("animation_removed"), p_name); notify_property_list_changed(); @@ -75,8 +75,8 @@ void AnimationLibrary::rename_animation(const StringName &p_name, const StringNa ERR_FAIL_COND_MSG(!is_valid_animation_name(p_new_name), "Invalid animation name: '" + String(p_new_name) + "'."); ERR_FAIL_COND_MSG(animations.has(p_new_name), vformat("Animation name \"%s\" already exists in library.", p_new_name)); - animations.get(p_name)->disconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); - animations.get(p_name)->connect_changed(callable_mp(this, &AnimationLibrary::_animation_changed).bind(p_new_name)); + animations[p_name]->disconnect_changed(callable_mp(this, &AnimationLibrary::_animation_changed)); + animations[p_name]->connect_changed(callable_mp(this, &AnimationLibrary::_animation_changed).bind(p_new_name)); animations.insert(p_new_name, animations[p_name]); animations.erase(p_name); emit_signal(SNAME("animation_renamed"), p_name, p_new_name); diff --git a/scene/resources/animation_library.h b/scene/resources/animation_library.h index 33629ef43cc..7d78146c44e 100644 --- a/scene/resources/animation_library.h +++ b/scene/resources/animation_library.h @@ -30,6 +30,7 @@ #pragma once +#include "core/templates/rb_map.h" #include "core/variant/typed_array.h" #include "scene/resources/animation.h" @@ -44,7 +45,7 @@ class AnimationLibrary : public Resource { void _animation_changed(const StringName &p_name); friend class AnimationMixer; // For faster access. - HashMap> animations; + RBMap, StringName::AlphCompare> animations; protected: static void _bind_methods();