/// <summary>
        /// Draws the property.
        /// </summary>
        protected override void DrawPropertyLayout(GUIContent label)
        {
            var entry = this.ValueEntry;

            if (Event.current.type == EventType.Layout)
            {
                this.drawAsReference = entry.ValueState == PropertyValueState.Reference;
            }

            if (this.drawAsReference)
            {
                var targetProp = entry.Property.Tree.GetPropertyAtPath(entry.TargetReferencePath);

                if (targetProp == null)
                {
                    GUILayout.Label("Reference to " + entry.TargetReferencePath + ". But no property was found at path, which is a problem.");
                    return;
                }

                var isInReference = targetProp.Context.GetGlobal("is_in_reference", false);

                bool drawReferenceBox = true;

                if (!isInReference.Value)
                {
                    drawReferenceBox = !this.hideReferenceBox;
                }

                if (drawReferenceBox)
                {
                    SirenixEditorGUI.BeginToolbarBox();
                    SirenixEditorGUI.BeginToolbarBoxHeader();
                    Rect valueRect;
                    this.isToggled.Value = SirenixEditorGUI.Foldout(this.isToggled.Value, label, out valueRect);
                    GUI.Label(valueRect, "Reference to " + targetProp.Path, SirenixGUIStyles.LeftAlignedGreyMiniLabel);
                    SirenixEditorGUI.EndToolbarBoxHeader();
                    if (SirenixEditorGUI.BeginFadeGroup(entry.Context.Get(this, "k", 0), this.isToggled.Value))
                    {
                        bool previous = isInReference.Value;
                        isInReference.Value = true;
                        targetProp.Draw(label);
                        isInReference.Value = previous;
                    }
                    SirenixEditorGUI.EndFadeGroup();
                    SirenixEditorGUI.EndToolbarBox();
                }
                else
                {
                    bool previous = isInReference.Value;
                    isInReference.Value = true;
                    targetProp.Draw(label);
                    isInReference.Value = previous;
                }
            }
            else
            {
                this.CallNextDrawer(label);
            }
        }
        protected override void DrawPropertyLayout(GUIContent label)
        {
            var property = this.Property;
            var name     = property.ChildResolver != null?property.ChildResolver.GetType().GetNiceName() : "None";

            SirenixEditorGUI.BeginToolbarBox(name);
            this.CallNextDrawer(label);
            SirenixEditorGUI.EndToolbarBox();
        }
        /// <summary>
        /// Draws the property.
        /// </summary>
        protected override void DrawPropertyLayout(GUIContent label)
        {
            var property = this.Property;

            var chain   = property.GetActiveDrawerChain();
            var drawers = chain.BakedDrawerArray;

            SirenixEditorGUI.BeginToolbarBox("Drawers");

            for (int i = 0; i < drawers.Length; i++)
            {
                bool highlight = drawers[i].GetType().Assembly != typeof(ShowDrawerChainAttributeDrawer).Assembly;

                if (highlight)
                {
                    GUIHelper.PushColor(Color.green);
                }

                if (i > this.drawnDepth)
                {
                    GUIHelper.PushColor(new Color(1, 1, 1, 0.5f));
                }

                EditorGUILayout.LabelField(i + ": " + drawers[i].GetType().GetNiceName() + (drawers[i].SkipWhenDrawing ? " (skipped)" : ""));
                var rect = GUILayoutUtility.GetLastRect();

                if (i > this.drawnDepth)
                {
                    GUIHelper.PopColor();
                }

                GUI.Label(rect, DrawerUtilities.GetDrawerPriority(drawers[i].GetType()).ToString(), SirenixGUIStyles.RightAlignedGreyMiniLabel);

                if (highlight)
                {
                    GUIHelper.PopColor();
                }
            }
            SirenixEditorGUI.EndToolbarBox();

            this.CallNextDrawer(label);

            this.drawnDepth = chain.CurrentIndex;
        }
        // Token: 0x06000A26 RID: 2598 RVA: 0x00031018 File Offset: 0x0002F218
        public void Draw(bool drawCodeExample)
        {
            if (TrickOverViewPreview.exampleGroupStyle == null)
            {
                TrickOverViewPreview.exampleGroupStyle = new GUIStyle(GUIStyle.none)
                {
                    padding = new RectOffset(1, 1, 10, 0)
                };
            }
            if (TrickOverViewPreview.previewStyle == null)
            {
                TrickOverViewPreview.previewStyle = new GUIStyle(GUIStyle.none)
                {
                    padding = new RectOffset(0, 0, 0, 0)
                };
            }
            GUILayout.BeginVertical(TrickOverViewPreview.exampleGroupStyle, new GUILayoutOption[0]);
            GUILayout.Label("Preview:", SirenixGUIStyles.BoldTitle, new GUILayoutOption[0]);
            GUILayout.BeginVertical(TrickOverViewPreview.previewStyle, GUILayoutOptions.ExpandWidth(true));
            Rect rect = GUIHelper.GetCurrentLayoutRect().Expand(4f, 0f);

            SirenixEditorGUI.DrawSolidRect(rect, EditorGUIUtility.isProSkin ? TrickOverViewPreview.previewBackgroundColorDark : TrickOverViewPreview.previewBackgroundColorLight, true);
            SirenixEditorGUI.DrawBorders(rect, 1, true);
            GUILayout.Space(8f);

            m_DrawCallbaclAction.Invoke(rect);
            this.tree = (this.tree ?? PropertyTree.Create(this.ExampleInfo.PreviewObject));
            this.tree.Draw(false);

            GUILayout.Space(8f);
            GUILayout.EndVertical();
            if (drawCodeExample && this.ExampleInfo.Code != null)
            {
                GUILayout.Space(12f);
                GUILayout.Label("Code", SirenixGUIStyles.BoldTitle, new GUILayoutOption[0]);
                Rect rect2 = SirenixEditorGUI.BeginToolbarBox(new GUILayoutOption[0]);
                SirenixEditorGUI.DrawSolidRect(rect2.HorizontalPadding(1f), SyntaxHighlighter.BackgroundColor, true);
                SirenixEditorGUI.BeginToolbarBoxHeader(22f);
                if (SirenixEditorGUI.ToolbarButton(this.showRaw ? "Highlighted" : "Raw", false))
                {
                    this.showRaw = !this.showRaw;
                }
                GUILayout.FlexibleSpace();
                if (SirenixEditorGUI.ToolbarButton("Copy", false))
                {
                    Clipboard.Copy <string>(this.ExampleInfo.Code);
                }
                SirenixEditorGUI.EndToolbarBoxHeader();
                if (TrickOverViewPreview.codeTextStyle == null)
                {
                    TrickOverViewPreview.codeTextStyle = new GUIStyle(SirenixGUIStyles.MultiLineLabel);
                    TrickOverViewPreview.codeTextStyle.normal.textColor  = SyntaxHighlighter.TextColor;
                    TrickOverViewPreview.codeTextStyle.active.textColor  = SyntaxHighlighter.TextColor;
                    TrickOverViewPreview.codeTextStyle.focused.textColor = SyntaxHighlighter.TextColor;
                    TrickOverViewPreview.codeTextStyle.wordWrap          = false;
                }
                GUIContent content = GUIHelper.TempContent(this.showRaw ? this.ExampleInfo.Code.TrimEnd(new char[]
                {
                    '\n',
                    '\r'
                }) : this.highlightedCode);
                Vector2 vector = TrickOverViewPreview.codeTextStyle.CalcSize(content);
                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                GUILayout.Space(-3f);
                GUILayout.BeginVertical(new GUILayoutOption[0]);
                GUIHelper.PushEventType((Event.current.type == EventType.ScrollWheel) ? EventType.Used : Event.current.type);
                this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, true, false, GUI.skin.horizontalScrollbar, GUIStyle.none, new GUILayoutOption[]
                {
                    GUILayout.MinHeight(vector.y + 20f)
                });
                Rect rect3 = GUILayoutUtility.GetRect(vector.x + 50f, vector.y).AddXMin(4f).AddY(2f);
                if (this.showRaw)
                {
                    EditorGUI.SelectableLabel(rect3, this.ExampleInfo.Code, TrickOverViewPreview.codeTextStyle);
                    GUILayout.Space(-14f);
                }
                else
                {
                    GUI.Label(rect3, content, TrickOverViewPreview.codeTextStyle);
                }
                GUILayout.EndScrollView();
                GUIHelper.PopEventType();
                GUILayout.EndVertical();
                GUILayout.Space(-3f);
                GUILayout.EndHorizontal();
                GUILayout.Space(-3f);
                SirenixEditorGUI.EndToolbarBox();
            }
            GUILayout.EndVertical();
        }
        public void Draw(bool drawCodeExample)
        {
            if (exampleGroupStyle == null)
            {
                exampleGroupStyle = new GUIStyle(GUIStyle.none)
                {
                    padding = new RectOffset(1, 1, 10, 0)
                };
            }
            if (previewStyle == null)
            {
                previewStyle = new GUIStyle(GUIStyle.none)
                {
                    padding = new RectOffset(0, 0, 0, 0),
                };
            }

            GUILayout.BeginVertical(exampleGroupStyle);

            if (this.ExampleInfo.Description != null)
            {
                SirenixEditorGUI.BeginBox();
                GUILayout.BeginHorizontal();
                GUILayout.Space(23);
                GUILayout.Label(this.ExampleInfo.Description, SirenixGUIStyles.MultiLineLabel);

                var rect = GUILayoutUtility.GetLastRect();
                EditorIcons.X.Draw(rect.SubX(26).SetWidth(26).AlignCenterXY(20), EditorIcons.Info.Active);

                GUILayout.EndHorizontal();
                SirenixEditorGUI.EndBox();

                GUILayout.Space(12);
            }

            GUILayout.Label("Interactive Preview", SirenixGUIStyles.BoldTitle);
            GUILayout.BeginVertical(previewStyle, GUILayoutOptions.ExpandWidth(true));
            {
                Rect rect = GUIHelper.GetCurrentLayoutRect().Expand(4, 0);
                SirenixEditorGUI.DrawSolidRect(rect, EditorGUIUtility.isProSkin ? previewBackgroundColorDark : previewBackgroundColorLight);
                SirenixEditorGUI.DrawBorders(rect, 1);

                GUILayout.Space(8);
                this.tree = this.tree ?? PropertyTree.Create(this.ExampleInfo.PreviewObject);
                this.tree.Draw(false);
                GUILayout.Space(8);
            }
            GUILayout.EndVertical();

            if (drawCodeExample && this.ExampleInfo.Code != null)
            {
                GUILayout.Space(12);
                GUILayout.Label("Code", SirenixGUIStyles.BoldTitle);

                Rect rect = SirenixEditorGUI.BeginToolbarBox();
                SirenixEditorGUI.DrawSolidRect(rect.HorizontalPadding(1), SyntaxHighlighter.BackgroundColor);

                SirenixEditorGUI.BeginToolbarBoxHeader();
                {
                    if (SirenixEditorGUI.ToolbarButton(this.showRaw ? "Highlighted" : "Raw"))
                    {
                        this.showRaw = !this.showRaw;
                    }

                    GUILayout.FlexibleSpace();
                    if (SirenixEditorGUI.ToolbarButton("Copy"))
                    {
                        Clipboard.Copy(this.ExampleInfo.Code);
                    }
                }
                SirenixEditorGUI.EndToolbarBoxHeader();

                if (codeTextStyle == null)
                {
                    codeTextStyle = new GUIStyle(SirenixGUIStyles.MultiLineLabel);
                    codeTextStyle.normal.textColor  = SyntaxHighlighter.TextColor;
                    codeTextStyle.active.textColor  = SyntaxHighlighter.TextColor;
                    codeTextStyle.focused.textColor = SyntaxHighlighter.TextColor;
                    codeTextStyle.wordWrap          = false;
                }

                GUIContent codeContent = GUIHelper.TempContent(this.showRaw ? this.ExampleInfo.Code.TrimEnd('\n', '\r') : this.highlightedCode);
                Vector2    size        = codeTextStyle.CalcSize(codeContent);

                GUILayout.BeginHorizontal();
                GUILayout.Space(-3);
                GUILayout.BeginVertical();
                {
                    GUIHelper.PushEventType(Event.current.type == EventType.ScrollWheel ? EventType.Used : Event.current.type); // Prevent the code horizontal scroll view from eating the scroll event.

                    this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, true, false, GUI.skin.horizontalScrollbar, GUIStyle.none, GUILayout.MinHeight(size.y + 20));
                    var codeRect = GUILayoutUtility.GetRect(size.x + 50, size.y).AddXMin(4).AddY(2);

                    if (this.showRaw)
                    {
                        EditorGUI.SelectableLabel(codeRect, this.ExampleInfo.Code, codeTextStyle);
                        GUILayout.Space(-14);
                    }
                    else
                    {
                        GUI.Label(codeRect, codeContent, codeTextStyle);
                    }

                    GUILayout.EndScrollView();

                    GUIHelper.PopEventType();
                }
                GUILayout.EndVertical();
                GUILayout.Space(-3);
                GUILayout.EndHorizontal();
                GUILayout.Space(-3);

                SirenixEditorGUI.EndToolbarBox();
            }
            GUILayout.EndVertical();
        }
Ejemplo n.º 6
0
        public void Draw(bool drawCodeExample)
        {
            if (this.ExampleInfo.Description != null)
            {
                SirenixEditorGUI.BeginBox();
                GUILayout.Label(this.ExampleInfo.Description, SirenixGUIStyles.MultiLineLabel);
                SirenixEditorGUI.EndBox();
            }

            SirenixEditorGUI.BeginBox();
            {
                this.tree = this.tree ?? PropertyTree.Create(this.ExampleInfo.PreviewObject);
                this.tree.Draw(false);
            }
            SirenixEditorGUI.EndBox();

            if (drawCodeExample && this.ExampleInfo.Code != null)
            {
                GUILayout.Space(15);

                Rect rect = SirenixEditorGUI.BeginToolbarBox();
                SirenixEditorGUI.DrawSolidRect(rect.HorizontalPadding(1), SyntaxHighlighter.BackgroundColor);

                SirenixEditorGUI.BeginToolbarBoxHeader();
                {
                    if (SirenixEditorGUI.ToolbarButton(this.showRaw ? "Highlighted" : "Raw"))
                    {
                        this.showRaw = !this.showRaw;
                    }

                    GUILayout.FlexibleSpace();
                    if (SirenixEditorGUI.ToolbarButton("Copy"))
                    {
                        Clipboard.Copy(this.ExampleInfo.Code);
                    }
                }
                SirenixEditorGUI.EndToolbarBoxHeader();

                if (codeStyle == null)
                {
                    codeStyle = new GUIStyle(SirenixGUIStyles.MultiLineLabel);
                    codeStyle.normal.textColor  = SyntaxHighlighter.TextColor;
                    codeStyle.active.textColor  = SyntaxHighlighter.TextColor;
                    codeStyle.focused.textColor = SyntaxHighlighter.TextColor;
                    codeStyle.wordWrap          = false;
                }

                GUIContent codeContent = GUIHelper.TempContent(this.showRaw ? this.ExampleInfo.Code : this.highlightedCode);
                Vector2    size        = codeStyle.CalcSize(codeContent);

                this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, true, false, GUI.skin.horizontalScrollbar, GUIStyle.none, GUILayoutOptions.MinHeight(size.y + 20));
                var codeRect = GUILayoutUtility.GetRect(size.x + 50, size.y);

                if (this.showRaw)
                {
                    EditorGUI.SelectableLabel(codeRect, this.ExampleInfo.Code, codeStyle);
                }
                else
                {
                    GUI.Label(codeRect, codeContent, codeStyle);
                }

                GUILayout.EndScrollView();

                SirenixEditorGUI.EndToolbarBox();
            }
        }