public static void ShowField(BGCurvePointI point, BGCurvePointField field, Action <string, AnimationCurve> animationCurveCallback = null) { var name = point.Curve.IndexOf(field) + ") " + field.FieldName; switch (field.Type) { case BGCurvePointField.TypeEnum.Bool: BGEditorUtility.BoolField(name, point.GetField <bool>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Int: BGEditorUtility.IntField(name, point.GetField <int>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Float: BGEditorUtility.FloatField(name, point.GetField <float>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Vector3: BGEditorUtility.Vector3Field(name, null, point.GetField <Vector3>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Bounds: BGEditorUtility.BoundsField(name, point.GetField <Bounds>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Color: BGEditorUtility.ColorField(name, point.GetField <Color>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.String: BGEditorUtility.TextField(name, point.GetField <string>(field.FieldName), v => point.SetField(field.FieldName, v), false); break; case BGCurvePointField.TypeEnum.AnimationCurve: BGEditorUtility.Horizontal(() => { BGEditorUtility.AnimationCurveField(name, point.GetField <AnimationCurve>(field.FieldName), v => point.SetField(field.FieldName, v)); if (animationCurveCallback != null && GUILayout.Button("Set", GUILayout.Width(40))) { animationCurveCallback(field.FieldName, point.GetField <AnimationCurve>(field.FieldName)); } }); break; case BGCurvePointField.TypeEnum.Quaternion: BGEditorUtility.QuaternionField(name, point.GetField <Quaternion>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.GameObject: BGEditorUtility.GameObjectField(name, point.GetField <GameObject>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.Component: BGEditorUtility.ComponentChoosableField(name, point.GetField <Component>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.BGCurve: BGEditorUtility.BGCurveField(name, point.GetField <BGCurve>(field.FieldName), v => point.SetField(field.FieldName, v)); break; case BGCurvePointField.TypeEnum.BGCurvePointComponent: BGEditorUtility.Horizontal(() => { BGEditorUtility.BGCurvePointComponentField(name, point.GetField <BGCurvePointComponent>(field.FieldName), v => point.SetField(field.FieldName, v)); var currentPoint = point.GetField <BGCurvePointComponent>(field.FieldName); if (currentPoint == null || currentPoint.Curve.PointsCount < 2) { return; } var indexOfField = currentPoint.Curve.IndexOf(currentPoint); if (GUILayout.Button("" + indexOfField, GUILayout.Width(40))) { BGCurveChosePointWindow.Open(indexOfField, currentPoint.Curve, c => point.SetField(field.FieldName, c)); } }); break; case BGCurvePointField.TypeEnum.BGCurvePointGO: BGEditorUtility.BGCurvePointGOField(name, point.GetField <BGCurvePointGO>(field.FieldName), v => point.SetField(field.FieldName, v)); break; } }
private static void ShowSettings() { BGEditorUtility.SwapLabelWidth(300, () => { BGEditorUtility.Vertical(new GUIStyle("Box") { padding = new RectOffset(Padding, Padding, Padding, Padding) }, () => { EditorGUILayout.LabelField("BG Curve Editor Settings", new GUIStyle("Box") { fontSize = 22 }); if (GUILayout.Button(new GUIContent("Reset to defaults", "Reset all editor settings to their defaults.")) && BGEditorUtility.Confirm("Reset settings", "Reset All Editor settings to defaults? It does not affect curve's settings.", "Reset")) { BGCurveSettingsForEditor.Reset(); } //coordinates for points and controls BGEditorUtility.VerticalBox(() => { BGEditorUtility.PopupField(BGCurveSettingsForEditor.InspectorPointCoordinateSpace, "Point Coordinates", b => BGCurveSettingsForEditor.InspectorPointCoordinateSpace = (BGCurveSettingsForEditor.CoordinateSpaceEnum)b); EditorGUILayout.HelpBox("Coordinate Space for points (for Inspector's fields inder Points tab.)", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.PopupField(BGCurveSettingsForEditor.InspectorControlCoordinateSpace, "Point Controls Coordinates", b => BGCurveSettingsForEditor.InspectorControlCoordinateSpace = (BGCurveSettingsForEditor.CoordinateSpaceEnum)b); EditorGUILayout.HelpBox("Coordinate Space for points controls (for Inspector's fields inder Points tab.)", MessageType.Info); }); // disable fields BGEditorUtility.VerticalBox(() => { BGEditorUtility.ToggleField(BGCurveSettingsForEditor.DisableSceneViewPointMenu, "Disable SV Point Menu", b => BGCurveSettingsForEditor.DisableSceneViewPointMenu = b); EditorGUILayout.HelpBox("Disable point's menu, which is activated in Scene View by holding Ctrl over a point.", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.ToggleField(BGCurveSettingsForEditor.DisableSceneViewSelectionMenu, "Disable SV Selection Menu", b => BGCurveSettingsForEditor.DisableSceneViewSelectionMenu = b); EditorGUILayout.HelpBox("Disable selection's menu, which is activated in Scene View by holding Ctrl over a selection handles.", MessageType.Info); }); /* * BGEUtil.VerticalBox(() => * { * BGEUtil.ToggleField(BGCurveEditorSettings.DisableInspectorPointMenu, "Disable Inspector Points Menu", b => BGCurveEditorSettings.DisableInspectorPointMenu = b); * EditorGUILayout.HelpBox("Disable points menu, which is located under Points tab in Inspector.", MessageType.Info); * }); */ BGEditorUtility.VerticalBox(() => { BGEditorUtility.ToggleField(BGCurveSettingsForEditor.DisableRectangularSelection, "Disable Rectangular Selection", b => BGCurveSettingsForEditor.DisableRectangularSelection = b); EditorGUILayout.HelpBox("Disable rectangular selection in Scene View, which is activated by holding shift and mouse dragging.", MessageType.Info); }); // colors BGEditorUtility.VerticalBox(() => { BGEditorUtility.ColorField("Rectangular Selection Color", BGCurveSettingsForEditor.ColorForRectangularSelection, b => BGCurveSettingsForEditor.ColorForRectangularSelection = b); EditorGUILayout.HelpBox("Color for Rectangular Selection background", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.ColorField("Add and Snap 3D Handles Color", BGCurveSettingsForEditor.HandleColorForAddAndSnap3D, b => BGCurveSettingsForEditor.HandleColorForAddAndSnap3D = b); EditorGUILayout.HelpBox("Color for handles, shown for 3D curve in Scene View when new point is previewed.", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.ColorField("Add and Snap 2D Handles Color", BGCurveSettingsForEditor.HandleColorForAddAndSnap2D, b => BGCurveSettingsForEditor.HandleColorForAddAndSnap2D = b); EditorGUILayout.HelpBox("Color for handles, shown for 2D curve in Scene View when new point is previewed.", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.ColorField("Points labels back color", BGCurveSettingsForEditor.ColorForLabelBackground, b => BGCurveSettingsForEditor.ColorForLabelBackground = b); EditorGUILayout.HelpBox("Background color for points labels in Scene View.", MessageType.Info); }); BGEditorUtility.VerticalBox(() => { BGEditorUtility.ColorField("New section preview color", BGCurveSettingsForEditor.ColorForNewSectionPreview, b => BGCurveSettingsForEditor.ColorForNewSectionPreview = b); EditorGUILayout.HelpBox("Color for new section preview in Scene View.", MessageType.Info); }); }); }); }
public void Ui(BGTableView ui) { var cursor = 0; // ========================== First row //number ui.NextColumn("" + index, "Field's index", GetWidth(ui, ref cursor)); //name ui.NextColumn(rect => { BGEditorUtility.TextField(rect, field.FieldName, s => { if (NameHasError(field.Curve, s)) { return; } Change(() => field.FieldName = s); }, true); }, GetWidth(ui, ref cursor)); //type ui.NextColumn(field.Type.ToString(), "Field's Type", GetWidth(ui, ref cursor)); //show in Points menu ui.NextColumn(rect => BGEditorUtility.BoolField(rect, BGPrivateField.GetShowInPointsMenu(field), b => Change(() => BGPrivateField.SetShowInPointsMenu(field, b))), GetWidth(ui, ref cursor)); //delete icon ui.NextColumn(rect => { if (!GUI.Button(rect, deleteIcon) || !BGEditorUtility.Confirm("Delete", "Are you sure you want to delete '" + field.FieldName + "' field?", "Delete")) { return; } BGPrivateField.Invoke(field.Curve, BGCurve.MethodDeleteField, field, (Action <BGCurvePointField>)Undo.DestroyObjectImmediate); GUIUtility.ExitGUI(); }, GetWidth(ui, ref cursor)); //\r\n ui.NextRow(); // ========================== Second row //does not support if (!SupportHandles(field.Type)) { return; } ui.NextColumn(" Handles", "Field's index", 25); //handles type ui.NextColumn( rect => BGEditorUtility.PopupField(rect, (HandlesType)BGPrivateField.GetHandlesType(field), Type2Handles[field.Type], b => Change(() => BGPrivateField.SetHandlesType(field, (int)((HandlesType)b)))), 30); //Handles color ui.NextColumn(rect => BGEditorUtility.ColorField(rect, BGPrivateField.GetHandlesColor(field), b => Change(() => BGPrivateField.SetHandlesColor(field, b))), 30); //show handles in Scene View ui.NextColumn(rect => BGEditorUtility.BoolField(rect, BGPrivateField.GetShowHandles(field), b => Change(() => BGPrivateField.SetShowHandles(field, b))), 5); //empty column under delete button ui.NextColumn(rect => EditorGUI.LabelField(rect, ""), 10); //\r\n ui.NextRow(); }
protected void NextColorRow(BGTableView ui, string label, string tooltip, Color color, Action <Color> func) { ui.NextColumn(label, tooltip); ui.NextColumn(rect => BGEditorUtility.ColorField(rect, color, func)); ui.NextRow(); }
private static void ShowSettings() { BGEditorUtility.SwapLabelWidth(300, () => { BGEditorUtility.Vertical(new GUIStyle("Box") { padding = new RectOffset(Padding, Padding, Padding, Padding) }, () => { EditorGUILayout.LabelField(settings.Name, new GUIStyle("Box") { fontSize = 22 }); if (GUILayout.Button(new GUIContent("Reset to defaults", "Reset all editor settings to their defaults.")) && BGEditorUtility.Confirm("Reset settings", "Reset All Editor settings to defaults? It does not affect local settings.", "Reset")) { settings.Reset(); } var keys = settings.Keys; foreach (var key in keys) { var descriptor = settings.GetSetting(key); if (descriptor.Name == null) { continue; } Action ui; if (descriptor is BGAbstractSettingsForEditor.SettingEnum) { var setting = (BGAbstractSettingsForEditor.SettingEnum)descriptor; ui = () => { setting.Value = setting.Ui(setting.Value); }; } else if (descriptor is BGAbstractSettingsForEditor.SettingBool) { var setting = (BGAbstractSettingsForEditor.SettingBool)descriptor; ui = () => { BGEditorUtility.ToggleField(setting.Value, descriptor.Name, b => setting.Value = b); }; } else if (descriptor is BGAbstractSettingsForEditor.SettingInt) { var setting = (BGAbstractSettingsForEditor.SettingInt)descriptor; ui = () => { BGEditorUtility.IntField(descriptor.Name, setting.Value, b => setting.Value = b); }; } else if (descriptor is BGAbstractSettingsForEditor.SettingString) { var setting = (BGAbstractSettingsForEditor.SettingString)descriptor; ui = () => { BGEditorUtility.TextField(descriptor.Name, setting.Value, b => setting.Value = b, false); }; } else if (descriptor is BGAbstractSettingsForEditor.SettingFloat) { var setting = (BGAbstractSettingsForEditor.SettingFloat)descriptor; ui = () => { BGEditorUtility.FloatField(descriptor.Name, setting.Value, b => setting.Value = b); }; } else if (descriptor is BGAbstractSettingsForEditor.SettingColor) { var setting = (BGAbstractSettingsForEditor.SettingColor)descriptor; ui = () => { BGEditorUtility.ColorField(descriptor.Name, setting.Value, b => setting.Value = b); }; } else { throw new UnityException("Unsupported type"); } BGEditorUtility.VerticalBox(() => { ui(); EditorGUILayout.HelpBox(descriptor.Description, MessageType.Info); }); } }); }); }