private void ExampleWindow(int id)
        {
            // bugfix: Rect must be specified
            GUI.DragWindow(new Rect(0, 0, windowPos.size.x, 20));

            if (CustomGUILayout.Button("This is a test"))
            {
                //Debug.Log("Clicked!");
            }

            GUILayout.BeginScrollView(default);
    private void ShowManaCost()
    {
        GUILayout.Space(10);
        EditorGUI.indentLevel = 0;

        EditorGUILayout.LabelField("Mana cost properties", EditorStyles.boldLabel);

        GUILayout.Space(5);

        if (manaValues == null)
        {
            manaValues = new ManaValueDictionary();
        }

        CustomGUILayout.ManaValueDictionaryField("Mana cost", manaValues);
    }
Exemple #3
0
 private void OnGUI()
 {
     //Version
     EditorGUILayout.LabelField(versionLabel);
     //Updater
     if (UpdateCheck.Enabled)
     {
         EditorGUILayout.LabelField(latestVersionLabel);
         VersionCheckLabelField();
     }
     //Developer info
     if (!string.IsNullOrEmpty(developerLinkTitle) &&
         !string.IsNullOrEmpty(developerLinkURL))
     {
         CustomGUILayout.URLButton(developerLinkTitle, developerLinkURL, buttonStyle);
     }
 }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        serializedObject.FindProperty("cardName").stringValue = EditorGUILayout.TextField("Card name", serializedObject.FindProperty("cardName").stringValue);

        GUILayout.BeginHorizontal();
        GUILayout.Label("Card Image", GUILayout.Width(labelWidth));
        serializedObject.FindProperty("cardImage").objectReferenceValue = (Sprite)EditorGUILayout.ObjectField
                                                                              (serializedObject.FindProperty("cardImage").objectReferenceValue,
                                                                              typeof(Sprite),
                                                                              allowSceneObjects: false);
        GUILayout.EndHorizontal();

        GUILayout.Label("Card Types");
        GUILayout.BeginHorizontal();
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(0).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(0).stringValue);
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(1).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(1).stringValue);
        GUILayout.Label("-");
        serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(2).stringValue = EditorGUILayout.TextField(serializedObject.FindProperty("cardTypes").GetArrayElementAtIndex(2).stringValue);
        GUILayout.EndHorizontal();

        CardCostType costType = (CardCostType)serializedObject.FindProperty("costType").objectReferenceValue;

        if (costType != null)
        {
            if (costType is CardCost_Mana manaContainer)
            {
                ManaValueDictionary manaCost = manaContainer.values;

                CustomGUILayout.ManaValueDictionaryField("Mana cost", manaCost);
            }
        }

        if (serializedObject.FindProperty("isAttackerDefender").boolValue)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("Atk/Def");
            serializedObject.FindProperty("atk").intValue = EditorGUILayout.IntField(serializedObject.FindProperty("atk").intValue);
            serializedObject.FindProperty("def").intValue = EditorGUILayout.IntField(serializedObject.FindProperty("def").intValue);
            GUILayout.EndHorizontal();
        }

        serializedObject.ApplyModifiedProperties();
    }
Exemple #5
0
        private void GetMessageBox(Message msg)
        {
            GUILayout.BeginHorizontal();

            var helpBoxRect = EditorGUILayout.BeginHorizontal();

            if (Event.current.type == EventType.MouseUp && helpBoxRect.Contains(Event.current.mousePosition) && msg.issue != null)
            {
                EditorGUIUtility.PingObject(msg.issue.target);
            }
            EditorGUILayout.HelpBox(msg.message, msg.type, true);
            EditorGUILayout.EndHorizontal();
            if (msg.issue != null && !string.IsNullOrEmpty(msg.issue.solutionURL))
            {
                CustomGUILayout.URLButton("Help", msg.issue.solutionURL, GUILayout.Width(50));
            }
            else
            {
                GUILayout.Space(55);
            }
            GUILayout.EndHorizontal();
        }
        public override void OnInspectorGUI()
        {
            InteractionObject myTarget = (InteractionObject)target;

            GUILayout.Label("Interaction Object Setup", EditorStyles.largeLabel);

            myTarget.objectParent = (Transform)CustomGUILayout.ObjectField <Transform>("Object Parent:", myTarget.objectParent, true);

            myTarget.interactionObject = (GameObject)CustomGUILayout.ObjectField <GameObject>("Object:", myTarget.interactionObject, true);


            if (myTarget.interactionObject)
            {
                GUILayout.Label("Object Name", EditorStyles.boldLabel);

                myTarget.objectName = EditorGUILayout.TextField(myTarget.objectName);

                GUILayout.Label("Object Hand Positions", EditorStyles.boldLabel);

                myTarget.rHandPosition = EditorGUILayout.ObjectField("Right Hand Position:", myTarget.rHandPosition, typeof(Transform), true) as Transform;
                myTarget.lHandPosition = EditorGUILayout.ObjectField("Left Hand Position:", myTarget.lHandPosition, typeof(Transform), true) as Transform;
                myTarget.dropPosition  = EditorGUILayout.ObjectField("Drop Position:", myTarget.dropPosition, typeof(Transform), true) as Transform;

                GUILayout.Label("Object Targets", EditorStyles.boldLabel);

                myTarget.rHandTarget = EditorGUILayout.ObjectField("Right Hand Target:", myTarget.rHandTarget, typeof(Transform), true) as Transform;
                myTarget.lHandTarget = EditorGUILayout.ObjectField("Left Hand Position:", myTarget.lHandTarget, typeof(Transform), true) as Transform;

                GUILayout.Label("Object Sound FX", EditorStyles.boldLabel);

                myTarget.pickUpSound    = EditorGUILayout.ObjectField("PickUp Sound:", myTarget.pickUpSound, typeof(AudioClip), false) as AudioClip;
                myTarget.dropSound      = EditorGUILayout.ObjectField("Drop Sound:", myTarget.dropSound, typeof(AudioClip), false) as AudioClip;
                myTarget.interactSound  = EditorGUILayout.ObjectField("Interact Sound:", myTarget.interactSound, typeof(AudioClip), false) as AudioClip;
                myTarget.inventorySound = EditorGUILayout.ObjectField("Inventory Sound:", myTarget.inventorySound, typeof(AudioClip), false) as AudioClip;
            }

            GUILayout.Label("Object Inventory Reference", EditorStyles.boldLabel);

            myTarget.isInventoryItem = EditorGUILayout.Toggle("Is also inventory item?", myTarget.isInventoryItem);

            if (myTarget.isInventoryItem)
            {
                // Create a string List of the field's names (for the PopUp box)
                List <string> labelList = new List <string>();

                int i = 0;
                if (AC.KickStarter.inventoryManager.items.Count > 0)
                {
                    foreach (InvItem _item in AC.KickStarter.inventoryManager.items)
                    {
                        labelList.Add(_item.label);

                        // If an item has been removed, make sure selected variable is still valid
                        if (_item.id == myTarget.invID)
                        {
                            myTarget.invNumber = i;
                        }

                        i++;
                    }

                    if (myTarget.invNumber == -1)
                    {
                        // Wasn't found (item was possibly deleted), so revert to zero
                        ACDebug.LogWarning("Previously chosen item no longer exists!");

                        myTarget.invNumber = 0;
                        myTarget.invID     = 0;
                    }

                    myTarget.invNumber = EditorGUILayout.Popup("Inventory item:", myTarget.invNumber, labelList.ToArray());
                    myTarget.invID     = AC.KickStarter.inventoryManager.items[myTarget.invNumber].id;
                }
            }
        }
Exemple #7
0
 private void OnGUI()
 {
     EditorGUIUtility.labelWidth = 80;
     EditorGUILayout.LabelField("Template Loader");
     popupIndex = EditorGUILayout.Popup("Template:", popupIndex, templateOptions);
     if (UnityEngine.GUI.changed)
     {
         templateProperty  = TemplateLoader.GetTemplateProperty(templateFolders[popupIndex]);
         replaceStringList = CreateReplaceStringList(templateProperty.replaceList);
         licenceScroll     = new Vector2();
         messages          = new List <Message>();
     }
     if (templateProperty != null)
     {
         //Template Property
         EditorGUILayout.LabelField("", UnityEngine.GUI.skin.horizontalSlider);
         EditorGUILayout.LabelField("Description:", templateProperty.description);
         EditorGUILayout.LabelField("Developer:", templateProperty.developer);
         if (!string.IsNullOrEmpty(templateProperty.developerUrl))
         {
             CustomGUILayout.URLButton("Open developer website", templateProperty.developerUrl);
         }
         if (templateProperty.lisenseFile)
         {
             licenceScroll = EditorGUILayout.BeginScrollView(licenceScroll);
             GUILayout.TextArea(templateProperty.lisenseFile.text);
             EditorGUILayout.EndScrollView();
         }
         //Replace List
         EditorGUILayout.LabelField("", UnityEngine.GUI.skin.horizontalSlider);
         EditorGUI.BeginDisabledGroup(ProductSettings.HideMenuItem);
         {
             if (templateProperty.replaceList != null)
             {
                 foreach (var replace in templateProperty.replaceList)
                 {
                     replaceStringList[replace.ID] = EditorGUILayout.TextField(replace.label, replaceStringList[replace.ID]);
                 }
             }
         }
         EditorGUI.EndDisabledGroup();
         EditorGUI.BeginDisabledGroup(!CheckAllReplaceFieldFilled(replaceStringList));
         if (GUILayout.Button("Load"))
         {
             if (UnityEditor.EditorSettings.serializationMode == SerializationMode.ForceBinary &&
                 !EditorUtility.DisplayDialog("Template Loader",
                                              LocalizedMessage.Get("TemplateLoaderWindow.ForceBinaryDetected"),
                                              LocalizedMessage.Get("TemplateLoaderWindow.ForceBinaryDetected.Continue"),
                                              LocalizedMessage.Get("TemplateLoaderWindow.ForceBinaryDetected.Cancel")))
             {
                 return;
             }
             messages = new List <Message>();
             var folderName   = templateFolders[popupIndex];
             var templateName = templateOptions[popupIndex];
             if (TemplateLoader.Load(folderName, replaceStringList))
             {
                 messages.Add(new Message(LocalizedMessage.Get("TemplateLoaderWindow.Succeeded", templateName), MessageType.Info));
             }
             else
             {
                 messages.Add(new Message(LocalizedMessage.Get("TemplateLoaderWindow.Failed", templateName), MessageType.Error));
             }
         }
         EditorGUI.EndDisabledGroup();
     }
     foreach (var msg in messages)
     {
         EditorGUILayout.HelpBox(msg.message, msg.type, true);
     }
 }
Exemple #8
0
    public override void OnInspectorGUI()
    {
        GUIStyle buttonStyle = new GUIStyle(GUI.skin.button);

        buttonStyle.margin      = new RectOffset(5, 5, 5, 5);
        buttonStyle.padding     = new RectOffset(2, 2, 2, 2);
        buttonStyle.fixedHeight = BUTTON_HEIGHT;
        buttonStyle.fixedWidth  = 32;

        GUIStyle middleButtonStyle = new GUIStyle(GUI.skin.button);

        middleButtonStyle.margin      = new RectOffset(5, 5, 5, 5);
        middleButtonStyle.padding     = new RectOffset(2, 2, 2, 2);
        middleButtonStyle.fixedHeight = BUTTON_HEIGHT;
        middleButtonStyle.fixedWidth  = 200;

        GUIContent drawButtonContent = new GUIContent();

        drawButtonContent.image = pencilIcon;
        drawButtonContent.text  = "Draw LOA";

        GUIContent editButtonContent = new GUIContent();

        editButtonContent.image = pencilEditIcon;
        editButtonContent.text  = "Edit LOA";

        GUIContent detailButtonContent = new GUIContent();

        detailButtonContent.image = pencilDetailIcon;
        detailButtonContent.text  = "Detail LOA";

        GUIContent clearButtonContent = new GUIContent();

        clearButtonContent.image = eraserIcon;
        clearButtonContent.text  = "Clear LOA";

        GUIContent clearDetailButtonContent = new GUIContent();

        clearDetailButtonContent.image = eraserIcon;
        clearDetailButtonContent.text  = "Clear Detail LOAs";

        GUIContent rotationButtonContent = new GUIContent();

        rotationButtonContent.image = rotationIcon;
        rotationButtonContent.text  = "Add Rotation Point";

        GUIContent rotationButtonDelete = new GUIContent();

        rotationButtonDelete.image = deleteIcon;
        rotationButtonDelete.text  = "Delete Rotation Point";

        GUIContent rotationButtonClear = new GUIContent();

        rotationButtonClear.image = clearIcon;
        rotationButtonClear.text  = "Clear Rotation Points";

        GUIContent hideLOAButtonContent = new GUIContent();

        hideLOAButtonContent.image = eyeIcon;
        hideLOAButtonContent.text  = "Toggle LOA";

        GUIContent hideDrawingPlaneButtonContent = new GUIContent();

        hideDrawingPlaneButtonContent.image = eyeIcon;
        hideDrawingPlaneButtonContent.text  = "Toggle Drawing Plane";

        GUIContent exportAnimationButtonContent = new GUIContent();

        exportAnimationButtonContent.image = exportIcon;
        exportAnimationButtonContent.text  = "Export to file";

        GUILayout.BeginVertical();
        GUILayout.Label(" Animation Preview Control ");
        float frame = GUILayout.HorizontalSlider(generator.currentFrame, 0, (float)generator.GetNumFrames());

        if (frame != generator.currentFrame)
        {
            generator.currentFrame = (int)frame;
            generator.AnimateFrame();
        }
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(generator.animationPlaying ? pauseIcon : playIcon, buttonStyle))
        {
            generator.ToggleAnimation();
        }
        if (GUILayout.Button(stopIcon, buttonStyle))
        {
            generator.StopAnimation();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(drawButtonContent, middleButtonStyle))
        {
            //generator.StopAnimation();
            generator.drawingLOA            = true;
            generator.detailingLOA          = false;
            generator.addingRotationPoint   = false;
            generator.editingLOA            = false;
            generator.deletingRotationPoint = false;
            blockingMouseInputForDrawing    = true;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(editButtonContent, middleButtonStyle))
        {
            //edit line
            generator.editingLOA            = true;
            generator.detailingLOA          = false;
            generator.drawingLOA            = false;
            generator.addingRotationPoint   = false;
            generator.deletingRotationPoint = false;
            blockingMouseInputForDrawing    = true;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(detailButtonContent, middleButtonStyle))
        {
            //detail line
            generator.detailingLOA          = true;
            generator.editingLOA            = false;
            generator.drawingLOA            = false;
            generator.addingRotationPoint   = false;
            generator.deletingRotationPoint = false;
            blockingMouseInputForDrawing    = true;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(clearButtonContent, middleButtonStyle))
        {
            Undo.RecordObject(generator, "Clearing LOA");
            //generator.StopAnimation();
            generator.ClearPoints();
            generator.ClearRotationPoints();
            generator.ClearDetailPoints();
            SceneView.RepaintAll();
            EditorUtility.SetDirty(generator);
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(clearDetailButtonContent, middleButtonStyle))
        {
            Undo.RecordObject(generator, "Clearing Detail LOAs");
            generator.ClearDetailPoints();
            SceneView.RepaintAll();
            EditorUtility.SetDirty(generator);
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Center On Drawing Plane", middleButtonStyle))
        {
            SceneView  scenView = SceneView.lastActiveSceneView;
            Quaternion rotation = Quaternion.LookRotation(generator.editorPlane.normal, generator.planeVector1 * -1);
            scenView.LookAt(generator.planePoint1.position, rotation);
            scenView.Repaint();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(rotationButtonContent, middleButtonStyle))
        {
            generator.addingRotationPoint   = true;
            generator.deletingRotationPoint = false;
            generator.editingLOA            = false;
            generator.drawingLOA            = false;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(rotationButtonDelete, middleButtonStyle))
        {
            generator.deletingRotationPoint = true;
            generator.addingRotationPoint   = false;
            generator.editingLOA            = false;
            generator.drawingLOA            = false;
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(rotationButtonClear, middleButtonStyle))
        {
            Undo.RecordObject(generator, "Clearing Rotation Points");
            generator.ClearRotationPoints();
            SceneView.RepaintAll();
            EditorUtility.SetDirty(generator);
            generator.StopAnimation();
            generator.GenerateAnimation();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(hideLOAButtonContent, middleButtonStyle))
        {
            generator.renderLOA = !generator.renderLOA;
            SceneView.RepaintAll();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(hideDrawingPlaneButtonContent, middleButtonStyle))
        {
            generator.drawPlane = !generator.drawPlane;
            SceneView.RepaintAll();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(exportAnimationButtonContent, middleButtonStyle))
        {
            generator.Export();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();



        GUILayout.BeginHorizontal();
        GUILayout.Label("Frames of Animation");
        generator.framesOfAnimation = (int)CustomGUILayout.FloatField((float)generator.framesOfAnimation);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Max Frame Rate");
        generator.timeBetweenFrames = 1 / CustomGUILayout.FloatField(generator.GetFrameRate());
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Rotation Point and Animation Layer Range");
        generator.mutatorStrength = (int)CustomGUILayout.FloatField((float)generator.mutatorStrength);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        bool previousSmoothCurve = generator.smoothCurve;

        generator.smoothCurve = EditorGUILayout.Toggle("Smooth Curve", generator.smoothCurve);
        if (previousSmoothCurve != generator.smoothCurve)
        {
            SceneView.RepaintAll();
            generator.StopAnimation();
            generator.GenerateAnimation();
        }
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        generator.model = EditorGUILayout.ObjectField("Model", generator.model, typeof(Transform), true) as Transform;
        GUILayout.EndHorizontal();

        GUILayout.Label("Editor Plane");

        generator.planePoint1 = EditorGUILayout.ObjectField("Plane Point 1", generator.planePoint1, typeof(Transform), true) as Transform;
        generator.planePoint2 = EditorGUILayout.ObjectField("Plane Point 2", generator.planePoint2, typeof(Transform), true) as Transform;
        generator.planePoint3 = EditorGUILayout.ObjectField("Plane Point 3", generator.planePoint3, typeof(Transform), true) as Transform;

        GUILayout.EndVertical();
    }
        private void ToolbarWindow(int id)
        {
            string text = "None";
            Rect   secondaryTileRect = new Rect(tileMap.toolbarWindowPosition.width - 5 - tileMap.toolbarWindowPosition.width * 0.4f, 25 + tileMap.toolbarWindowPosition.width * 0.4f, tileMap.toolbarWindowPosition.width * 0.4f, tileMap.toolbarWindowPosition.width * 0.4f);

            tileMap.secondaryTilePickerToggle = GUI.Toggle(secondaryTileRect, tileMap.secondaryTilePickerToggle, GUIContent.none, "Label");

            GUI.DrawTexture(secondaryTileRect, new Texture2D(16, 16));
            GUI.contentColor = Color.black;
            if (tileMap.secondaryTile)
            {
                GUI.DrawTexture(secondaryTileRect, tileMap.secondaryTile.GetTexture(tileMap));
                GUI.contentColor = Color.white;
                text             = tileMap.secondaryTile.Name;
            }
            GUI.Label(secondaryTileRect, text, CustomStyles.centerWhiteMiniLabel);

            Rect primaryTileRect = new Rect(5, 25, tileMap.toolbarWindowPosition.width * 0.6f, tileMap.toolbarWindowPosition.width * 0.6f);

            tileMap.primaryTilePickerToggle = GUI.Toggle(primaryTileRect, tileMap.primaryTilePickerToggle, GUIContent.none, "Label");

            text = "None";

            GUI.DrawTexture(primaryTileRect, new Texture2D(16, 16));
            GUI.contentColor = Color.black;
            if (tileMap.primaryTile)
            {
                GUI.DrawTexture(primaryTileRect, tileMap.primaryTile.GetTexture(tileMap));
                GUI.contentColor = Color.white;
                text             = tileMap.primaryTile.Name;
            }
            GUI.Label(primaryTileRect, text, CustomStyles.centerWhiteBoldLabel);
            GUI.contentColor = Color.white;

            float tileHeight = 10 + primaryTileRect.height + 0.5f * secondaryTileRect.height;

            GUILayout.Space(tileHeight);

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Swap [X]"))
            {
                Swap <ScriptableTile> (ref tileMap.primaryTile, ref tileMap.secondaryTile);
            }
            GUI.color = new Color(1, 0.5f, 0.5f);
            if (GUILayout.Button("Clear"))
            {
                tileMap.primaryTile   = null;
                tileMap.secondaryTile = null;
            }
            GUI.color = Color.white;
            GUILayout.EndHorizontal();

            CustomGUILayout.Splitter();

            GUILayout.Label("Tools", CustomStyles.leftBoldLabel);
            EditorGUILayout.HelpBox("[RMB] to toggle last tool", MessageType.Info, true);

            for (int i = 0; i < tileMap.scriptableToolCache.Count; i++)
            {
                bool selected = (i == tileMap.selectedScriptableTool);
                EditorGUI.BeginChangeCheck();
                string labelName = tileMap.scriptableToolCache [i].Shortcut != KeyCode.None ?
                                   string.Format("{1} [{0}]", tileMap.scriptableToolCache [i].Shortcut.ToString(), tileMap.scriptableToolCache [i].Name) :
                                   tileMap.scriptableToolCache [i].Name;

                GUIContent content = new GUIContent(labelName, tileMap.scriptableToolCache [i].Description);
                GUILayout.Toggle(selected, content, EditorStyles.radioButton, GUILayout.Width(100));
                if (EditorGUI.EndChangeCheck())
                {
                    tileMap.lastSelectedScriptableTool = tileMap.selectedScriptableTool;

                    tileMap.selectedScriptableTool = i;

                    if (selected)
                    {
                        tileMap.selectedScriptableTool = -1;
                    }
                }
            }
            if (tileMap.selectedScriptableTool == -1)
            {
                EditorGUILayout.HelpBox("No Tool selected, select one from above.", MessageType.Warning, true);
            }
            if (tileMap.selectedScriptableTool >= 0 && tileMap.selectedScriptableTool < tileMap.scriptableToolCache.Count)
            {
                const BindingFlags flags  = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static;
                FieldInfo []       fields = tileMap.scriptableToolCache [tileMap.selectedScriptableTool].GetType().GetFields(flags);

                if (fields.Length > 0)
                {
                    GUILayout.Label("Settings", CustomStyles.leftBoldLabel, GUILayout.Width(100));
                    for (int i = 0; i < fields.Length; i++)
                    {
                        FieldInfo field     = fields [i];
                        Type      type      = field.FieldType;
                        string    fieldName = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(field.Name);

                        GUILayout.BeginHorizontal(GUILayout.Width(100));
                        GUILayout.Label(fieldName, EditorStyles.miniLabel);
                        if (type == typeof(bool))
                        {
                            bool v  = (bool)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            bool nv = EditorGUILayout.Toggle(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(float))
                        {
                            float v  = (float)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            float nv = EditorGUILayout.FloatField(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(int))
                        {
                            int v  = (int)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            int nv = EditorGUILayout.IntField(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Enum))
                        {
                            int v  = (int)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            int nv = EditorGUILayout.IntField(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Vector2))
                        {
                            Vector2 v  = (Vector2)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            Vector2 nv = Vector2.zero;
                            nv.x = EditorGUILayout.FloatField(v.x);
                            nv.y = EditorGUILayout.FloatField(v.y);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Vector3))
                        {
                            Vector3 v  = (Vector3)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            Vector3 nv = Vector3.zero;
                            nv.x = EditorGUILayout.FloatField(v.x);
                            nv.y = EditorGUILayout.FloatField(v.y);
                            nv.z = EditorGUILayout.FloatField(v.z);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Color))
                        {
                            Color v  = (Color)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            Color nv = EditorGUILayout.ColorField(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(AnimationCurve))
                        {
                            AnimationCurve v  = (AnimationCurve)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            AnimationCurve nv = EditorGUILayout.CurveField(v);
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(GameObject))
                        {
                            GameObject v  = (GameObject)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            GameObject nv = EditorGUILayout.ObjectField(v, typeof(GameObject), false) as GameObject;
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Texture2D))
                        {
                            Texture2D v  = (Texture2D)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            Texture2D nv = EditorGUILayout.ObjectField(v, typeof(Texture2D), false) as Texture2D;
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(Sprite))
                        {
                            Sprite v  = (Sprite)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            Sprite nv = EditorGUILayout.ObjectField(v, typeof(Sprite), false) as Sprite;
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type == typeof(UnityEngine.Object))
                        {
                            UnityEngine.Object v  = (UnityEngine.Object)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            UnityEngine.Object nv = EditorGUILayout.ObjectField(v, typeof(UnityEngine.Object), false) as UnityEngine.Object;
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else if (type.IsEnum)
                        {
                            int v  = (int)field.GetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool]);
                            int nv = EditorGUILayout.Popup(v, Enum.GetNames(type));
                            field.SetValue(tileMap.scriptableToolCache [tileMap.selectedScriptableTool], nv);
                        }
                        else
                        {
                            Debug.LogErrorFormat("Exposing public variable type '{0}' is currently not supported by Tooles \n Feel free to add support for it though!", type.Name);
                        }
                        GUILayout.EndHorizontal();
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("Tool has no public variables to edit.", MessageType.Info, true);
                }
            }


            GUI.DragWindow();
        }