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; } } }
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); } } } }