public bool IsAnimatable(PropertyModification[] modifications) { bool result; for (int i = 0; i < modifications.Length; i++) { IPlayableAsset playableAsset = modifications[i].target as IPlayableAsset; if (playableAsset != null) { TimelineClip timelineClip = TimelineRecording.FindClipWithAsset(this.state.timeline, playableAsset, this.state.currentDirector); if (timelineClip != null && timelineClip.IsParameterAnimatable(modifications[i].propertyPath)) { result = true; return(result); } } } foreach (GameObject current in TimelineRecording.GetRecordableGameObjects(this.state)) { for (int j = 0; j < modifications.Length; j++) { PropertyModification propertyModification = modifications[j]; if (AnimationWindowUtility.PropertyIsAnimatable(propertyModification.target, propertyModification.propertyPath, current)) { result = true; return(result); } } } result = false; return(result); }
void DirtyModifiedObjects(UndoPropertyModification[] modifications) { foreach (var m in modifications) { if (m.currentValue == null || m.currentValue.target == null) { continue; } var track = m.currentValue.target as TrackAsset; var playableAsset = m.currentValue.target as PlayableAsset; var editorClip = m.currentValue.target as EditorClip; if (track != null) { track.MarkDirty(); } else if (playableAsset != null) { var clip = TimelineRecording.FindClipWithAsset(state.editSequence.asset, playableAsset); if (clip != null) { clip.MarkDirty(); } } else if (editorClip != null && editorClip.clip != null) { editorClip.clip.MarkDirty(); } } }
public bool IsAnimatable(PropertyModification[] modifications) { // search playable assets for (int i = 0; i < modifications.Length; i++) { var iAsset = modifications[i].target as IPlayableAsset; if (iAsset != null) { TimelineClip clip = TimelineRecording.FindClipWithAsset(state.editSequence.asset, iAsset, state.editSequence.director); if (clip != null && clip.IsParameterAnimatable(modifications[i].propertyPath)) { return(true); } } } // search recordable game objects foreach (var gameObject in TimelineRecording.GetRecordableGameObjects(state)) { for (int i = 0; i < modifications.Length; ++i) { var modification = modifications[i]; if (AnimationWindowUtility.PropertyIsAnimatable(modification.target, modification.propertyPath, gameObject)) { return(true); } } } return(false); }
public static ICurvesOwner ToCurvesOwner(IPlayableAsset playableAsset, TimelineAsset timeline) { if (playableAsset == null) { return(null); } var curvesOwner = playableAsset as ICurvesOwner; if (curvesOwner == null) { // If the asset is not directly an ICurvesOwner, it might be the asset for a TimelineClip curvesOwner = TimelineRecording.FindClipWithAsset(timeline, playableAsset); } return(curvesOwner); }