// 업데이트 //-------------------------------------------------------------------- public void Update() { //플레이중인 TrackSet을 찾고 바로 업데이트 _curTrackSet = null; #if UNITY_2017_1_OR_NEWER _lastPlayedTimelineClipPrev = _lastPlayedTimelineClip; _lastPlayedTimelineClip = null; #endif _lastPlayedLocalTime = 0.0f; for (int i = 0; i < _nTrackSets; i++) { _curTrackSet = _trackSets[i]; if (_curTrackSet.IsPlaying) { _curTrackSet.Update(_animPlayManager); //마지막으로 계산된 클립을 저장한다. #if UNITY_2017_1_OR_NEWER _lastPlayedTimelineClip = _curTrackSet._lastPlayedTimelineClip; #endif _lastPlayedLocalTime = _curTrackSet._lastPlayedLocalTime; return; } } }
// Functions //------------------------------------------------- public bool AddTrack( #if UNITY_2017_1_OR_NEWER PlayableDirector playableDirector, #endif string trackName, int layer, apAnimPlayUnit.BLEND_METHOD blendMethod) { #if UNITY_2017_1_OR_NEWER if (playableDirector == null) { Debug.LogError("AnyPortrait : AddTimelineTrack() is Failed. PlayableDirector is Null."); return(false); } if (playableDirector.playableAsset == null) { Debug.LogError("AnyPortrait : AddTimelineTrack() is Failed. PlayableAsset(Timeline) is Null."); return(false); } #endif if (string.IsNullOrEmpty(trackName)) { Debug.LogError("AnyPortrait : AddTimelineTrack() is Failed. Track Name is empty."); return(false); } #if UNITY_2017_1_OR_NEWER bool isValidTrack = DirectorTrackSet.CheckTrackValidation(playableDirector, playableDirector.playableAsset, trackName); if (!isValidTrack) { Debug.LogError("AnyPortrait : AddTimelineTrack() is Failed. The requested track could not be found."); return(false); } //이미 등록된 Director에 대하여 새로운 Track을 추가하는 경우일 수 있다. //없다면 새로 Director를 만들고, 있으면 재활용 DirectorTrackSet targetDirectorSet = _trackSets.Find(delegate(DirectorTrackSet a) { return(a._playableDirector == playableDirector && a._playableAsset == playableDirector.playableAsset); }); if (targetDirectorSet == null) { //새로운 Director로 등록해야 한다. targetDirectorSet = new DirectorTrackSet(); targetDirectorSet.SetPlayableDirector(playableDirector, playableDirector.playableAsset); _trackSets.Add(targetDirectorSet); _nTrackSets = _trackSets.Count; } bool result = targetDirectorSet.AddTrack(trackName, layer, blendMethod, _portrait, _animPlayManager); return(result); #else return(false); #endif }
// 종료시 모두 초기화 public void UnlinkAll() { _curTrackSet = null; for (int i = 0; i < _nTrackSets; i++) { _curTrackSet = _trackSets[i]; _curTrackSet.UnlinkAll(); } }
//초기화 public TimelineTrackData(DirectorTrackSet parentTrackSet) { #if UNITY_2017_1_OR_NEWER _parentTrackSet = parentTrackSet; #endif }