Пример #1
0
    private void AniTimeUpdate()
    {
        if (m_AniTotalTime > 0)
        {
            m_AnimElemTime += 1;
            //int prevUsedTime = this.CurAniUsedTime;
            if (m_AniUsedTime >= 0)
            {
                m_AniUsedTime += _cImageAnimationScale;
            }
            //m_AniUsedTime += AppConfig.GetInstance().DeltaTime;
            else
            {
                m_AniUsedTime = 0;
            }

            //int curTUsedTime = this.CurAniUsedTime;
            if (m_AniUsedTime >= 0)
            {
                CacheAnimation.SendMessage("OnImageAniTimeUpdate", this, SendMessageOptions.DontRequireReceiver);
                if (ChekAnimCntOne() && m_AniUsedTime >= m_AniTotalTime)
                {
                    DoEndFrame();
                    m_AniTotalTime = -1;
                }
            }
        }
    }
Пример #2
0
    public async Task PlayActionAnimation_LegacyAnimation(int actionId, AnimActionType animActionType, float playSpeedMultiplier)
    {
        // If animator is not null, play the action animation
        ActionAnimation actionAnimation;
        AnimationClip   clip;
        float           triggerDuration;
        float           extraDuration;
        AudioClip       audioClip;

        if (GameInstance.ActionAnimations.TryGetValue(actionId, out actionAnimation) &&
            actionAnimation.GetData(this, out clip, out triggerDuration, out extraDuration, out audioClip))
        {
            if (CacheAnimation.GetClip(LEGACY_CLIP_ACTION) != null)
            {
                CacheAnimation.RemoveClip(LEGACY_CLIP_ACTION);
            }
            CacheAnimation.AddClip(clip, LEGACY_CLIP_ACTION);
            if (audioClip != null)
            {
                AudioSource.PlayClipAtPoint(audioClip, CacheTransform.position, AudioManager.Singleton == null ? 1f : AudioManager.Singleton.sfxVolumeSetting.Level);
            }
            CrossFadeLegacyAnimation(LEGACY_CLIP_ACTION, legacyAnimationData.actionClipFadeLength);
            // Waits by current transition + clip duration before end animation
            int waitDelay = (int)(1000 * (clip.length / playSpeedMultiplier));
            await Task.Delay(waitDelay);

            CrossFadeLegacyAnimation(legacyAnimationData.idleClip, legacyAnimationData.idleClipFadeLength);
            // Waits by current transition + extra duration before end playing animation state
            waitDelay = (int)(1000 * (extraDuration / playSpeedMultiplier));
            await Task.Delay(waitDelay);
        }
    }
Пример #3
0
 private void CrossFadeLegacyAnimation(string clipName, float fadeLength)
 {
     if (!CacheAnimation.IsPlaying(clipName))
     {
         CacheAnimation.CrossFade(clipName, fadeLength);
     }
 }
Пример #4
0
 private void UpdateAnimation_LegacyAnimation(bool isDead, Vector3 moveVelocity, float playMoveSpeedMultiplier)
 {
     if (isDead)
     {
         CrossFadeLegacyAnimation(legacyAnimationData.deadClip, legacyAnimationData.deadClipFadeLength);
     }
     else
     {
         if (CacheAnimation.IsPlaying(LEGACY_CLIP_ACTION))
         {
             return;
         }
         var ySpeed = moveVelocity.y;
         if (ySpeed > legacyAnimationData.ySpeedToPlayJumpClip)
         {
             CrossFadeLegacyAnimation(legacyAnimationData.jumpClip, legacyAnimationData.jumpClipFadeLength);
         }
         else if (ySpeed < legacyAnimationData.ySpeedToPlayFallClip)
         {
             CrossFadeLegacyAnimation(legacyAnimationData.fallClip, legacyAnimationData.fallClipFadeLength);
         }
         else
         {
             var moveMagnitude = new Vector3(moveVelocity.x, 0, moveVelocity.z).magnitude;
             if (moveMagnitude > legacyAnimationData.magnitudeToPlayMoveClip)
             {
                 CrossFadeLegacyAnimation(legacyAnimationData.moveClip, legacyAnimationData.moveClipFadeLength);
             }
             else if (moveMagnitude < legacyAnimationData.magnitudeToPlayMoveClip)
             {
                 CrossFadeLegacyAnimation(legacyAnimationData.idleClip, legacyAnimationData.idleClipFadeLength);
             }
         }
     }
 }
Пример #5
0
 public void Stop()
 {
     if (m_FrameList == null || m_FrameList.Count <= 0)
     {
         return;
     }
     CacheAnimation.Stop();
 }
Пример #6
0
    public bool PlayerPlayerAni(PlayerState state, int startFrame, int endFrame, bool isLoop = true)
    {
        SetLimitFrame(startFrame, endFrame, false);
        if (m_State == state)
        {
            if (CacheAnimation.enabled && !CacheAnimation.isPlaying)
            {
                CacheAnimation.Play();
            }
            return(true);
        }

        ResetAnimation();

        if (!SetStateFrameList(state))
        {
            return(false);
        }

        bool ret = DoInitAnimation();

        if (ret)
        {
            m_IsLoop    = isLoop;
            m_PrevState = m_State;
            m_State     = state;

            CacheAnimation.Stop();
            if (isLoop)
            {
                CacheAnimation.wrapMode = WrapMode.Loop;
            }
            else
            {
                CacheAnimation.wrapMode = WrapMode.Once;
            }
            CacheAnimation.Play();
        }
        else
        {
            m_IsLoop    = isLoop;
            m_PrevState = m_State;
            m_State     = state;

            DoEndFrame();
        }

        return(ret);
    }
Пример #7
0
        public virtual void PlayAnim(AnimationState animState, float BlendTime, bool bForceRender)
        {
            mCachedAnimationState = animState;
            AnimSpeed             = animState.speed;
            float fadeLength = BlendTime * 0.001f;

            if (fadeLength == 0)
            {
                CacheAnimation.Play(animState.name);
            }
            else
            {
                CacheAnimation.CrossFade(animState.name, fadeLength);
            }

            ChangeForceSkinAnimation(bForceRender);
        }
Пример #8
0
    public bool PlayerPlayerAni(PlayerState state, int startFrame, int endFrame, bool isLoop = true)
    {
        SetLimitFrame(startFrame, endFrame, false);
        if (m_State == state)
        {
            if (CacheAnimation.enabled && !CacheAnimation.isPlaying)
            {
                CacheAnimation.Play();
            }
            return(true);
        }

        ResetAnimation();

        PlayerDisplay displayer = this.CacheDisplayer;

        if (displayer == null)
        {
            return(false);
        }
        var loaderPlayer = displayer.LoaderPlayer;

        if (loaderPlayer == null)
        {
            return(false);
        }

        var imgRes = loaderPlayer.ImageRes;

        if (imgRes == null)
        {
            return(false);
        }
        var imgLib = imgRes.ImgLib;

        if (imgLib == null)
        {
            imgRes.Init();
            imgLib = imgRes.ImgLib;
            if (imgLib == null)
            {
                return(false);
            }
        }


        m_FrameList = imgLib.GetAnimationNodeList(state);
        bool ret = DoInitAnimation();

        if (ret)
        {
            m_IsLoop = isLoop;
            m_State  = state;

            CacheAnimation.Stop();
            if (isLoop)
            {
                CacheAnimation.wrapMode = WrapMode.Loop;
            }
            else
            {
                CacheAnimation.wrapMode = WrapMode.Once;
            }
            CacheAnimation.Play();
        }
        else
        {
            m_IsLoop = isLoop;
            m_State  = state;

            DoEndFrame();
        }

        return(ret);
    }