コード例 #1
0
 public void Awake()
 {
     myAnimator = moveController.GetComponent <Animator>();
     m_FXHelper = moveController.GetComponent <FXHelper>();
     SetPlayerMoves();
     requiredEvents = new MoveEventUpdateList();
     regularEvents  = new MoveEventUpdateList();
     isCrossFading  = false;
 }
コード例 #2
0
    private void UpdateEventArray(MoveEventUpdateList moveEventList, float startingFrame, float nextFrame)
    {
        float fixedNextFrame = nextFrame < startingFrame ? currentMove.NumFrames : nextFrame;

        while (moveEventList.currentEventIndex < moveEventList.moveArray.Length)
        {
            MoveEvent currentEvent   = moveEventList.moveArray[moveEventList.currentEventIndex];
            float     moveEventFrame = moveController.NormalizedTimeToFrame_Wrapped(currentEvent.myAnimEvent.time);

            if (startingFrame <= moveEventFrame && moveEventFrame <= fixedNextFrame)
            {
                TryTriggerEvent(currentEvent);
                if (moveChanged == true)
                {
                    break;
                }
            }
            else if (moveEventFrame > fixedNextFrame)
            {
                break;
            }
            moveEventList.currentEventIndex++;
        }
        // if we wrap frames for a LOOPING animation, then play from 0 to the proper ending frame
        if (moveEventList.currentEventIndex == moveEventList.moveArray.Length && nextFrame < startingFrame)
        {
#if UNITY_ANDROID
            if (moveController.GetCurrentStateInfo().loop)
#else
            if (currentMove._animationClip != null && currentMove._animationClip.isLooping)
#endif
            {
                moveEventList.currentEventIndex = 0;
                if (moveEventList.moveArray.Length > 1 && nextFrame > 0.0f)
                {
                    UpdateEventArray(moveEventList, 0.0f, nextFrame);
                }
            }
        }

        moveEventList.lastUpdatedFrame = nextFrame;
    }