/// <summary>
 /// Plays a fire-and-forget animation.  The animation will play once (regardless of its repeat mode),
 /// then the controller will return to the specified default animation.
 /// </summary>
 /// <param name="animation">The animation to play.</param>
 /// <param name="defaultAnimation">The <see cref="SpriteAnimation"/> to play once the fire-and-forget animation has completed.</param>
 /// <param name="playbackTime">The desired playback time in milliseconds, or <see langword="null"/> to use the standard playback time.</param>
 public void FireAndForget(SpriteAnimation animation, SpriteAnimation defaultAnimation, Double? playbackTime = null)
 {
     this.animation = animation;
     this.defaultAnimation = defaultAnimation;
     this.playbackTime = playbackTime;
     ResetAnimation();
 }
 /// <summary>
 /// Stops the controller's current animation.
 /// </summary>
 public void StopAnimation()
 {
     this.animation = null;
     this.defaultAnimation = null;
     this.playbackTime = null;
     this.timer = 0.0;
     this.frame = null;
 }
 /// <summary>
 /// Plays a fire-and-forget animation.  The animation will play once (regardless of its repeat mode),
 /// then the controller will return to the currently playing animation.
 /// </summary>
 /// <param name="animation">The <see cref="SpriteAnimation"/> to play.</param>
 /// <param name="playbackTime">The desired playback time in milliseconds, or <see langword="null"/> to use the standard playback time.</param>
 public void FireAndForget(SpriteAnimation animation, Double? playbackTime = null)
 {
     FireAndForget(animation, this.animation, playbackTime);
 }
 /// <summary>
 /// Plays the specified animation.
 /// </summary>
 /// <param name="animation">The <see cref="SpriteAnimation"/> to play.</param>
 public void PlayAnimation(SpriteAnimation animation)
 {
     this.animation = animation;
     this.defaultAnimation = null;
     this.playbackTime = null;
     ResetAnimation();
 }