public Point Run(TimeSpan duration) { AnimationCueDirectionEnum dir = _currentCue.Next; // if this is the case then we never have to do time calcs if (dir == AnimationCueDirectionEnum.StayHere) { _isEnd = true; return _currentCue.Point; } while (duration.Ticks >= _remainingTimeAtThisCue.Ticks) { duration = duration.Subtract(_remainingTimeAtThisCue); // move to next if (dir == AnimationCueDirectionEnum.MoveToNext) { AnimationCue cue = _subject.GetNextCue(_currentCue); _currentCue = cue; } else if (dir == AnimationCueDirectionEnum.MoveToBeginning) { _currentCue = _subject.First; } _remainingTimeAtThisCue = _currentCue.Duration; dir = _currentCue.Next; } _remainingTimeAtThisCue = _remainingTimeAtThisCue.Subtract(duration); return _currentCue.Point; }
public AnimationRunner(Animation subject) { this._subject = subject; _currentCue = subject.First; _remainingTimeAtThisCue = _currentCue.Duration; _isEnd = false; }
public static Animation CreateAnimation(Controller controller, string path, string prefix, string suffix, string[] nos, Point pt, Size sz, AnimationCueDirectionEnum lastCueDirection, int duration) { AnimationCue[] cues = new AnimationCue[nos.Length]; for (int i = 0; i < nos.Length; i++) { AnimationCueDirectionEnum cueDirection = AnimationCueDirectionEnum.MoveToNext; if (i == nos.Length - 1) cueDirection = lastCueDirection; cues[i] = new AnimationCue(controller.TextureStore.GetTexture(controller.Device, string.Format(@"{0}\{1}{2}{3}.png", path, prefix, nos[i], suffix)), cueDirection, BasicEngine.TurnTimeSpan.Ticks * duration, pt, sz); } Animation animation = new Animation(cues); return animation; }
public AnimationCue GetNextCue(AnimationCue cue) { AnimationCue cue2 = _cues[cue._arrayIndex + 1]; return cue2; }