private UIElement GetRightElement(PropertyInfo info, UIElement element, ref int maxHeight) { object value = info.GetValue(element); if (info.PropertyType == typeof(bool)) { var check = new UICheckBox() { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), Value = (bool)value, }; check.OnCheckedChange += (e, s) => { info.SetValue(element, e.Value); Editor.NotifyElementPropertyChange(this); }; return(check); } else if (info.PropertyType == typeof(string)) { var changer = new UITextBox() { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), Text = value.ToString(), Size = new Vector2(-8, 0), }; if (info.SetMethod == null) { changer.Editable = false; } changer.OnTextChange += (e, s) => { info.SetValue(element, e.NewString); Editor.NotifyElementPropertyChange(this); }; return(changer); } else if (info.PropertyType == typeof(Color)) { var color = new UIColorIdentifier(info, element) { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), Color = (Color)value, Size = new Vector2(-8, 0), }; color.OnClick += (e, s) => { Editor.OpenColorChooser(info, element, color); }; return(color); } else if (info.PropertyType == typeof(Vector2)) { var vector2 = new UIVector2(element, info) { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), }; if (info.SetMethod == null) { vector2.Editable = false; } vector2.OnValueChanged += (e, s) => { info.SetValue(element, vector2.Value); Editor.NotifyElementPropertyChange(this); }; return(vector2); } else if (info.PropertyType == typeof(Rectangle)) { var rect = new UIRectangle(element, info) { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), }; if (info.SetMethod == null) { rect.Editable = false; } rect.OnValueChanged += (e, s) => { info.SetValue(element, rect.Value); Editor.NotifyElementPropertyChange(this); }; maxHeight = 65; return(rect); } else if (info.PropertyType == typeof(float)) { var textF = new UIValueTextBoxEx <float>(element, info) { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), Size = new Vector2(-8, 0), }; if (info.SetMethod == null) { textF.Editable = false; } textF.OnValueChanged += (e, s) => { info.SetValue(element, textF.Value); Editor.NotifyElementPropertyChange(this); }; return(textF); } else if (info.PropertyType.IsEnum) { var instance = new UIEnumSelector(element, info) { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), SizeFactor = new Vector2(1, 1), Size = new Vector2(-8, 0), }; instance.HangElement = this; instance.OnValueChange += (e, s) => { info.SetValue(element, instance.Value); Editor.NotifyElementPropertyChange(this); }; return(instance); } var text = new UILabel() { AnchorPoint = new Vector2(0, 0.5f), Pivot = new Vector2(0, 0.5f), Text = (value == null) ? "null" : value.ToString(), }; return(text); }