Пример #1
0
        public void TransferOut()
        {
            if (mCurState == TranState.TranOut)
            {
                return;
            }

            TranVO tran = new TranVO();

            tran.OriValue  = 0;
            tran.DestValue = xc.GlobalSettings.GetInstance().MusicVolume;
            tran.Time      = 2f;
            mMainAudio.SetTranVO(tran);

            tran           = new TranVO();
            tran.OriValue  = xc.GlobalSettings.GetInstance().MusicVolume;
            tran.DestValue = 0f;
            tran.Time      = 2f;
            mFightAudio.SetTranVO(tran);

            mCurState = TranState.TranOut;
        }
Пример #2
0
    void QueueAddState(float fStartTime, float BPMScale, List <string> danceAniSeq, bool isBoy)
    {
        float startStateTime = fStartTime;
        float startDuration  = 0;
        float fdurtion       = 0;
        float startFrame     = 0;

        for (int i = 0; i < danceAniSeq.Count; i++)
        {
            string stateName = danceAniSeq[i];
            if (!AnimationLoader.s_AniStates.ContainsKey(stateName))
            {
                continue;
            }
            AniState      state    = AnimationLoader.s_AniStates[stateName];
            string        clipName = state.Motion;
            AnimationClip animClip = AnimationLoader.GetAnimationClip(clipName);

            if (animClip == null)
            {
                Debug.LogError("Dance error, animation can not be null." + clipName);
                continue;
            }

            //AddAnimationPlayEvent(startStateTime, stateName, nLayer);
            if (startDuration != 0)
            {
                if (CheckIfAvailableAni(stateName))
                {
                    AddAnimationBlendEvent(startDuration, clipName, fdurtion, startFrame, state.Speed, isBoy);
                }
                if (i > 0)
                {
                    int      tmpIndex = i - 1;
                    AniState revState = AnimationLoader.s_AniStates[AnimationLoader.DanceAniSequence[tmpIndex]];
                    if (CheckIfAvailableAni(revState.Name))
                    {
                        AddAnimationRemoveEvent(startDuration + animClip.length, revState.Motion, isBoy);
                    }
                }
            }
            else
            {
                if (CheckIfAvailableAni(stateName))
                {
                    AddAnimationPlayEvent(startStateTime, clipName, state.Speed, isBoy);
                }
                if (i > 0)
                {
                    int      tmpIndex = i - 1;
                    AniState revState = AnimationLoader.s_AniStates[AnimationLoader.DanceAniSequence[tmpIndex]];
                    if (CheckIfAvailableAni(revState.Name))
                    {
                        AddAnimationRemoveEvent(startDuration + animClip.length, revState.Motion, isBoy);
                    }
                }
            }

            AniState         nextState = null;
            TranState        nextTran  = null;
            List <TranState> trans     = state.Trans;
            foreach (TranState tran in trans)
            {
                if (tran != null && isBoy == tran.IsBoy && AnimationLoader.s_AniStates.ContainsKey(tran.DestState))
                {
                    nextState = AnimationLoader.s_AniStates[tran.DestState];
                    nextTran  = tran;
                    break;
                }
            }

            if (nextState == null)
            {
                foreach (TranState tran in trans)
                {
                    if (tran != null && AnimationLoader.s_AniStates.ContainsKey(tran.DestState))
                    {
                        nextState = AnimationLoader.s_AniStates[tran.DestState];
                        nextTran  = tran;
                        break;
                    }
                }
            }

            if (nextState != null && nextTran != null)
            {
                AnimationClip nextAnimClip = AnimationLoader.GetAnimationClip(nextState.Motion);
                if (nextAnimClip != null)
                {
                    if (state.Speed != 0 && nextTran.ExitTime != 0)
                    {
                        startDuration  = startStateTime + animClip.length / state.Speed * nextTran.ExitTime;
                        startStateTime = startDuration - nextAnimClip.length / AnimationLoader.s_AniStates[nextTran.DestState].Speed * nextTran.TranOffset;
                        fdurtion       = animClip.length * nextTran.TranDuration / state.Speed;

                        startFrame = nextAnimClip.length * nextTran.TranOffset;
                    }
                    else
                    {
                        Debug.LogError("Animation  speed or next ExitTime is zero! Please Check it, aniName is : " + clipName);
                    }
                }
            }
            else
            {
                break;
            }
        }
    }