[c][cpp] Port: Added TrackEntry#isNextReady() #2547

This commit is contained in:
Mario Zechner 2024-06-11 14:12:20 +02:00
parent c0efb545bd
commit f2d1a2104d
5 changed files with 26 additions and 0 deletions

View File

@ -150,6 +150,8 @@ SP_API void spTrackEntry_setMixDuration(spTrackEntry *entry, float mixDuration,
SP_API int/*bool*/ spTrackEntry_wasApplied(spTrackEntry *entry);
SP_API int/*bool*/ spTrackEntry_isNextReady(spTrackEntry *entry);
SP_API void spAnimationState_clearNext(spAnimationState *self, spTrackEntry *entry);
/** Use this to dispose static memory before your app exits to appease your memory leak detector*/

View File

@ -1069,6 +1069,10 @@ int spTrackEntry_wasApplied(spTrackEntry *entry) {
return entry->nextTrackLast != -1;
}
int spTrackEntry_isNextReady(spTrackEntry *entry) {
return entry->next != NULL && entry->nextTrackLast - entry->next->delay >= 0;
}
void _spTrackEntry_computeHold(spTrackEntry *entry, spAnimationState *state) {
spTrackEntry *to;
spTimeline **timelines;

View File

@ -1412,6 +1412,18 @@ float spine_track_entry_get_track_complete(spine_track_entry entry) {
return _entry->getTrackComplete();
}
spine_bool spine_track_entry_was_applied(spine_track_entry entry) {
if (entry == nullptr) return false;
TrackEntry *_entry = (TrackEntry *) entry;
return _entry->wasApplied();
}
spine_bool spine_track_entry_is_next_ready(spine_track_entry entry) {
if (entry == nullptr) return false;
TrackEntry *_entry = (TrackEntry *) entry;
return _entry->isNextReady();
}
// Skeleton
void spine_skeleton_update_cache(spine_skeleton skeleton) {

View File

@ -371,6 +371,8 @@ SPINE_CPP_LITE_EXPORT spine_track_entry spine_track_entry_get_mixing_from(spine_
SPINE_CPP_LITE_EXPORT spine_track_entry spine_track_entry_get_mixing_to(spine_track_entry entry);
SPINE_CPP_LITE_EXPORT void spine_track_entry_reset_rotation_directions(spine_track_entry entry);
SPINE_CPP_LITE_EXPORT float spine_track_entry_get_track_complete(spine_track_entry entry);
SPINE_CPP_LITE_EXPORT float spine_track_entry_was_applied(spine_track_entry entry);
SPINE_CPP_LITE_EXPORT float spine_track_entry_is_next_ready(spine_track_entry entry);
// OMITTED setListener()
// OMITTED setListener()

View File

@ -284,6 +284,12 @@ namespace spine {
/// See AnimationState::apply(Skeleton).
bool wasApplied();
/// Returns true if there is a getNext() track entry that is ready to become the current track entry during the
/// next AnimationState::update(float)}
bool isNextReady () {
return _next != NULL && _nextTrackLast - _next->_delay >= 0;
}
private:
Animation *_animation;
TrackEntry *_previous;