public DebugItemViewer(Rect canvas) { this.GuiCanvas = canvas; colourPicker = new ColourPicker("Colour"); globalPosPicker = new Vector3Picker("Global Pos", -10f, 10f); localPosPicker = new Vector3Picker("Local Pos", -10f, 10f); scalePicker = new Vector3Picker("Scale", 0.001f, 5f); rotationPicker = new RotationPicker("Rotation"); }
private Widget buildFieldEditor(EffectConfig.ConfigField field) { if (field.AllowedValues != null) { var widget = new Selectbox(Manager) { Value = field.Value, Options = field.AllowedValues, AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueChanged += (sender, e) => setFieldValue(field, widget.Value); return(widget); } else if (field.Type == typeof(bool)) { var widget = new Selectbox(Manager) { Value = field.Value, Options = new NamedValue[] { new NamedValue() { Name = true.ToString(), Value = true, }, new NamedValue() { Name = false.ToString(), Value = false, }, }, AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueChanged += (sender, e) => setFieldValue(field, widget.Value); return(widget); } else if (field.Type == typeof(string)) { var widget = new Textbox(Manager) { Value = field.Value?.ToString(), AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, AcceptMultiline = true, CanGrow = false, }; widget.OnValueCommited += (sender, e) => { setFieldValue(field, widget.Value); widget.Value = effect.Config.GetValue(field.Name).ToString(); }; return(widget); } else if (field.Type == typeof(Vector2)) { var widget = new Vector2Picker(Manager) { Value = (Vector2)field.Value, AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueCommited += (sender, e) => { setFieldValue(field, widget.Value); widget.Value = (Vector2)effect.Config.GetValue(field.Name); }; return(widget); } else if (field.Type == typeof(Vector3)) { var widget = new Vector3Picker(Manager) { Value = (Vector3)field.Value, AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueCommited += (sender, e) => { setFieldValue(field, widget.Value); widget.Value = (Vector3)effect.Config.GetValue(field.Name); }; return(widget); } else if (field.Type == typeof(Color4)) { var widget = new HsbColorPicker(Manager) { Value = (Color4)field.Value, AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueCommited += (sender, e) => { setFieldValue(field, widget.Value); widget.Value = (Color4)effect.Config.GetValue(field.Name); }; return(widget); } else if (field.Type.GetInterface(nameof(IConvertible)) != null) { var widget = new Textbox(Manager) { Value = Convert.ToString(field.Value, CultureInfo.InvariantCulture), AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }; widget.OnValueCommited += (sender, e) => { try { var value = Convert.ChangeType(widget.Value, field.Type, CultureInfo.InvariantCulture); setFieldValue(field, value); } catch { } widget.Value = Convert.ToString(effect.Config.GetValue(field.Name), CultureInfo.InvariantCulture); }; return(widget); } return(new Label(Manager) { StyleName = "listItem", Text = field.Value.ToString(), Tooltip = $"Values of type {field.Type.Name} cannot be edited", AnchorFrom = BoxAlignment.Right, AnchorTo = BoxAlignment.Right, CanGrow = false, }); }