//초기화를 위해서 모든 트랙 데이터를 초기화 public void UnlinkAll() { for (int i = 0; i < _nTrackData; i++) { _curTrackData = _trackData[i]; _curTrackData.UnlinkAll(); } }
//트랙을 추가한다. public bool AddTrack(string trackName, int layer, apAnimPlayUnit.BLEND_METHOD blendMethod, apPortrait portrait, apAnimPlayManager animPlayManager) { //이미 적용된 트랙이 있다면, 에러 메시지를 보낸다. bool isExist = _trackData.Exists(delegate(TimelineTrackData a) { return(a._trackName.Equals(trackName)); }); if (isExist) { Debug.LogError("AnyPortrait : A track with the same name has already been registered. [ " + trackName + " ]"); return(false); } TimelineTrackData newTrackData = new TimelineTrackData(this); bool isResult = newTrackData.SetTrack(trackName, layer, blendMethod, portrait, animPlayManager); if (!isResult) { return(false); } //리스트에 트랙 추가 _trackData.Add(newTrackData); _nTrackData = _trackData.Count; //트랙을 추가했으면, Layer에 맞게 정렬한다. (오름차순) _trackData.Sort(delegate(TimelineTrackData a, TimelineTrackData b) { return(a._layerIndex - b._layerIndex); }); for (int i = 0; i < _trackData.Count; i++) { _trackData[i].SetLayerOrder(i); //<<레이어의 순서를 다시 지정한다. } return(true); }
//업데이트 public void Update(apAnimPlayManager animPlayManager) { #if UNITY_2017_1_OR_NEWER _lastPlayedTimelineClip = null; #endif if (_nTrackData == 0) { return; } for (int i = 0; i < _nTrackData; i++) { _curTrackData = _trackData[i]; _curTrackData.Update(animPlayManager); } //0번 레이어의 마지막으로 재생된 클립 정보를 받자 #if UNITY_2017_1_OR_NEWER _lastPlayedTimelineClip = _trackData[0]._lastPlayedTimelineClip; #endif _lastPlayedLocalTime = _trackData[0]._lastPlayedLocalTime; }