private void DrawExpanded(ReflectedProperty property, ResponseCurve curve) { DrawHeaderBox(property, false, curve); property["curve"].Value = EditorGUIX.ResponseCurveField(guiRect.GetFieldRect(7), curve); guiRect.GetFieldRect(); EditorGUIX.DrawProperties(guiRect.GetRect(), property, new[] { "curve" }); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label) { GUIRect guiRect = new GUIRect(); guiRect.SetRect(position); EditorGUIX.PropertyField(guiRect.GetFieldRect(), property[NameField]); EditorGUIX.PropertyField(guiRect.GetFieldRect(), property[ShipCategoryField]); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label = null) { guiRect.SetRect(position); Initialize(property); int index = -1; int newIndex; if (property.Value != null) { index = Array.IndexOf(subclasses, property.Type); } if (index != -1) { Rect rect = guiRect.GetFieldRect(); float width = EditorGUIUtility.labelWidth; Rect r1 = new Rect(rect) { width = width }; Rect r2 = new Rect(rect) { x = rect.x + width, width = rect.width - width }; property.IsExpanded = EditorGUI.Foldout(r1, property.IsExpanded, property.Label); newIndex = EditorGUI.Popup(r2, index + 1, subclassNames) - 1; } else { newIndex = EditorGUI.Popup(guiRect.GetFieldRect(), property.Label, index + 1, subclassNames) - 1; } if (index != newIndex) { property.SetValueAndCopyCompatibleProperties( newIndex == -1 ? null : EditorReflector.MakeInstance(subclasses[newIndex]) ); property.IsExpanded = newIndex != -1; } if (property.IsExpanded && newIndex != -1) { EditorGUI.indentLevel += 2; EditorGUIX.DrawProperties(guiRect.GetRect(), property); EditorGUI.indentLevel -= 2; } }
public static void TypePopup <T>(GUIRect guiRect, GUIContent label, ReflectedProperty property) { Rect rect = guiRect.GetFieldRect(); rect = EditorGUI.PrefixLabel(rect, label); TypePopup <T>(rect, property); }
public static Type TypePopup <T>(GUIRect guiRect, GUIContent label, Type currentType) { Rect rect = guiRect.GetFieldRect(); rect = EditorGUI.PrefixLabel(rect, label); return(TypePopup <T>(rect, currentType)); }
public static bool Foldout(GUIRect rect, ReflectedProperty property, GUIContent content = null) { bool isExpanded = EditorGUI.Foldout(rect.GetFieldRect(), property.IsExpanded, content ?? property.GUIContent); property.IsExpanded = isExpanded; return(isExpanded); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label) { position = EditorGUI.IndentedRect(position); GUIRect guiRect = new GUIRect(position); string goalName = property.Type.Name.Replace("Goal", ""); goalName = $"[{ObjectNames.NicifyVariableName(goalName)}]"; GUIContent content = EditorGUIX.TempLabel(goalName); Rect rect = guiRect.GetFieldRect(); rect.width *= 0.25f; EditorGUIX.Foldout(rect, property, content); rect.x += rect.width; rect.width = rect.width * 3f; EditorGUIX.PropertyField(rect, property[NameField], GUIContent.none); if (property.IsExpanded) { EditorGUIX.DrawProperties(guiRect, property, SkipList); ReorderableListGUI.ListFieldAbsolute(EditorGUI.IndentedRect(guiRect.GetRect()), adapter); } }
public static ResponseCurve ResponseCurveField(Rect position, ResponseCurve curve) { int controlID = GUIUtility.GetControlID(FocusType.Passive); ResponseCurveFieldState state = (ResponseCurveFieldState)GUIUtility.GetStateObject( typeof(ResponseCurveFieldState), controlID); Rect left = new Rect(position); left.width *= 0.5f; Rect right = new Rect(position); right.x += left.width; right.width -= left.width; if (Event.current.type == EventType.Repaint) { curve.DrawGraph(state.texture, right.width, right.height); } EditorGUI.DrawPreviewTexture(right, state.texture); float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 80f; s_guiRect.SetRect(left); curve.curveType = (ResponseCurveType)EditorGUI.EnumPopup(s_guiRect.GetFieldRect(), "Curve Type", curve.curveType); curve.slope = EditorGUI.FloatField(s_guiRect.GetFieldRect(), "Slope", curve.slope); curve.exp = EditorGUI.FloatField(s_guiRect.GetFieldRect(), "Exp", curve.exp); curve.vShift = EditorGUI.FloatField(s_guiRect.GetFieldRect(), "V Shift", curve.vShift); curve.hShift = EditorGUI.FloatField(s_guiRect.GetFieldRect(), "H Shift", curve.hShift); curve.threshold = EditorGUI.FloatField(s_guiRect.GetFieldRect(), "Threshold", curve.threshold); Rect lineRect = s_guiRect.GetFieldRect(); Rect toggleRect = new Rect(lineRect) { width = EditorGUIUtility.labelWidth + 16f }; Rect selectRect = new Rect(lineRect) { x = lineRect.x + toggleRect.width, width = lineRect.width - toggleRect.width }; curve.invert = EditorGUI.Toggle(toggleRect, "Invert", curve.invert); int idx = EditorGUI.Popup(selectRect, 0, PresetCurveNames); curve = ApplyResponseCurvePreset(PresetCurveNames[idx], curve); EditorGUIUtility.labelWidth = oldWidth; return(curve); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label) { guiRect.SetRect(position); float oldLabelWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 100; EditorGUIX.PropertyField(guiRect.GetFieldRect(), property[NameField]); EditorGUIUtility.labelWidth = oldLabelWidth; EditorGUIX.PropertyField(guiRect, property[GoalsField]); }
public static void TypePopup <T>(GUIRect guiRect, ReflectedProperty property) { Type currentType = (Type)property.Value; property.Value = TypePopup <T>(guiRect.GetFieldRect(), currentType); }
public static Type ConstructableTypePopup <T>(GUIRect guiRect, Type currentType) { return(ConstructableTypePopup <T>(guiRect.GetFieldRect(), currentType)); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label = null) { guiRect.SetRect(position); if (style == null) { style = new GUIStyle(GUI.skin.box); } if (graphTexture == null) { graphTexture = new Texture2D(1, 1, TextureFormat.RGBA32, true); } curve = (ResponseCurve)property.Value ?? new ResponseCurve(); if (property.IsExpanded) { EditorGUIX.Foldout(guiRect, property); } if (!property.IsExpanded) { DrawGraph(64, 32); GUIContent content = EditorGUIX.TempLabel(curve.ShortDisplayString); content.image = graphTexture; style.alignment = TextAnchor.MiddleLeft; GUI.Box(guiRect.GetFieldRect(2), content, style); content.image = null; if (Event.current.type == EventType.MouseDown) { if (position.Contains(Event.current.mousePosition)) { property.IsExpanded = true; Event.current.Use(); } } return; } GUIRect[] splits = guiRect.SplitHorizontal(0.5f); GUIRect left = splits[0]; GUIRect right = splits[1]; DrawGraph(right.GetRect().width, right.GetRect().height); GUIContent graphContent = EditorGUIX.TempLabel(string.Empty); graphContent.image = graphTexture; GUI.Box(right.GetRect(), graphContent, style); graphContent.image = null; float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 100; EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("curveType")); EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("slope")); EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("exp")); EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("vShift")); EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("hShift")); EditorGUIX.PropertyField(left.GetFieldRect(), property.FindProperty("threshold")); Rect lineRect = left.GetFieldRect(); Rect toggleRect = new Rect(lineRect) { width = EditorGUIUtility.labelWidth + 16f }; Rect selectRect = new Rect(lineRect) { x = lineRect.x + toggleRect.width, width = lineRect.width - toggleRect.width }; EditorGUIX.PropertyField(toggleRect, property.FindProperty("invert")); int idx = EditorGUI.Popup(selectRect, 0, presetCurveNames); property.Value = GetPreset(presetCurveNames[idx], curve); EditorGUIUtility.labelWidth = oldWidth; property.ApplyChanges(); }
public override void OnGUI(Rect position, ReflectedProperty property, GUIContent label) { guiRect.SetRect(position); EditorGUIX.PropertyField(guiRect.GetFieldRect(), property["name"]); EditorGUIX.DrawProperties(guiRect.GetFieldRect(8), property, new [] { "name" }); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { if (graphTexture == null) { graphTexture = new Texture2D(1, 1, TextureFormat.RGBA32, true); } curve = SerializedPropertyUtil.GetTargetObjectOfProperty(property) as ResponseCurve ?? new ResponseCurve(); GUIRect rect = new GUIRect(position); isCurveShown = curve.__editorOnlyFoldout__ = EditorGUI.Foldout(rect.GetFieldRect(), curve.__editorOnlyFoldout__, label.text); GUIStyle style = new GUIStyle(GUI.skin.box); if (!isCurveShown) { DrawGraph(64, 32); GUIContent content = new GUIContent(); content.text = curve.DisplayString; content.image = graphTexture; style.alignment = TextAnchor.MiddleLeft; GUI.Box(rect.GetFieldRect(2), content, style); return; } GUIRect[] splits = rect.SplitHorizontal(0.5f); GUIRect left = splits[0]; GUIRect right = splits[1]; DrawGraph(right.GetRect().width, right.GetRect().height); GUIContent graphContent = new GUIContent(); graphContent.image = graphTexture; GUI.Box(right.GetRect(), graphContent, style); float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 100; DrawerUtil.PushIndentLevel(1); EditorGUI.BeginChangeCheck(); { EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("curveType")); EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("slope")); EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("exp")); EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("vShift")); EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("hShift")); EditorGUI.PropertyField(left.GetFieldRect(), property.FindPropertyRelative("threshold")); GUIRect lineRect = new GUIRect(left.GetFieldRect()); GUIRect[] lineRectParts = lineRect.SplitHorizontal(0.5f); EditorGUI.PropertyField(lineRectParts[0].GetRect(), property.FindPropertyRelative("invert")); if (GUI.Button(lineRectParts[1].GetRect(), "Reset Curve")) { property.FindPropertyRelative("curveType").intValue = (int)ResponseCurveType.Polynomial; property.FindPropertyRelative("slope").floatValue = 1f; property.FindPropertyRelative("exp").floatValue = 1f; property.FindPropertyRelative("vShift").floatValue = 0f; property.FindPropertyRelative("hShift").floatValue = 0f; property.FindPropertyRelative("threshold").floatValue = 0f; property.FindPropertyRelative("invert").boolValue = false; } } DrawerUtil.PopIndentLevel(); EditorGUIUtility.labelWidth = oldWidth; if (EditorGUI.EndChangeCheck()) { property.serializedObject.ApplyModifiedProperties(); } }