Exemple #1
0
        //Request의 AdaptWeightToPlayUnits에서 호출하는 함수
        public void SetRequestWeightToPlayUnits(apAnimPlayRequest request, float prevUnitWeight, float nextUnitWeight, float requestWeight)
        {
            //TODO. AdaptWeightToPlayUnits 함수의 내용을 적자
            //단, Prev 지점 확실히 해야함
            //Debug.LogError("TODO : SetRequestWeightToPlayUnits");

            if (request._nextPlayUnit != null)
            {
                //Weight가 적용되는 방식 1) To Next
                request._nextPlayUnit.AddWeight(nextUnitWeight, requestWeight);
            }

            //이전 유닛에 대해서 Weight 지정
            apAnimPlayUnit playUnit = null;



            //테스트 코드 : 뒤에서부터 체크해서 "유효한" 한개의 PrevUnit만 Weight를 적용
            if (request._prevPlayUnitKeys.Count > 0)
            {
                for (int i = request._prevPlayUnitKeys.Count - 1; i >= 0; i--)
                {
                    playUnit = GetPlayUnitByLinkKey(request._prevPlayUnitKeys[i]);
                    //prevUnitWeight 총 합이 1이 되도록 분할한다.
                    if (playUnit != null)
                    {
                        //Weight가 적용되는 방식 2) To Prev
                        playUnit.AddWeight(prevUnitWeight, requestWeight);
                        break;
                    }
                }
            }



            //Prev에 있었지만 다음 Request로 인해 연결이 끊겨버린
            //Next Chained에 해당하는 AnimPlayUnit에 대해서도 Weight를 지정해주자
            SetRequestWeightToNextChained(request, prevUnitWeight, requestWeight);
        }
        // Functions
        //--------------------------------------------------
        public void AdaptWeightToPlayUnits()
        {
            //float weight2Next = _nextUnitWeight * _requestWeight;
            //float weight2Prev = (1 - _nextUnitWeight) * (_requestWeight);
            //float weight2Prev = _prevUnitWeight * _requestWeight;

            if (_nextPlayUnit != null)
            {
                _nextPlayUnit.AddWeight(_nextUnitWeight, _requestWeight);
            }

            for (int i = 0; i < _prevPlayUnits.Count; i++)
            {
                if (_prevPlayUnits[i] != null)
                {
                    if (_nextPlayUnit != _prevPlayUnits[i])
                    {
                        _prevPlayUnits[i].AddWeight(_prevUnitWeight, _requestWeight);
                    }
                }
            }
        }