public void PlayBlend(string clipName, BlendDirection direction = BlendDirection.Down, int fadeFrame = 0) { if (animationClips == null) { return; } if (string.IsNullOrEmpty(clipName)) { mBlendAnimationClip = null; return; } if (mBlendAnimationClip != null && mBlendAnimationClip.Name == clipName) { return; } blendDirection = direction; mBlendAnimationClip = animationClips.Find(x => x.Name == clipName); if (mBlendAnimationClip != null) { mBlendAnimationClip.Reset(this, 0); mBlendBeginAt = mBlendAnimationClip.CurrentFrame; mBlendFadeFrame = Mathf.Clamp(fadeFrame, 0, mBlendAnimationClip.FrameCount / 2); mBlendEnd = false; mBlendBegin = true; } }
public GpuInstancedAnimationClip Clone() { GpuInstancedAnimationClip clip = new GpuInstancedAnimationClip(Name, StartFrame, EndFrame, FrameCount, wrapMode); clip.Reset(null, 0); return(clip); }
public void Play(string clipName, int offsetFrame = 0, int fadeFrame = 0) { if (animationClips == null) { return; } if (mCurrentAnimationClip != null && mCurrentAnimationClip.Name == clipName) { if (mCurrentAnimationClip.CurrentFrame == 0 && mCurrentAnimationClip.wrapMode == GpuInstancedAnimationClip.WrapMode.Once) { mCurrentAnimationClip.Reset(this, offsetFrame); mFadeFrame = Mathf.Clamp(fadeFrame, 0, mCurrentAnimationClip.FrameCount); mFadeEnd = false; mFadeBeginAt = mCurrentAnimationClip.CurrentFrame; } return; } mPreviousAnimationClip = mCurrentAnimationClip; mCurrentAnimationClip = animationClips.Find((x) => x.Name == clipName); PlayBlend(null); if (mCurrentAnimationClip != null) { mCurrentAnimationClip.Reset(this, offsetFrame); mFadeFrame = Mathf.Clamp(fadeFrame, 0, mCurrentAnimationClip.FrameCount / 2); mFadeBeginAt = mCurrentAnimationClip.CurrentFrame; mFadeBegin = true; mFadeEnd = false; } }