/** * Uses {@link #getTrackTime()} to compute the <code>animationTime</code>, which is between * {@link #getAnimationStart()} and {@link #getAnimationEnd()}. When the <code>trackTime</code> * is 0, the <code>animationTime</code> is equal to the <code>animationStart</code> time. */ public float getAnimationTime() { if (loop) { float duration = animationEnd - animationStart; if (duration == 0) return animationStart; return (trackTime % duration) + animationStart; } return Math.min(trackTime + animationStart, animationEnd); }
private void setCurrent(int index, TrackEntry current, boolean interrupt) { TrackEntry from = expandToIndex(index); tracks.set(index, current); if (from != null) { if (interrupt) queue.interrupt(from); current.mixingFrom = from; current.mixTime = 0; from.timelinesRotation.clear(); // Reset rotation for mixing out, in case entry was mixed in. // If not completely mixed in, set mixAlpha so mixing out happens from current mix to zero. if (from.mixingFrom != null && from.mixDuration > 0) current.mixAlpha *= Math.min(from.mixTime / from.mixDuration, 1); } queue.start(current); }