//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); } } } }