int BoolField(SerializedProperty sp, InspectorPlusVar v) { if (v.toggleStart) { EditorGUI.BeginProperty(new Rect(0.0f, 0.0f, 0.0f, 0.0f), new GUIContent(), sp); EditorGUI.BeginChangeCheck(); var newValue = EditorGUILayout.Toggle(dispName, sp.boolValue); if (EditorGUI.EndChangeCheck()) { sp.boolValue = newValue; } EditorGUI.EndProperty(); if (!sp.boolValue) { return(v.toggleSize); } } else { EditorGUILayout.PropertyField(sp, new GUIContent(dispName)); } return(0); }
void FloatField(SerializedProperty sp, InspectorPlusVar v) { if (v.limitType == InspectorPlusVar.LimitType.Min && !sp.hasMultipleDifferentValues) { sp.floatValue = Mathf.Max(v.min, sp.floatValue); } else if (v.limitType == InspectorPlusVar.LimitType.Max && !sp.hasMultipleDifferentValues) { sp.floatValue = Mathf.Min(v.max, sp.floatValue); } if (v.limitType == InspectorPlusVar.LimitType.Range) { if (!v.progressBar) { EditorGUILayout.Slider(sp, v.min, v.max); } else { if (!sp.hasMultipleDifferentValues) { sp.floatValue = Mathf.Clamp(sp.floatValue, v.min, v.max); ProgressBar((sp.floatValue - v.min) / v.max, dispName); } else { ProgressBar((sp.floatValue - v.min) / v.max, dispName); } } } else { EditorGUILayout.PropertyField(sp, new GUIContent(dispName)); } }
public override void OnInspectorGUI() { so.Update(); RefreshVars(); EditorGUIUtility.LookLikeControls(135.0f, 50.0f); for (int i = 0; i < properties.Length; i += 1) { InspectorPlusVar v = vars[i]; if (v.active && properties[i] != null) { SerializedProperty sp = properties [i]; string s = v.type; bool skip = false; name = v.name; dispName = v.dispName; GUI.enabled = v.canWrite; GUILayout.BeginHorizontal(); if (v.toggleLevel != 0) { GUILayout.Space(v.toggleLevel * 10.0f); } if (s == typeof(float).Name) { FloatField(sp, v); skip = true; } if (s == typeof(bool).Name) { i += BoolField(sp, v); skip = true; } if (!skip) { PropertyField(sp, name); } GUILayout.EndHorizontal(); GUI.enabled = true; if (v.hasTooltip) { Rect last = GUILayoutUtility.GetLastRect(); GUI.Label(last, new GUIContent("", v.tooltip)); GUIStyle style = new GUIStyle(); style.fixedWidth = 250.0f; style.wordWrap = true; Vector2 size = new GUIStyle().CalcSize(new GUIContent(GUI.tooltip)); tooltipRect = new Rect(Event.current.mousePosition.x + 4.0f, Event.current.mousePosition.y + 12.0f, 28.0f + size.x, 9.0f + size.y); if (tooltipRect.width > 250.0f) { float delt = (tooltipRect.width - 250.0f); tooltipRect.width -= delt; tooltipRect.height += size.y * Mathf.CeilToInt(delt / 250.0f); } } } } so.ApplyModifiedProperties(); if (!string.IsNullOrEmpty(GUI.tooltip)) { GUI.color = new Color(1.0f, 1.0f, 1.0f, 1.0f); GUI.Box(tooltipRect, new GUIContent()); EditorGUI.HelpBox(tooltipRect, GUI.tooltip, MessageType.Info); Repaint(); } GUI.tooltip = ""; //NOTE NOTE NOTE: WATERMARK HERE //You are free to remove this //START REMOVE HERE GUILayout.BeginHorizontal(); GUI.color = new Color(1.0f, 1.0f, 1.0f, 0.3f); GUILayout.FlexibleSpace(); GUILayout.Label("Created with"); GUI.color = new Color(1.0f, 1.0f, 1.0f, 0.6f); if (GUILayout.Button("Inspector++")) { Application.OpenURL("http://forum.unity3d.com/threads/136727-Inspector-Meh-to-WOW-inspectors"); } GUI.color = new Color(1.0f, 1.0f, 1.0f); GUILayout.EndHorizontal(); //END REMOVE HERE }