private void BuildInsertNewGeneratorMenu(GenericMenu menu, string path, List <GeneratorTreeItem> items, int insertionIndex)
        {
            foreach (var item in items)
            {
                if (item is GeneratorTreeCategory)
                {
                    var category = (GeneratorTreeCategory)item;
                    BuildInsertNewGeneratorMenu(menu, path + category.content.text + '/', category.items, insertionIndex);
                }
                else if (item is GeneratorTreeGenerator)
                {
                    var generator = (GeneratorTreeGenerator)item;
                    GUIExtensions.PushEnable(generator.onSelect != null);

                    GenericMenu.MenuFunction callback = null;
                    if (generator.onSelect != null)
                    {
                        callback = () =>
                        {
                            generator.onSelect(_executive, insertionIndex);
                        };
                    }
                    menu.AddItem(new GUIContent(path + generator.content.text, generator.content.image, generator.content.tooltip), false, callback);
                }
            }
        }
    private static void DirectoryButton(SerializedProperty sP, DirectoryAttribute dA, string path)
    {
        if (!GUIExtensions.ButtonOverPreviousControl())
        {
            return;
        }

        string newDirectory = EditorUtility.OpenFolderPanel("Choose Directory", path, path.Equals("Assets") ? string.Empty : path);

        if (string.IsNullOrEmpty(newDirectory))
        {
            return;
        }
        if (dA.unityDirectory)
        {
            if (!newDirectory.StartsWith(Application.dataPath))
            {
                Debug.LogWarning("Directory must be local to project, eg. Assets...");
                return;
            }

            sP.stringValue = "Assets" + newDirectory.Substring(Application.dataPath.Length);
        }
        else
        {
            sP.stringValue = newDirectory;
        }
    }
Exemple #3
0
        static public Vector2 XYControl(Rect rect, Vector2 value, FloatRange x_range, FloatRange y_range)
        {
            GUIControlHandle handle = GUIExtensions.GetControlHandle(FocusType.Passive);

            Vector2 mouse_point = handle.GetEvent().mousePosition;

            FloatRange interface_x_range = rect.GetHorizontalRange();
            FloatRange interface_y_range = rect.GetVerticalRange().GetFlipped();

            Vector2 point = new Vector2(
                value.x.ConvertFromRangeToRange(x_range, interface_x_range),
                value.y.ConvertFromRangeToRange(y_range, interface_y_range)
                );

            GUIExtensions.DrawPoint(
                point,
                4.0f,
                Color.red
                );

            if (rect.Contains(mouse_point))
            {
                if (handle.GetEventType().IsMouseDownish())
                {
                    return(new Vector2(
                               mouse_point.x.ConvertFromRangeToRange(interface_x_range, x_range),
                               mouse_point.y.ConvertFromRangeToRange(interface_y_range, y_range)
                               ));
                }
            }

            return(value);
        }
Exemple #4
0
    private void DrawSprite()
    {
        _innerFrameWidth  = _sprite.rect.width * _scale;
        _innerFrameHeight = _sprite.rect.height * _scale;

        _outerFrameWidth  = _innerFrameWidth + 2 * _frameMargin;
        _outerFrameHeight = _innerFrameHeight + 2 * _frameMargin;

        var rect = EditorGUILayout.GetControlRect(true, _outerFrameHeight);

        _x = rect.min.x;
        _y = rect.min.y;

        //draw the rect that fills the scroll:
        GUIExtensions.DrawRect(new Rect(_x, _y, _outerFrameWidth, _outerFrameHeight), _borderColor, ref _rectTexture);

        //draw the background colour of each frame:
        _x += _frameMargin;
        _y += _frameMargin;
        GUIExtensions.DrawRect(new Rect(_x, _y, _innerFrameWidth, _innerFrameHeight), _frameColor, ref _rectTexture);

        //draw the sprite
        Texture texture       = _sprite.texture;
        Rect    textureRect   = _sprite.textureRect;
        var     textureCoords = new Rect(textureRect.x / texture.width, textureRect.y / texture.height,
                                         textureRect.width / texture.width, textureRect.height / texture.height);
        var positionRect = new Rect(_x, _y, _innerFrameWidth, _innerFrameHeight);

        GUI.DrawTextureWithTexCoords(positionRect, texture, textureCoords);
    }
Exemple #5
0
        static public bool DropZoneUnityObjects(Rect rect, out IList <UnityEngine.Object> dragging)
        {
            GUIControlHandle handle = GUIExtensions.GetControlHandle(FocusType.Passive);

            if (rect.Contains(handle.GetEvent().mousePosition))
            {
                dragging = DragAndDrop
                           .objectReferences
                           .ToList();

                if (dragging.IsNotEmpty())
                {
                    switch (handle.GetEventType())
                    {
                    case EventType.DragUpdated:
                        DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
                        break;

                    case EventType.DragPerform:
                        DragAndDrop.AcceptDrag();
                        handle.UseEvent();
                        return(true);
                    }
                }
            }

            dragging = Empty.IList <UnityEngine.Object>();
            return(false);
        }
Exemple #6
0
        public Texture2D ToTexture()
        {
            var Result = GUIExtensions.CreateEmptyTexture();

            Result.LoadImage(Data);
            return(Result);
        }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            EditorGUI.BeginProperty(position, label, property);

            Vector2 size = new Vector2(24f, EditorGUIUtility.singleLineHeight);

            foldout = EditorGUI.Foldout(new Rect(position.position, new Vector2(position.size.x, EditorGUIUtility.singleLineHeight)), foldout, label);

            var indentedRect = EditorGUI.IndentedRect(position);

            if (foldout)
            {
                for (int i = 0; i < propertyNames.Length; i++)
                {
                    var labelPosition = new Vector2(indentedRect.x + i * 28, indentedRect.y + EditorGUIUtility.singleLineHeight);
                    var labelRect     = new Rect(labelPosition, size);
                    GUI.Label(labelRect, propertyNames[i]);

                    var serializedProperty = property.FindPropertyRelative(propertyNames[i]);

                    var fieldPosition = new Vector2(indentedRect.x + i * 28, indentedRect.y + EditorGUIUtility.singleLineHeight * 2);
                    var fieldRect     = new Rect(fieldPosition, size);
                    serializedProperty.intValue = GUIExtensions.IntField(fieldRect, serializedProperty.intValue);
                }
            }

            EditorGUI.indentLevel--;

            EditorGUI.EndProperty();
        }
        /// <summary>
        /// Draws the scene node
        /// </summary>
        /// <param name="nodeOffset">The offset caused by panning</param>
        public override void Draw(Vector2 nodeOffset)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }

            InitializeNode();

            Rect nodeRect = GetRenderRect(nodeOffset);

            Color color = Color.white;

            GUIContent display = sceneName;

            if (SceneId == SceneManagerController.ANY_SCENE_ID)
            {
                color = SceneManagerResources.AnySceneColor;
            }

            if (IsEntryScene)
            {
                display = new GUIContent(entryText + ":" + Environment.NewLine + sceneName.text);
                color   = SceneManagerResources.EntrySceneColor;
            }

            if (IsActiveScene)
            {
                color = SceneManagerResources.ActiveSceneColor;
            }

            GUIExtensions.BeginColouring(color);
            nodeStyle.Draw(nodeRect, display, true, IsSelected(), true, false);
            GUIExtensions.EndColouring();
        }
Exemple #9
0
        protected override void DrawElementInternal(int draw_id, Rect view)
        {
            Rect rect = GetElementRect();

            if (vectorizer != null)
            {
                Sprite sprite = vectorizer.GetTestSprite();

                if (sprite != null)
                {
                    Rect info_rect;

                    rect.SplitByYTopOffset(LINE_HEIGHT, out rect, out info_rect);

                    float line_thickness = vectorizer.GetTestLineThickness();
                    float point_size     = vectorizer.GetTestPointSize();

                    Vector2 divisor = sprite.GetTextureSize() / rect.size.GetMinComponent();
                    List <List <Vector2> > paths = vectorizer.VectorizeSprite(sprite)
                                                   .Convert(l => l.Convert(p => p.GetWithFlippedY().GetComponentDivide(divisor) + rect.center).ToList())
                                                   .ToList();

                    GUIExtensions.DrawSprite(rect, sprite);
                    GUI.Label(info_rect, "Number Vertexs: " + paths.Convert(p => p.Count).Sum());

                    GUI.color = Color.white;
                    paths.Process(p => GUIExtensions.DrawLoop(p, line_thickness, point_size));
                }
            }
        }
Exemple #10
0
        protected override void DrawElementInternal(int draw_id, Rect view)
        {
            GUIExtensions.DrawOutlinedRect(GetElementRect(), Color.gray);
            GUI.Label(GetElementRect(), label);

            is_dropped = EditorGUIExtensions.DropZone(GetElementRect(), type, out dragged);
        }
Exemple #11
0
        protected override LabeledSpritePoint DrawValueInternal(Rect rect, LabeledSpritePoint value)
        {
            string  label    = value.GetLabel();
            Vector2 position = value.GetPosition();

            EditProperty_Single_Value sprite_property = GetProperty().GetTarget().ForcePropertyValue("target_asset");

            Rect label_rect;
            Rect position_rect;

            rect.SplitByXLeftPercent(0.4f, out rect, out position_rect);
            rect.SplitByYBottomOffset(LINE_HEIGHT, out label_rect, out rect);

            label = EditorGUIExtensions.TextField(label_rect, label);

            if (sprite_property != null)
            {
                Sprite sprite;

                if (sprite_property.TryGetContentValues <Sprite>(out sprite))
                {
                    position_rect = GUIExtensions.DrawSprite(position_rect, sprite);

                    position = EditorGUIExtensions.XYControl(
                        position_rect,
                        position,
                        new FloatRange(0.0f, 1.0f),
                        new FloatRange(0.0f, 1.0f)
                        );
                }
            }

            return(new LabeledSpritePoint(label, position));
        }
    private void Start()
    {
        killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform);
        startColorButton  = killButtonManager.renderer.color;
        startColorText    = killButtonManager.TimerText.Color;
        killButtonManager.gameObject.SetActive(true);
        killButtonManager.renderer.enabled = true;
        Texture2D tex      = GUIExtensions.CreateEmptyTexture();
        Assembly  assembly = Assembly.GetExecutingAssembly();
        Stream    myStream = assembly.GetManifestResourceStream(ResourceName);

        byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(myStream);
        ImageConversion.LoadImage(tex, buttonTexture, false);
        killButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex);
        PassiveButton button = killButtonManager.GetComponent <PassiveButton>();

        button.OnClick.RemoveAllListeners();
        button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener);
        void listener()
        {
            if (Timer < 0f && canUse)
            {
                killButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);
                if (hasEffectDuration)
                {
                    isEffectActive = true;
                    Timer          = EffectDuration;
                    killButtonManager.TimerText.Color = new Color(0, 255, 0);
                }
                OnClick();
            }
        }
    }
        /// <summary>
        /// Handles drawing the selection rect
        /// </summary>
        public override void AfterNodeRender()
        {
            if (!IsActivated)
            {
                return;
            }

            GUIExtensions.ColouredBox(selectionRect, SelectionColor, null);
        }
Exemple #14
0
        protected override void DrawElementInternal(int draw_id, Rect view)
        {
            Rect rect = GetElementRect();

            GUIExtensions.DrawRect(
                rect.GetHeightedAnchorCenter(1.0f).GetShrunk(rect.width * 0.125f, 0.0f),
                Color.gray
                );
        }
        /// <summary>
        /// Call in HudManager.Start
        /// </summary>
        private CooldownButton(Assembly asm, Action onClick, float cooldown, string embeddedResourcePath /*, float pixelsPerUnit*/, Vector2 positionOffset, ButtonCategory category, HudManager hudManager, bool hasEffectDuration, float effectDuration, Action onEffectEnd)
        {
            OnEffectEnd    = onEffectEnd;
            PositionOffset = positionOffset;
            EffectDuration = effectDuration;
            Category       = category;
            //PixelsPerUnit = pixelsPerUnit;
            MaxTimer = cooldown;
            Timer    = MaxTimer;

            Buttons.Add(this);

            string embeddedResourceFullPath = asm.GetManifestResourceNames().FirstOrDefault(resourceName => resourceName.EndsWith(embeddedResourcePath, StringComparison.Ordinal));

            if (string.IsNullOrEmpty(embeddedResourceFullPath))
            {
                throw new ArgumentNullException(nameof(embeddedResourcePath), $"The embedded resource \"{embeddedResourcePath}\" was not found in assembly \"{asm.GetName().Name}\".");
            }

            Stream resourceStream = asm.GetManifestResourceStream(embeddedResourceFullPath);

            KillButtonManager = Object.Instantiate(hudManager.KillButton, hudManager.transform);

            //StartColorButton = killButtonManager.renderer.color;
            StartColorText = KillButtonManager.TimerText.Color;

            KillButtonManager.gameObject.SetActive(true);
            KillButtonManager.renderer.enabled = true;

            Texture2D tex = GUIExtensions.CreateEmptyTexture();

            byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(resourceStream);
            ImageConversion.LoadImage(tex, buttonTexture, false);
            KillButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex);

            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener(new Action(() =>
            {
                if (Timer < 0f && CanUse)
                {
                    KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f);

                    if (hasEffectDuration)
                    {
                        IsEffectActive = true;

                        Timer = EffectDuration;

                        KillButtonManager.TimerText.Color = new Color(0, 255, 0);
                    }

                    onClick();
                }
            }));
        }
        private void RenderImportSection()
        {
            Rect sceneImportSection = EditorGUILayout.BeginVertical();

            EditorGUILayout.Space();

            if (Event.current.type == EventType.Repaint)
            {
                GUIExtensions.ColouredBox(sceneImportSection, Color.gray, GUIContent.none);
            }

            EditorGUI.indentLevel++;

            RenderTypeSelection();

            EditorGUI.BeginChangeCheck();

            populatorEditor.DrawExcludingScript(serializedSceneManager.ScenePopulator);

            if (EditorGUI.EndChangeCheck())
            {
                serializedSceneManager.ScenePopulator.ApplyModifiedProperties();
            }

            EditorGUI.indentLevel--;

            EditorGUILayout.Space();

            if (GUILayout.Button("Import Scenes"))
            {
                ImportScenes();
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();

            if (GUILayout.Button(clearScenesContent))
            {
                ClearExistingBuildScenes();
            }

            if (GUILayout.Button("Send To Build",
                                 GUILayout.MinWidth(GUI.skin.button.CalcSize(clearScenesContent).x)))
            {
                SendToBuildSettings();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();

            EditorGUILayout.EndVertical();
        }
Exemple #17
0
        private void OnGUI()
        {
            // Input layout
            m_JSONObject = GUIExtensions.TextArea(m_JSONObject, new Rect(0.05f, 0.01f, 0.9f, 0.44f));

            // Action layout
            GUIExtensions.Buttons(m_GUIButtons, OnGUIButtonPressed, new Rect(0.05f, 0.45f, 0.9f, 0.1f));

            // Result layout
            GUIExtensions.TextArea(m_result, new Rect(0.05f, 0.55f, 0.9f, 0.44f));
        }
 private void Windows()
 {
     for (int i = 0; i < windows.Count; i++)
     {
         int index = i;
         if (windows[i].enabled)
         {
             windows[i].rect = GUIExtensions.Window(windows[i].index, windows[i].name, windows[i].rect, () => windows[index].action?.Invoke(), () => windows[index].enabled = false);
         }
     }
 }
Exemple #19
0
        protected override Sprite DrawValueInternal(Rect rect, Sprite value)
        {
            Rect field_rect;

            rect.SplitByXRightOffset(64.0f, out field_rect, out rect);

            value = EditorGUIExtensions.ObjectField <Sprite>(field_rect, value);
            GUIExtensions.DrawSprite(rect, value);

            return(value);
        }
Exemple #20
0
    private void DrawPixel(float x, float y, Color color, bool invertY = true)
    {
        bool intergerPosition = (x == Math.Floor(x) && y == Math.Floor(y));

        x = _x + x * _scale;
        if (invertY)
        {
            y = _sprite.rect.height - 1 - y;
        }
        y = _y + y * _scale;
        GUIExtensions.DrawRect(new Rect(x, y, _scale, _scale), intergerPosition ? color : _misplacedPivotColor, ref _rectTexture);
    }
Exemple #21
0
        private void OnGUI()
        {
            // Input layout
            m_input   = GUIExtensions.TextArea(m_input, new Rect(0.05f, 0.01f, 0.9f, 0.39f));
            m_keyPath = GUIExtensions.TextArea(m_keyPath, new Rect(0.05f, 0.4f, 0.9f, 0.05f));

            // Action layout
            GUIExtensions.Buttons(m_GUIButtons, OnGUIButtonPressed, new Rect(0.05f, 0.45f, 0.9f, 0.25f));

            // Result layout
            GUIExtensions.TextArea(m_result, new Rect(0.05f, 0.7f, 0.9f, 0.29f));
        }
Exemple #22
0
        /// <summary>
        /// Handles the resize functionality of the split for a horizontal window
        /// </summary>
        private void ResizeVerticalSplit()
        {
            float height = GetConstrainedValue();

            Rect resizeHandleRect = new Rect(availableRect.x,
                                             height, availableRect.width, 2f);

            GUIExtensions.DrawHorizontalLine(resizeHandleRect, Color.gray);

            EditorGUIUtility.AddCursorRect(resizeHandleRect, MouseCursor.ResizeVertical);

            CheckIsResizing(resizeHandleRect, SplitDirection.Vertical);
        }
        private void OnDrawBackground(Rect rect, int index, bool isActive, bool isSelected)
        {
            if (isSelected)
            {
                GUIExtensions.ColouredBox(rect,
                    GUI.skin.settings.selectionColor, ZPCommonResources.SimpleSolidBackground);
                return;
            }

            GUIExtensions.ColouredBox(rect, 
                ZPCommonResources.GetElementBgColor(index, EditorGUIUtility.isProSkin), 
                ZPCommonResources.SimpleSolidBackground);
        }
Exemple #24
0
        private static Sprite CreateSprite(string name)
        {
            var assembly    = Assembly.GetExecutingAssembly();
            var tex         = GUIExtensions.CreateEmptyTexture();
            var imageStream = assembly.GetManifestResourceStream(name);
            var img         = imageStream.ReadFully();

            tex.LoadImage(img);
            tex.DontDestroy();
            var sprite = tex.CreateSprite();

            sprite.DontDestroy();
            return(sprite);
        }
Exemple #25
0
 public static Sprite loadSpriteFromResources(string path, float pixelsPerUnit)
 {
     try {
         Texture2D texture     = GUIExtensions.CreateEmptyTexture();
         Assembly  assembly    = Assembly.GetExecutingAssembly();
         Stream    stream      = assembly.GetManifestResourceStream(path);
         byte[]    byteTexture = Reactor.Extensions.Extensions.ReadFully(stream);
         ImageConversion.LoadImage(texture, byteTexture, false);
         return(Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f), pixelsPerUnit));
     } catch {
         System.Console.WriteLine("Error loading sprite from path: " + path);
     }
     return(null);
 }
Exemple #26
0
        protected override OctoSubTile DrawValueInternal(Rect rect, OctoSubTile value)
        {
            Sprite   sprite = value.GetSprite();
            OctoMask mask   = value.GetMask();
            float    weight = value.GetWeight();

            Rect left_rect;
            Rect right_rect;

            Rect weight_rect;

            Vector2 filled_dimension = Vector2.one.GetFilledDimension(rect.GetSize());

            rect.SplitByXLeftOffset(filled_dimension.x, out left_rect, out right_rect);
            right_rect.SplitByYBottomOffset(LINE_HEIGHT, out weight_rect, out right_rect);

            weight = EditorGUI.FloatField(weight_rect, "Weight", weight);

            left_rect
            .ProcessGrid(3, 3, delegate(int x, int y, Rect sub_rect) {
                if (x == 1 && y == 1)
                {
                    sprite = EditorGUIExtensions.SpriteDropZone(sub_rect, sprite);
                }
                else
                {
                    int dx = x - 1;
                    int dy = y - 1;

                    bool has = mask.HasBitAt(dx, dy);

                    if (GUIExtensions.ColorButton(sub_rect, has.ConvertBool(Color.black, Color.gray)))
                    {
                        if (has)
                        {
                            mask = mask.GetWithoutBitAt(dx, dy);
                        }
                        else
                        {
                            mask = mask.GetWithBitAt(dx, dy);
                        }
                    }
                }
            });

            return(new OctoSubTile(mask, sprite, weight));
        }
Exemple #27
0
        public static Sprite CreateSprite(string name, bool hat = false)
        {
            var pixelsPerUnit = hat ? 225f : 100f;
            var pivot         = hat ? new Vector2(0.5f, 0.8f) : new Vector2(0.5f, 0.5f);

            var assembly    = Assembly.GetExecutingAssembly();
            var tex         = GUIExtensions.CreateEmptyTexture();
            var imageStream = assembly.GetManifestResourceStream(name);
            var img         = imageStream.ReadFully();

            LoadImage(tex, img, true);
            tex.DontDestroy();
            var sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, (float)tex.width, (float)tex.height), pivot, pixelsPerUnit);

            sprite.DontDestroy();
            return(sprite);
        }
Exemple #28
0
        public override void Draw(Vector2 nodeOffset)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }

            GUIStyle nodeStyle = GetNodeStyle();

            InitializeGUIContent(nodeStyle);

            Rect renderRect = GetNodeRect(nodeOffset);

            Color drawColor = IsSelected() ? SelectedColor : NormalColor;

            GUIExtensions.ColouredBox(renderRect, drawColor, nodeTextContent, nodeStyle);
        }
        /// <summary>
        /// Creates an instance of <see cref="KillButtonManager"/> when one does not exist.
        /// </summary>
        private void CreateButton()
        {
            if (KillButtonManager != null || !HudManager.Instance?.KillButton || ImageData == null)
            {
                return;
            }

            KillButtonManager = Object.Instantiate(HudManager.Instance.KillButton, HudManager.Instance.transform);

            KillButtonManager.gameObject.SetActive(HudVisible && Visible);
            KillButtonManager.renderer.enabled = HudVisible && Visible;

            Texture2D tex = GUIExtensions.CreateEmptyTexture();

            ImageConversion.LoadImage(tex, ImageData, false);

            KillButtonManager.renderer.sprite = ButtonSprite = tex.CreateSprite();

            PassiveButton button = KillButtonManager.GetComponent <PassiveButton>();

            button.OnClick.RemoveAllListeners();
            button.OnClick.AddListener(new Action(() =>
            {
                if (!IsUsable)
                {
                    return;
                }

                CancelEventArgs args = new CancelEventArgs();
                OnClick?.SafeInvoke(this, args, nameof(OnClick));

                if (args.Cancel)
                {
                    return;              // Click was cancelled.
                }
                if (HasEffect)
                {
                    StartEffect();

                    return;
                }

                ApplyCooldown();
            }));
        }
Exemple #30
0
        /// <summary>
        /// Handles drawing the background before applying the element on top
        /// </summary>
        /// <param name="rect">The rectangle to render the variable in</param>
        /// <param name="index">The index of the property</param>
        /// <param name="isActive">True if the element is active, false if not</param>
        /// <param name="isSelected">True if the element is selected, false if not</param>
        private void DrawBackground(Rect rect, int index, bool isActive, bool isSelected)
        {
            int finalIndex = index;

            if (HasFilterString())
            {
                filterIndices.TryGetValue(index, out finalIndex);
            }

            Color color = ZPCommonResources.GetElementBgColor(finalIndex, EditorGUIUtility.isProSkin);

            if (isSelected)
            {
                color = GUI.skin.settings.selectionColor;
            }

            GUIExtensions.ColouredBox(rect, color, ZPCommonResources.SimpleSolidBackground);
        }