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();
                }
            }
        }
示例#3
0
        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);
        }