Example #1
0
        public virtual void OnEnable()
        {
            m_IsBuiltInType      = target != null && target.GetType().Assembly == typeof(TrackAsset).Assembly;
            m_Name               = serializedObject.FindProperty("m_Name");
            m_TrackCurvesWrapper = new TrackCurvesWrapper(target as TrackAsset);
            m_HeaderIcon         = TrackResourceCache.s_DefaultIcon.image;

            // only worry about the first track. if types are different, a different inspector is used.
            var track = target as TrackAsset;

            if (track != null)
            {
                var drawer = CustomTimelineEditorCache.GetTrackEditor(track);
                UnityEngine.Object binding = null;
                var director = m_Context as PlayableDirector;
                if (director != null)
                {
                    binding = director.GetGenericBinding(track);
                }

                var options = drawer.GetTrackOptions(track, binding);
                if (options.icon != null)
                {
                    m_HeaderIcon = options.icon;
                }
                else
                {
                    m_HeaderIcon = TrackResourceCache.GetTrackIcon(track).image;
                }
            }
        }
Example #2
0
        public TimelineTrackGUI(TreeViewController tv, TimelineTreeViewGUI w, int id, int depth, TreeViewItem parent, string displayName, TrackAsset sequenceActor)
            : base(tv, w, id, depth, parent, displayName, sequenceActor, false)
        {
            AnimationTrack animationTrack = sequenceActor as AnimationTrack;

            if (animationTrack != null)
            {
                m_InfiniteTrackDrawer = new InfiniteTrackDrawer(new AnimationTrackKeyDataSource(animationTrack));
            }
            else if (sequenceActor.HasAnyAnimatableParameters() && !sequenceActor.clips.Any())
            {
                m_InfiniteTrackDrawer = new InfiniteTrackDrawer(new TrackPropertyCurvesDataSource(sequenceActor));
            }

            UpdateInfiniteClipEditor(w.TimelineWindow);

            var bindings = track.outputs.ToArray();

            m_TrackDrawData.m_HasBinding = bindings.Length > 0;
            if (m_TrackDrawData.m_HasBinding)
            {
                m_TrackDrawData.m_Binding = bindings[0];
            }
            m_TrackDrawData.m_IsSubTrack      = IsSubTrack();
            m_TrackDrawData.m_AllowsRecording = DoesTrackAllowsRecording(sequenceActor);
            m_DefaultTrackIcon = TrackResourceCache.GetTrackIcon(track);


            m_TrackEditor = CustomTimelineEditorCache.GetTrackEditor(sequenceActor);

            try
            {
                m_TrackDrawOptions = m_TrackEditor.GetTrackOptions(track, null);
            }
            catch (Exception e)
            {
                Debug.LogException(e);
                m_TrackDrawOptions = CustomTimelineEditorCache.GetDefaultTrackEditor().GetTrackOptions(track, null);
            }

            m_TrackDrawOptions.errorText = null; // explicitly setting to null for an uninitialized state

            RebuildGUICacheIfNecessary();
        }
        public static TrackDrawer CreateInstance(TrackAsset trackAsset)
        {
            if (trackAsset == null)
            {
                return(Activator.CreateInstance <TrackDrawer>());
            }

            TrackDrawer drawer;

            try
            {
                drawer = (TrackDrawer)Activator.CreateInstance(TimelineHelpers.GetCustomDrawer(trackAsset.GetType()));
            }
            catch (Exception)
            {
                drawer = Activator.CreateInstance <TrackDrawer>();
            }

            drawer.track      = trackAsset;
            drawer.trackColor = TrackResourceCache.GetTrackColor(trackAsset);
            drawer.icon       = TrackResourceCache.GetTrackIcon(trackAsset);
            return(drawer);
        }