You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Merge pull request #65942 from SaracenOne/animation_change_callback_fix
Fix animation change callbacks
This commit is contained in:
@@ -722,7 +722,18 @@ void AnimationPlayerEditor::set_state(const Dictionary &p_state) {
|
||||
if (p_state.has("player")) {
|
||||
Node *n = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["player"]);
|
||||
if (Object::cast_to<AnimationPlayer>(n) && EditorNode::get_singleton()->get_editor_selection()->is_selected(n)) {
|
||||
if (player) {
|
||||
if (player->is_connected("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated))) {
|
||||
player->disconnect("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated));
|
||||
}
|
||||
}
|
||||
player = Object::cast_to<AnimationPlayer>(n);
|
||||
if (player) {
|
||||
if (!player->is_connected("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated))) {
|
||||
player->connect("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated));
|
||||
}
|
||||
}
|
||||
|
||||
_update_player();
|
||||
EditorNode::get_singleton()->make_bottom_panel_item_visible(this);
|
||||
set_process(true);
|
||||
@@ -984,9 +995,18 @@ void AnimationPlayerEditor::edit(AnimationPlayer *p_player) {
|
||||
if (player && pin->is_pressed()) {
|
||||
return; // Ignore, pinned.
|
||||
}
|
||||
|
||||
if (player) {
|
||||
if (player->is_connected("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated))) {
|
||||
player->disconnect("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated));
|
||||
}
|
||||
}
|
||||
player = p_player;
|
||||
|
||||
if (player) {
|
||||
if (!player->is_connected("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated))) {
|
||||
player->connect("animation_libraries_updated", callable_mp(this, &AnimationPlayerEditor::_animation_libraries_updated));
|
||||
}
|
||||
_update_player();
|
||||
|
||||
if (onion.enabled) {
|
||||
@@ -1153,6 +1173,10 @@ void AnimationPlayerEditor::_animation_player_changed(Object *p_pl) {
|
||||
}
|
||||
}
|
||||
|
||||
void AnimationPlayerEditor::_animation_libraries_updated() {
|
||||
_animation_player_changed(player);
|
||||
}
|
||||
|
||||
void AnimationPlayerEditor::_list_changed() {
|
||||
if (is_visible_in_tree()) {
|
||||
_update_player();
|
||||
@@ -1547,6 +1571,7 @@ void AnimationPlayerEditor::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("_animation_edit"), &AnimationPlayerEditor::_animation_edit);
|
||||
ClassDB::bind_method(D_METHOD("_animation_resource_edit"), &AnimationPlayerEditor::_animation_resource_edit);
|
||||
ClassDB::bind_method(D_METHOD("_animation_player_changed"), &AnimationPlayerEditor::_animation_player_changed);
|
||||
ClassDB::bind_method(D_METHOD("_animation_libraries_updated"), &AnimationPlayerEditor::_animation_libraries_updated);
|
||||
ClassDB::bind_method(D_METHOD("_list_changed"), &AnimationPlayerEditor::_list_changed);
|
||||
ClassDB::bind_method(D_METHOD("_animation_duplicate"), &AnimationPlayerEditor::_animation_duplicate);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user