/**
  * Sets an empty animation for every track, discarding any queued animations, and mixes to it over
  * the specified mix duration.
  */
 public void setEmptyAnimations(float mixDuration) {
   boolean oldDrainDisabled = queue.drainDisabled;
   queue.drainDisabled = true;
   for (int i = 0, n = tracks.size; i < n; i++) {
     TrackEntry current = tracks.get(i);
     if (current != null) setEmptyAnimation(current.trackIndex, mixDuration);
   }
   queue.drainDisabled = oldDrainDisabled;
   queue.drain();
 }
 void setAnimation() {
   if (ui.animationList.getSelected() == null) return;
   int track = ui.trackButtons.getCheckedIndex();
   TrackEntry current = state.getCurrent(track);
   TrackEntry entry;
   if (current == null) {
     state.setEmptyAnimation(track, 0);
     entry =
         state.addAnimation(track, ui.animationList.getSelected(), ui.loopCheckbox.isChecked(), 0);
     entry.setMixDuration(ui.mixSlider.getValue());
   } else {
     entry =
         state.setAnimation(track, ui.animationList.getSelected(), ui.loopCheckbox.isChecked());
   }
   entry.setAlpha(ui.alphaSlider.getValue());
 }