示例#1
0
    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);
        }
    }
示例#2
0
    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;
    }
示例#3
0
 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;
     }
 }
示例#4
0
    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;
    }
示例#5
0
 public void ResetTimer(AnimationFrameSet animationFrameSet)
 {
     timeAtStart = Time.time;
     animationFrameSet.hasStarted = false;
     animationTimeElapsed = 0.0f;
 }