diff --git a/spine-godot/spine_godot/SpineAnimationState.cpp b/spine-godot/spine_godot/SpineAnimationState.cpp index 761405c98..7052bc91b 100644 --- a/spine-godot/spine_godot/SpineAnimationState.cpp +++ b/spine-godot/spine_godot/SpineAnimationState.cpp @@ -35,6 +35,7 @@ void SpineAnimationState::_bind_methods() { ClassDB::bind_method(D_METHOD("apply", "skeleton"), &SpineAnimationState::apply); ClassDB::bind_method(D_METHOD("clear_tracks"), &SpineAnimationState::clear_tracks); ClassDB::bind_method(D_METHOD("clear_track"), &SpineAnimationState::clear_track); + ClassDB::bind_method(D_METHOD("get_num_tracks"), &SpineAnimationState::get_num_tracks); ClassDB::bind_method(D_METHOD("set_animation", "animation_name", "loop", "track_id"), &SpineAnimationState::set_animation, DEFVAL(true), DEFVAL(0)); ClassDB::bind_method(D_METHOD("add_animation", "animation_name", "delay", "loop", "track_id"), &SpineAnimationState::add_animation, DEFVAL(0), DEFVAL(true), DEFVAL(0)); ClassDB::bind_method(D_METHOD("set_empty_animation", "track_id", "mix_duration"), &SpineAnimationState::set_empty_animation); @@ -83,6 +84,16 @@ void SpineAnimationState::clear_track(int track_id) { animation_state->clearTrack(track_id); } +int SpineAnimationState::get_num_tracks() { + SPINE_CHECK(animation_state, 0) + int highest_index = -1; + for (int i = 0; i < animation_state->getTracks().size(); i++) { + if (animation_state->getTracks()[i]) highest_index = i; + } + return highest_index + 1; +} + + Ref SpineAnimationState::set_animation(const String &animation_name, bool loop, int track) { SPINE_CHECK(animation_state, nullptr) auto skeleton_data = animation_state->getData()->getSkeletonData(); diff --git a/spine-godot/spine_godot/SpineAnimationState.h b/spine-godot/spine_godot/SpineAnimationState.h index ea5005b34..88a0a3865 100644 --- a/spine-godot/spine_godot/SpineAnimationState.h +++ b/spine-godot/spine_godot/SpineAnimationState.h @@ -60,6 +60,8 @@ public: void clear_track(int track_id); + int get_num_tracks(); + Ref set_animation(const String &animation_name, bool loop, int track_id); Ref add_animation(const String &animation_name, float delay, bool loop, int track_id);