[godot] Add SpineAnimationState::get_num_tracks, closes #2007

This commit is contained in:
badlogic 2022-06-07 11:48:59 +02:00
parent ef5152943c
commit 120254439b
2 changed files with 13 additions and 0 deletions

View File

@ -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<SpineTrackEntry> SpineAnimationState::set_animation(const String &animation_name, bool loop, int track) {
SPINE_CHECK(animation_state, nullptr)
auto skeleton_data = animation_state->getData()->getSkeletonData();

View File

@ -60,6 +60,8 @@ public:
void clear_track(int track_id);
int get_num_tracks();
Ref<SpineTrackEntry> set_animation(const String &animation_name, bool loop, int track_id);
Ref<SpineTrackEntry> add_animation(const String &animation_name, float delay, bool loop, int track_id);