void FixedUpdate()
    {
        //WrapMode emulator
        if (currentAnimationData.clip == null)
        {
            return;
        }
        if (currentAnimationData.secondsPlayed == currentAnimationData.length)
        {
            if (currentAnimationData.clip.wrapMode == WrapMode.Loop || currentAnimationData.clip.wrapMode == WrapMode.PingPong)
            {
                if (MecanimControl.OnAnimationLoop != null)
                {
                    MecanimControl.OnAnimationLoop(currentAnimationData);
                }
                currentAnimationData.timesPlayed++;

                if (currentAnimationData.clip.wrapMode == WrapMode.Loop)
                {
                    SetCurrentClipPosition(0);
                }

                if (currentAnimationData.clip.wrapMode == WrapMode.PingPong)
                {
                    SetSpeed(currentAnimationData.clipName, -currentAnimationData.speed);
                    SetCurrentClipPosition(0);
                }
            }
            else if (currentAnimationData.timesPlayed == 0)
            {
                if (MecanimControl.OnAnimationEnd != null)
                {
                    MecanimControl.OnAnimationEnd(currentAnimationData);
                }
                currentAnimationData.timesPlayed = 1;

                if (currentAnimationData.clip.wrapMode == WrapMode.Once && alwaysPlay)
                {
                    Play(defaultAnimation, currentMirror);
                }
                else if (!alwaysPlay)
                {
                    animator.speed = 0;
                }
            }
        }
        else
        {
            //currentAnimationData.secondsPlayed += Time.deltaTime * animator.speed * Time.timeScale;
            currentTime = Time.time - startTime;
            currentAnimationData.secondsPlayed += (Time.fixedDeltaTime * animator.speed);
            if (currentAnimationData.secondsPlayed > currentAnimationData.length)
            {
                currentAnimationData.secondsPlayed = currentAnimationData.length;
            }
        }
    }
Esempio n. 2
0
    public void DoFixedUpdate()
    {
        //WrapMode emulator
        if (overrideAnimatorUpdate)
        {
            animator.enabled = false;
            animator.Update(Time.fixedDeltaTime);
        }

        if (currentAnimationData == null || currentAnimationData.clip == null)
        {
            return;
        }


        currentAnimationData.secondsPlayed += (Time.fixedDeltaTime * GetSpeed());
        if (currentAnimationData.secondsPlayed > currentAnimationData.length)
        {
            currentAnimationData.secondsPlayed = currentAnimationData.length;
        }
        currentAnimationData.normalizedTime = currentAnimationData.secondsPlayed / currentAnimationData.length;

        if (currentAnimationData.secondsPlayed == currentAnimationData.length)
        {
            if (currentAnimationData.clip.wrapMode == WrapMode.Loop || currentAnimationData.clip.wrapMode == WrapMode.PingPong)
            {
                if (MecanimControl.OnAnimationLoop != null)
                {
                    MecanimControl.OnAnimationLoop(currentAnimationData);
                }
                currentAnimationData.timesPlayed++;

                if (currentAnimationData.clip.wrapMode == WrapMode.Loop)
                {
                    SetCurrentClipPosition(0);
                }

                if (currentAnimationData.clip.wrapMode == WrapMode.PingPong)
                {
                    SetSpeed(currentAnimationData.clipName, -currentAnimationData.speed);
                    SetCurrentClipPosition(0);
                }
            }
            else if (currentAnimationData.timesPlayed == 0)
            {
                if (MecanimControl.OnAnimationEnd != null)
                {
                    MecanimControl.OnAnimationEnd(currentAnimationData);
                }
                currentAnimationData.timesPlayed = 1;

                if ((currentAnimationData.clip.wrapMode == WrapMode.Once ||
                     currentAnimationData.clip.wrapMode == WrapMode.Clamp) &&
                    alwaysPlay)
                {
                    Play(defaultAnimation, currentMirror);
                }
                else if (!alwaysPlay)
                {
                    SetSpeed(0);
                }
            }
        }
    }