[c] AnimationState#apply returns boolean indicating if any timeline was applied. #919

This commit is contained in:
badlogic 2017-06-04 10:59:02 +02:00
parent b14b5d805d
commit 061d0d26b2
2 changed files with 5 additions and 2 deletions

View File

@ -120,7 +120,7 @@ spAnimationState* spAnimationState_create (spAnimationStateData* data);
void spAnimationState_dispose (spAnimationState* self); void spAnimationState_dispose (spAnimationState* self);
void spAnimationState_update (spAnimationState* self, float delta); void spAnimationState_update (spAnimationState* self, float delta);
void spAnimationState_apply (spAnimationState* self, struct spSkeleton* skeleton); int /**bool**/ spAnimationState_apply (spAnimationState* self, struct spSkeleton* skeleton);
void spAnimationState_clearTracks (spAnimationState* self); void spAnimationState_clearTracks (spAnimationState* self);
void spAnimationState_clearTrack (spAnimationState* self, int trackIndex); void spAnimationState_clearTrack (spAnimationState* self, int trackIndex);

View File

@ -327,7 +327,7 @@ int /*boolean*/ _spAnimationState_updateMixingFrom (spAnimationState* self, spTr
return 0; return 0;
} }
void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { int spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
_spAnimationState* internal = SUB_CAST(_spAnimationState, self); _spAnimationState* internal = SUB_CAST(_spAnimationState, self);
spTrackEntry* current; spTrackEntry* current;
int i, ii, n; int i, ii, n;
@ -337,6 +337,7 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
int /*boolean*/ firstFrame; int /*boolean*/ firstFrame;
float* timelinesRotation; float* timelinesRotation;
spTimeline* timeline; spTimeline* timeline;
int applied = 0;
if (internal->animationsChanged) _spAnimationState_animationsChanged(self); if (internal->animationsChanged) _spAnimationState_animationsChanged(self);
@ -344,6 +345,7 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
float mix; float mix;
current = self->tracks[i]; current = self->tracks[i];
if (!current || current->delay > 0) continue; if (!current || current->delay > 0) continue;
applied = -1;
/* Apply mixing from entries first. */ /* Apply mixing from entries first. */
mix = current->alpha; mix = current->alpha;
@ -381,6 +383,7 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) {
} }
_spEventQueue_drain(internal->queue); _spEventQueue_drain(internal->queue);
return applied;
} }
float _spAnimationState_applyMixingFrom (spAnimationState* self, spTrackEntry* to, spSkeleton* skeleton) { float _spAnimationState_applyMixingFrom (spAnimationState* self, spTrackEntry* to, spSkeleton* skeleton) {