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); }
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(); }
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; } } }
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); } }
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(); }