int SetFrame(bool advance) { if (CurrentAnimSet == null) { SetSequence(CurrentSequence); } if (CurrentAnimSet == null) { return(0); } else { if (advance) { CurrentFrame++; } AnimationFrameSet set = FrameSetForDir(); if (CurrentFrame >= set.Length) { if (AnimationComplete != null) { AnimationComplete(this, EventArgs.Empty); } if (CurrentAnimSet != null) { if (CurrentAnimSet.Looping) { CurrentFrame = 0; } else if (CurrentAnimSet.EndAnimation != string.Empty) { SetSequence(CurrentAnimSet.EndAnimation); return(SetFrame(advance)); } else { CurrentFrame = set.Length; } } } return(set.Start + CurrentFrame); } }
public void AddSequence(string name, Directions dir, int start, int len, bool flip, bool loop) { if (!FrameSets.ContainsKey(name)) FrameSets.Add(name, new AnimationSet(name)); AnimationFrameSet set = new AnimationFrameSet(); set.Length = len; set.Start = flip ? start + MidFrame : start; if (FrameSets[name].Frames.ContainsKey(dir)) FrameSets[name].Frames[dir] = set; else FrameSets[name].Frames.Add(dir, set); FrameSets[name].Looping = loop; }
public void UpdateElapsedTime(AnimationFrameSet animationFrameSet) { float lastTimeElapsed = animationTimeElapsed; if (animationFrameSet.hasStarted == true) //if the framset has started playing { animationTimeElapsed = Time.time - timeAtStart; //update timer if (lastTimeElapsed + 1.0f < animationTimeElapsed) //check that more than a second has not passed since last play { ResetTimer(animationFrameSet); //if it has then reset the timer } } else //else set timer to current time and make sure time elapsed = 0 { ResetTimer(animationFrameSet); animationFrameSet.hasStarted = true; } }
public void AddSequence(string name, Directions dir, int start, int len, bool flip, bool loop) { if (!FrameSets.ContainsKey(name)) { FrameSets.Add(name, new AnimationSet(name)); } AnimationFrameSet set = new AnimationFrameSet(); set.Length = len; set.Start = flip ? start + MidFrame : start; if (FrameSets[name].Frames.ContainsKey(dir)) { FrameSets[name].Frames[dir] = set; } else { FrameSets[name].Frames.Add(dir, set); } FrameSets[name].Looping = loop; }
public void ResetTimer(AnimationFrameSet animationFrameSet) { timeAtStart = Time.time; animationFrameSet.hasStarted = false; animationTimeElapsed = 0.0f; }