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;
        }
    }
Beispiel #2
0
    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;
        }
    }