internal static UndoPropertyModification[] ProcessPlayableAssetModification(UndoPropertyModification[] modifications, WindowState state)
        {
            // can't record without a director since the asset being modified might be a scene instance
            if (state == null || state.editSequence.director == null)
            {
                return(modifications);
            }

            var remaining = new List <UndoPropertyModification>();

            foreach (UndoPropertyModification mod in modifications)
            {
                var clip = FindClipWithAsset(state.editSequence.asset, TimelineRecording.GetTarget(mod) as IPlayableAsset, state.editSequence.director);
                if (clip == null || !IsRecording(clip, state) || !ProcessPlayableAssetRecording(mod, state, clip))
                {
                    remaining.Add(mod);
                }
            }

            if (remaining.Count() != modifications.Length)
            {
                state.rebuildGraph = true;
                state.GetWindow().Repaint();
            }

            return(remaining.ToArray());
        }
 internal static bool HasAnyPlayableAssetModifications(UndoPropertyModification[] modifications)
 {
     return(modifications.Any(x => (TimelineRecording.GetTarget(x) as IPlayableAsset) != null));
 }