private void DrawClipBody(TrackDrawer.ClipDrawData drawData, bool drawCustomBody)
        {
            DirectorStyles instance           = DirectorStyles.Instance;
            Color          colorClipHighlight = instance.customSkin.colorClipHighlight;
            Color          colorClipShadow    = instance.customSkin.colorClipShadow;
            GUIStyle       gUIStyle           = instance.timelineClip;

            if (drawData.selected)
            {
                gUIStyle = instance.timelineClipSelected;
            }
            GUI.Box(drawData.clipCenterSection, GUIContent.none, gUIStyle);
            if (drawCustomBody)
            {
                Rect clippedRect = drawData.clippedRect;
                clippedRect.set_yMin(clippedRect.get_yMin() + 2f);
                clippedRect.set_yMax(clippedRect.get_yMax() - TrackDrawer.k_ClipColoredLineThickness);
                this.DrawCustomClipBody(drawData, clippedRect);
            }
            Rect targetRect = drawData.targetRect;

            targetRect.set_yMin(targetRect.get_yMax() - TrackDrawer.k_ClipColoredLineThickness);
            Color clipBaseColor = this.GetClipBaseColor(drawData.clip);

            EditorGUI.DrawRect(targetRect, clipBaseColor);
            EditorGUI.DrawRect(new Rect(drawData.targetRect.get_xMin(), drawData.targetRect.get_yMin(), drawData.targetRect.get_width() - 2f, 2f), colorClipHighlight);
            EditorGUI.DrawRect(new Rect(drawData.targetRect.get_xMin(), drawData.targetRect.get_yMin() + 2f, 2f, drawData.targetRect.get_height()), colorClipHighlight);
            EditorGUI.DrawRect(new Rect(drawData.targetRect.get_xMax() - 2f, drawData.targetRect.get_yMin(), 2f, drawData.targetRect.get_height()), colorClipShadow);
            EditorGUI.DrawRect(new Rect(drawData.targetRect.get_xMin(), drawData.targetRect.get_yMax() - 2f, drawData.targetRect.get_width(), 2f), colorClipShadow);
        }
        private static void DrawRecordBackground(Rect trackRect)
        {
            DirectorStyles instance = DirectorStyles.Instance;

            EditorGUI.DrawRect(trackRect, instance.customSkin.colorInfiniteTrackBackgroundRecording);
            Graphics.ShadowLabel(trackRect, instance.Elipsify(DirectorStyles.recordingLabel.get_text(), trackRect, instance.fontClip), instance.fontClip, Color.get_white(), Color.get_black());
        }
        public static GUIStyle UssStyleForType(Type type)
        {
            ClearCacheIfInvalid();

            GUIStyle cachedStyle;

            if (s_CustomStyles.TryGetValue(type, out cachedStyle))
            {
                return(cachedStyle);
            }

            var style = DirectorStyles.GetGUIStyle(DirectorStyles.markerDefaultStyle);

            var customStyleForType = CustomStyleForType(type);

            if (customStyleForType != null)
            {
                if (IsStyleValid(customStyleForType))
                {
                    style = DirectorStyles.GetGUIStyle(customStyleForType);
                }
                else
                {
                    Debug.LogWarningFormat(k_ErrorCannotFindStyle, customStyleForType, type.Name);
                }
            }

            s_CustomStyles.Add(type, style);
            return(style);
        }
 public TimelineTreeView(TimelineWindow sequencerWindow, TreeViewController treeView)
 {
     this.m_TreeView = treeView;
     this.m_TreeView.set_useExpansionAnimation(true);
     TimelineTreeView.m_Styles = DirectorStyles.Instance;
     this.m_State        = sequencerWindow.state;
     this.m_FoldoutWidth = DirectorStyles.Instance.foldout.get_fixedWidth();
 }
        static void DrawRecordBackground(Rect trackRect)
        {
            var styles = DirectorStyles.Instance;

            EditorGUI.DrawRect(trackRect, styles.customSkin.colorInfiniteTrackBackgroundRecording);

            Graphics.ShadowLabel(trackRect,
                                 DirectorStyles.Elipsify(DirectorStyles.recordingLabel.text, trackRect, styles.fontClip),
                                 styles.fontClip, Color.white, Color.black);
        }
Example #6
0
        static void DrawClipLabel(string title, Rect availableRect, Color textColor, IconData[] leftIcons, IconData[] rightIcons, string tooltipMessage = "")
        {
            s_TitleContent.text = title;
            var neededTextWidth      = DirectorStyles.Instance.fontClip.CalcSize(s_TitleContent).x;
            var neededIconWidthLeft  = 0.0f;
            var neededIconWidthRight = 0.0f;

            if (leftIcons != null)
            {
                for (int i = 0, n = leftIcons.Length; i < n; ++i)
                {
                    neededIconWidthLeft += leftIcons[i].width + k_IconsPadding;
                }
            }

            if (rightIcons != null)
            {
                for (int i = 0, n = rightIcons.Length; i < n; ++i)
                {
                    neededIconWidthRight += rightIcons[i].width + k_IconsPadding;
                }
            }

            var neededIconWidth = Mathf.Max(neededIconWidthLeft, neededIconWidthRight);

            // Atomic operation: We either show all icons or no icons at all
            var showIcons = neededTextWidth / 2.0f + neededIconWidth < availableRect.width / 2.0f;

            if (showIcons)
            {
                if (leftIcons != null)
                {
                    DrawClipIcons(leftIcons, IconData.Side.Left, neededTextWidth, availableRect);
                }

                if (rightIcons != null)
                {
                    DrawClipIcons(rightIcons, IconData.Side.Right, neededTextWidth, availableRect);
                }
            }

            if (neededTextWidth > availableRect.width)
            {
                s_TitleContent.text = DirectorStyles.Elipsify(title, availableRect.width, neededTextWidth);
            }

            s_TitleContent.tooltip = tooltipMessage;
            DrawClipName(availableRect, s_TitleContent, textColor);
        }
        public TimelineTreeView(TimelineWindow sequencerWindow, TreeViewController treeView)
        {
            m_TreeView = treeView;
            m_TreeView.useExpansionAnimation = true;

            m_TreeView.selectionChangedCallback         += SelectionChangedCallback;
            m_TreeView.contextClickOutsideItemsCallback += ContextClickOutsideItemsCallback;
            m_TreeView.itemDoubleClickedCallback        += ItemDoubleClickedCallback;
            m_TreeView.contextClickItemCallback         += ContextClickItemCallback;

            m_TreeView.SetConsumeKeyDownEvents(false);
            m_Styles = DirectorStyles.Instance;
            m_State  = sequencerWindow.state;

            m_FoldoutWidth = DirectorStyles.Instance.foldout.fixedWidth;
        }
        public TimelineGroupGUI(TreeViewController treeview, TimelineTreeViewGUI treeviewGUI, int id, int depth, TreeViewItem parent, string displayName, TrackAsset trackAsset, bool isRoot)
            : base(id, depth, parent, displayName, trackAsset, treeview, treeviewGUI)
        {
            m_Styles = DirectorStyles.Instance;
            m_IsRoot = isRoot;

            var trackPath    = AssetDatabase.GetAssetPath(trackAsset);
            var sequencePath = AssetDatabase.GetAssetPath(treeviewGUI.TimelineWindow.state.editSequence.asset);

            if (trackPath != sequencePath)
            {
                m_IsReferencedTrack = true;
            }

            m_GroupDepth = CalculateGroupDepth(parent);
        }
        static void DrawMuteOverlay(DrawData data)
        {
            DirectorStyles styles = TimelineWindow.styles;

            var colorOverlay = OverlayDrawer.CreateColorOverlay(GUIClip.Unclip(data.contentRect), styles.customSkin.colorTrackDarken);

            colorOverlay.Draw();

            Rect textRect   = Graphics.CalculateTextBoxSize(data.contentRect, styles.fontClip, k_Muted, WindowConstants.overlayTextPadding);
            var  boxOverlay = OverlayDrawer.CreateTextBoxOverlay(
                GUIClip.Unclip(textRect),
                k_Muted.text,
                styles.fontClip,
                Color.white,
                styles.customSkin.colorLockTextBG,
                styles.displayBackground);

            boxOverlay.Draw();
        }
Example #10
0
        public static Color GetTrackColor(TrackAsset track)
        {
            if (track == null)
            {
                return(Color.white);
            }

            // Try to ensure DirectorStyles is initialized first
            // Note: GUISkin.current must exist to be able do so
            if (!DirectorStyles.IsInitialized && GUISkin.current != null)
            {
                DirectorStyles.ReloadStylesIfNeeded();
            }

            Color color;

            if (!s_TrackColorCache.TryGetValue(track.GetType(), out color))
            {
                var attr = track.GetType().GetCustomAttributes(typeof(TrackColorAttribute), true);
                if (attr.Length > 0)
                {
                    color = ((TrackColorAttribute)attr[0]).color;
                }
                else
                {
                    // case 1141958
                    // There was an error initializing DirectorStyles
                    if (!DirectorStyles.IsInitialized)
                    {
                        return(Color.white);
                    }

                    color = DirectorStyles.Instance.customSkin.colorDefaultTrackDrawer;
                }

                s_TrackColorCache[track.GetType()] = color;
            }
            return(color);
        }
Example #11
0
        public override void Draw(Rect headerRect, Rect contentRect, WindowState state)
        {
            DetectTrackChanged();
            UpdateDrawData(state);

            UpdateInfiniteClipEditor(state.GetWindow());

            var trackHeaderRect  = headerRect;
            var trackContentRect = contentRect;

            float inlineCurveHeight = contentRect.height - GetTrackContentHeight(state);
            bool  hasInlineCurve    = inlineCurveHeight > 0.0f;

            if (hasInlineCurve)
            {
                trackHeaderRect.height  -= inlineCurveHeight;
                trackContentRect.height -= inlineCurveHeight;
            }

            if (Event.current.type == EventType.Repaint)
            {
                m_TreeViewRect = trackContentRect;
            }

            if (s_ArmForRecordContentOn == null)
            {
                s_ArmForRecordContentOn = new GUIContent(DirectorStyles.GetBackgroundImage(DirectorStyles.Instance.autoKey, StyleState.active));
            }

            if (s_ArmForRecordContentOff == null)
            {
                s_ArmForRecordContentOff = new GUIContent(DirectorStyles.GetBackgroundImage(DirectorStyles.Instance.autoKey));
            }

            if (s_ArmForRecordDisabled == null)
            {
                s_ArmForRecordDisabled = new GUIContent(DirectorStyles.GetBackgroundImage(DirectorStyles.Instance.autoKey), Styles.kArmForRecordDisabled);
            }

            track.SetCollapsed(!isExpanded);

            RebuildGUICacheIfNecessary();

            // Prevents from drawing outside of bounds, but does not effect layout or markers
            bool isOwnerDrawSucceed = false;

            Vector2 visibleTime = state.timeAreaShownRange;

            if (drawer != null)
            {
                isOwnerDrawSucceed = drawer.DrawTrack(trackContentRect, track, visibleTime, state);
            }

            if (!isOwnerDrawSucceed)
            {
                using (new GUIViewportScope(trackContentRect))
                    DrawBackground(trackContentRect, track, visibleTime, state);

                if (m_InfiniteTrackDrawer != null)
                {
                    m_InfiniteTrackDrawer.DrawTrack(trackContentRect, track, visibleTime, state);
                }

                // draw after user customization so overlay text shows up
                using (new GUIViewportScope(trackContentRect))
                    m_ItemsDrawer.Draw(trackContentRect, state);
            }

            DrawTrackHeader(trackHeaderRect, state);

            if (hasInlineCurve)
            {
                var curvesHeaderRect = headerRect;
                curvesHeaderRect.yMin = trackHeaderRect.yMax;

                var curvesContentRect = contentRect;
                curvesContentRect.yMin = trackContentRect.yMax;

                DrawInlineCurves(curvesHeaderRect, curvesContentRect, state);
            }

            DrawTrackColorKind(headerRect);
            DrawTrackState(contentRect, contentRect, track);
        }
 protected TimelineItemGUI(IRowGUI parent)
 {
     this.parent = parent;
     m_Styles    = DirectorStyles.Instance;
 }
Example #13
0
        static void DrawClipBackground(Rect clipCenterSection, ClipBlends blends, bool selected)
        {
            var clipStyle = selected ? DirectorStyles.Instance.timelineClipSelected : DirectorStyles.Instance.timelineClip;

            var texture   = DirectorStyles.GetBackgroundImage(clipStyle);
            var lineColor = DirectorStyles.Instance.customSkin.colorClipBlendLines;

            // Center body
            GUI.Label(clipCenterSection, GUIContent.none, clipStyle);

            // Blend/Mix In
            if (blends.inKind != BlendKind.None)
            {
                var mixInRect = blends.inRect;

                if (blends.inKind == BlendKind.Ease)
                {
                    ClipRenderer.RenderTexture(mixInRect, texture, Styles.blendMixInBckg, Color.black);

                    if (!selected)
                    {
                        Graphics.DrawLineAA(2.5f, new Vector3(mixInRect.xMin, mixInRect.yMax - 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMin + 1f, 0), lineColor);
                    }
                }
                else
                {
                    var blendInColor = selected ? Color.black : DirectorStyles.Instance.customSkin.colorClipBlendYin;
                    ClipRenderer.RenderTexture(mixInRect, texture, Styles.blendEaseInBckg, blendInColor);

                    if (!selected)
                    {
                        Graphics.DrawLineAA(2.0f, new Vector3(mixInRect.xMin, mixInRect.yMin + 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMax - 1f, 0), lineColor);
                    }
                }

                Graphics.DrawLineAA(2.0f, mixInRect.max, new Vector2(mixInRect.xMax, mixInRect.yMin), lineColor);
            }

            // Blend/Mix Out
            if (blends.outKind != BlendKind.None)
            {
                var mixOutRect = blends.outRect;

                if (blends.outKind == BlendKind.Ease)
                {
                    ClipRenderer.RenderTexture(mixOutRect, texture, Styles.blendMixOutBckg, Color.black);

                    if (!selected)
                    {
                        Graphics.DrawLineAA(2.5f, new Vector3(mixOutRect.xMin, mixOutRect.yMin + 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMax - 1f, 0), lineColor);
                    }
                }
                else
                {
                    var blendOutColor = selected ? Color.black : DirectorStyles.Instance.customSkin.colorClipBlendYang;
                    ClipRenderer.RenderTexture(mixOutRect, texture, Styles.blendEaseOutBckg, blendOutColor);

                    if (!selected)
                    {
                        Graphics.DrawLineAA(2.0f, new Vector3(mixOutRect.xMin, mixOutRect.yMin + 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMax - 1f, 0), lineColor);
                    }
                }

                Graphics.DrawLineAA(2.0f, mixOutRect.min, new Vector2(mixOutRect.xMin, mixOutRect.yMax), lineColor);
            }
        }
Example #14
0
 public void Initialize()
 {
     this.m_DefaultSkinColors = DirectorStyles.CreateDefaultSkin();
     this.m_DarkSkinColors    = this.LoadColorSkin(DirectorStyles.s_DarkSkinPath);
     this.m_LightSkinColors   = this.LoadColorSkin(DirectorStyles.s_LightSkinPath);
 }