From 25e55b400939850a2b8481356a7bd436f1d43d5e Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 6 Apr 2022 11:34:03 +0200 Subject: [PATCH] [godot] More clean-up. --- .../modules/spine_godot/SpineAnimation.cpp | 22 +++++++------- .../modules/spine_godot/SpineAnimation.h | 2 +- .../spine_godot/SpineAnimationState.cpp | 23 ++++----------- .../modules/spine_godot/SpineAnimationState.h | 29 +++++++------------ .../godot/modules/spine_godot/SpineSprite.cpp | 4 +-- 5 files changed, 29 insertions(+), 51 deletions(-) diff --git a/spine-godot/godot/modules/spine_godot/SpineAnimation.cpp b/spine-godot/godot/modules/spine_godot/SpineAnimation.cpp index 30ad664d4..cef0e00e9 100644 --- a/spine-godot/godot/modules/spine_godot/SpineAnimation.cpp +++ b/spine-godot/godot/modules/spine_godot/SpineAnimation.cpp @@ -63,14 +63,14 @@ void SpineAnimation::set_duration(float duration) { } void SpineAnimation::apply(Ref skeleton, float lastTime, float time, bool loop, - Array pEvents, float alpha, SpineConstant::MixBlend blend, - SpineConstant::MixDirection direction) { - spine::Vector events; - events.setSize(pEvents.size(), nullptr); + Array events, float alpha, SpineConstant::MixBlend blend, + SpineConstant::MixDirection direction) { + spine::Vector spineEvents; + spineEvents.setSize(events.size(), nullptr); for (size_t i = 0; i < events.size(); ++i) { - events[i] = ((Ref) (pEvents[i]))->get_spine_object(); + spineEvents[i] = ((Ref) (events[i]))->get_spine_object(); } - animation->apply(*(skeleton->get_spine_object()), lastTime, time, loop, &events, alpha, (spine::MixBlend) blend, (spine::MixDirection) direction); + animation->apply(*(skeleton->get_spine_object()), lastTime, time, loop, &spineEvents, alpha, (spine::MixBlend) blend, (spine::MixDirection) direction); } Array SpineAnimation::get_timelines() { @@ -88,11 +88,11 @@ Array SpineAnimation::get_timelines() { } bool SpineAnimation::has_timeline(Array ids) { - spine::Vector propertyIds; - propertyIds.setSize(ids.size(), 0); + spine::Vector property_ids; + property_ids.setSize(ids.size(), 0); - for (size_t i = 0; i < propertyIds.size(); ++i) { - propertyIds[i] = (int64_t) ids[i]; + for (size_t i = 0; i < property_ids.size(); ++i) { + property_ids[i] = (int64_t) ids[i]; } - return animation->hasTimeline(propertyIds); + return animation->hasTimeline(property_ids); } diff --git a/spine-godot/godot/modules/spine_godot/SpineAnimation.h b/spine-godot/godot/modules/spine_godot/SpineAnimation.h index a3ec2daa8..25d908957 100644 --- a/spine-godot/godot/modules/spine_godot/SpineAnimation.h +++ b/spine-godot/godot/modules/spine_godot/SpineAnimation.h @@ -54,7 +54,7 @@ public: inline void set_spine_object(spine::Animation *animation) { this->animation = animation; } inline spine::Animation *get_spine_object() { return animation; } - void apply(Ref skeleton, float lastTime, float time, bool loop, Array pEvents, float alpha, SpineConstant::MixBlend blend, SpineConstant::MixDirection direction); + void apply(Ref skeleton, float lastTime, float time, bool loop, Array events, float alpha, SpineConstant::MixBlend blend, SpineConstant::MixDirection direction); Array get_timelines(); diff --git a/spine-godot/godot/modules/spine_godot/SpineAnimationState.cpp b/spine-godot/godot/modules/spine_godot/SpineAnimationState.cpp index 155a1d6d3..b8d395a21 100644 --- a/spine-godot/godot/modules/spine_godot/SpineAnimationState.cpp +++ b/spine-godot/godot/modules/spine_godot/SpineAnimationState.cpp @@ -44,7 +44,6 @@ void SpineAnimationState::_bind_methods() { ClassDB::bind_method(D_METHOD("set_time_scale", "time_scale"), &SpineAnimationState::set_time_scale); ClassDB::bind_method(D_METHOD("disable_queue"), &SpineAnimationState::disable_queue); ClassDB::bind_method(D_METHOD("enable_queue"), &SpineAnimationState::enable_queue); - // ClassDB::bind_method(D_METHOD("reload"), &SpineAnimationState::reload_animation_state); ClassDB::bind_method(D_METHOD("get_current", "track_id"), &SpineAnimationState::get_current); } @@ -58,25 +57,13 @@ SpineAnimationState::~SpineAnimationState() { } } -void SpineAnimationState::load_animation_state(Ref ad) { +void SpineAnimationState::load_animation_state(Ref animation_state_data) { if (animation_state) { delete animation_state; animation_state = NULL; } - animation_state = new spine::AnimationState(ad->get_animation_state_data()); - anim_state_data_res = ad; -} - -void SpineAnimationState::reload_animation_state() { - if (!anim_state_data_res.is_valid()) { - ERR_PRINT(" Reload animation state fail, because anim_state_data_res not set!"); - return; - } - if (animation_state) { - delete animation_state; - animation_state = NULL; - } - animation_state = new spine::AnimationState(anim_state_data_res->get_animation_state_data()); + animation_state = new spine::AnimationState(animation_state_data->get_animation_state_data()); + anim_state_data_res = animation_state_data; } #define CHECK_V \ @@ -164,9 +151,9 @@ float SpineAnimationState::get_time_scale() { CHECK_X(0); return animation_state->getTimeScale(); } -void SpineAnimationState::set_time_scale(float v) { +void SpineAnimationState::set_time_scale(float time_scale) { CHECK_V; - animation_state->setTimeScale(v); + animation_state->setTimeScale(time_scale); } void SpineAnimationState::disable_queue() { diff --git a/spine-godot/godot/modules/spine_godot/SpineAnimationState.h b/spine-godot/godot/modules/spine_godot/SpineAnimationState.h index 097be72ac..14b52d414 100644 --- a/spine-godot/godot/modules/spine_godot/SpineAnimationState.h +++ b/spine-godot/godot/modules/spine_godot/SpineAnimationState.h @@ -30,8 +30,6 @@ #ifndef GODOT_SPINEANIMATIONSTATE_H #define GODOT_SPINEANIMATIONSTATE_H -#include "core/variant_parser.h" - #include "SpineAnimationStateDataResource.h" #include "SpineSkeleton.h" #include "SpineTrackEntry.h" @@ -48,47 +46,40 @@ private: Ref anim_state_data_res; public: - void load_animation_state(Ref ad); + SpineAnimationState(); + ~SpineAnimationState(); - inline void set_animation_state(spine::AnimationState *a) { - animation_state = a; - } - inline spine::AnimationState *get_animation_state() { - return animation_state; - } + void load_animation_state(Ref animation_state_data); - void reload_animation_state(); + inline void set_spine_object(spine::AnimationState *animation_state) { this->animation_state = animation_state; } + inline spine::AnimationState *get_spine_object() { return animation_state; } Ref set_animation(const String &anim_name, bool loop, uint64_t track_id); - inline void set_animation_by_ref(Ref anim, bool loop, uint64_t track_id) { - if (anim.is_valid()) { - animation_state->setAnimation(track_id, anim->get_spine_object(), loop); - } - } + Ref add_animation(const String &anim_name, float delay, bool loop, uint64_t track_id); Ref set_empty_animation(uint64_t track_id, float mix_duration); + Ref add_empty_animation(uint64_t track_id, float mix_duration, float delay); void set_empty_animations(float mix_duration); Ref get_data(); float get_time_scale(); - void set_time_scale(float v); + void set_time_scale(float time_scale); void disable_queue(); void enable_queue(); void update(float delta); + bool apply(Ref skeleton); void clear_tracks(); + void clear_track(uint64_t track_id); Ref get_current(uint64_t track_index); - - SpineAnimationState(); - ~SpineAnimationState(); }; #endif//GODOT_SPINEANIMATIONSTATE_H diff --git a/spine-godot/godot/modules/spine_godot/SpineSprite.cpp b/spine-godot/godot/modules/spine_godot/SpineSprite.cpp index 145b9ba03..68146ad79 100644 --- a/spine-godot/godot/modules/spine_godot/SpineSprite.cpp +++ b/spine-godot/godot/modules/spine_godot/SpineSprite.cpp @@ -37,7 +37,7 @@ void SpineSprite::_bind_methods() { ClassDB::bind_method(D_METHOD("get_animation_state_data_res"), &SpineSprite::get_animation_state_data_res); ClassDB::bind_method(D_METHOD("_on_animation_data_created"), &SpineSprite::_on_animation_data_created); ClassDB::bind_method(D_METHOD("get_skeleton"), &SpineSprite::get_skeleton); - ClassDB::bind_method(D_METHOD("get_animation_state"), &SpineSprite::get_animation_state); + ClassDB::bind_method(D_METHOD("get_spine_object"), &SpineSprite::get_animation_state); ClassDB::bind_method(D_METHOD("_on_animation_data_changed"), &SpineSprite::_on_animation_data_changed); ClassDB::bind_method(D_METHOD("get_bind_slot_nodes"), &SpineSprite::get_bind_slot_nodes); @@ -197,7 +197,7 @@ void SpineSprite::_on_animation_data_created() { animation_state = Ref(memnew(SpineAnimationState)); animation_state->load_animation_state(animation_state_data_res); - animation_state->get_animation_state()->setListener(this); + animation_state->get_spine_object()->setListener(this); animation_state->update(0); animation_state->apply(skeleton);