public override double Draw(IMemberInspectionInfo attr, double value) { if (attr.InspectAttribute is InspectAsFloatSliderAttribute attr_) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); float narrowedDouble = Convert.ToSingle(value); float newValue = EditorGUILayout.Slider(narrowedDouble, attr_.SliderMin, attr_.SliderMax); EditorGUILayout.EndHorizontal(); return(newValue); } else { switch (attr.InspectAttribute.InspectionKind) { case InspectionKind.Delayed: return(EditorGUILayout.DelayedDoubleField(attr.Info.Name, value)); default: return(EditorGUILayout.DoubleField(attr.Info.Name, value)); } } }
public override byte Draw(IMemberInspectionInfo attr, byte value) { int newValue; if (attr.InspectAttribute is InspectAsByteSliderAttribute attr_) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); newValue = EditorGUILayout.IntSlider(value, attr_.SliderMin, attr_.SliderMax); EditorGUILayout.EndHorizontal(); } else { newValue = EditorGUILayout.IntField(attr.Info.Name, value); } if (newValue < byte.MinValue) { return(byte.MinValue); } if (newValue > byte.MaxValue) { return(byte.MaxValue); } return((byte)newValue); }
public override ushort Draw(IMemberInspectionInfo attr, ushort value) { int newValue; if (attr.InspectAttribute is InspectAsUnsignedShortSliderAttribute attr_) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); newValue = EditorGUILayout.IntSlider(value, attr_.SliderMin, attr_.SliderMax); EditorGUILayout.EndHorizontal(); } else { newValue = EditorGUILayout.IntField(attr.Info.Name, value); } if (newValue < ushort.MinValue) { return(ushort.MinValue); } if (newValue > ushort.MaxValue) { return(ushort.MaxValue); } return((ushort)newValue); }
public object Draw(IMemberInspectionInfo attr, object value) { if (value is Enum enum_) { var flagAttrs = attr.RealType.GetCustomAttributes(typeof(FlagsAttribute), false); if (flagAttrs == null || flagAttrs.Length == 0) { return(EditorGUILayout.EnumPopup(attr.Info.Name, enum_)); } else if (flagAttrs.Length == 1) { return(EditorGUILayout.EnumFlagsField(attr.Info.Name, enum_)); } else { Debug.LogWarning($"Multiple attributes of type {typeof(FlagsAttribute).FullName} found for enum of type {attr.RealType.FullName}."); return(value); } } else { throw new ArgumentException("Must be an enum.", nameof(value)); } }
private object DrawMutableReference(IMemberInspectionInfo fieldOrPropertyInfo, object reference, Dictionary <string, bool> foldoutData, Stack <string> pathStack) { var inspectionType = fieldOrPropertyInfo.InspectAttribute.InspectionKind; if (reference is UnityEngine.Object obj && inspectionType == InspectionKind.DropableObject) { return(new DropableObjectDrawer().Draw(fieldOrPropertyInfo, obj, false)); }
public Object Draw(IMemberInspectionInfo attr, Object value, bool allowSceneObjects) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); var result = EditorGUILayout.ObjectField(value, attr.RealType, allowSceneObjects); EditorGUILayout.EndHorizontal(); return(result); }
public override LayerMask Draw(IMemberInspectionInfo attr, LayerMask value) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); int newValue = EditorGUILayout.LayerField(value); EditorGUILayout.EndHorizontal(); return(newValue); }
public override char Draw(IMemberInspectionInfo attr, char value) { string newValue = EditorGUILayout.TextField(attr.Info.Name, value.ToString()); if (newValue == null || newValue == string.Empty) { return(value); } return(newValue[0]); }
private void DrawImmutable(object target, IMemberInspectionInfo memberToInspect, Dictionary <string, bool> folderPathToIsExpanded, Stack <string> pathStack) { if (ShouldDrawTypeAsList(memberToInspect.RealType)) { // Lists are only readonly on their surface. DrawIEnumerable(target, memberToInspect, true, folderPathToIsExpanded, pathStack); } else { // Create a readonly field. string text = memberToInspect.GetValue(target).ToString(); EditorGUILayout.LabelField(memberToInspect.Info.Name, text); } }
public override ulong Draw(IMemberInspectionInfo attr, ulong value) { string newValue = EditorGUILayout.TextField(attr.Info.Name, value.ToString()); if (newValue == null || newValue == string.Empty) { return(value); } if (ulong.TryParse(newValue, out var result)) { return(result); } return(value); }
public override uint Draw(IMemberInspectionInfo attr, uint value) { long newValue = EditorGUILayout.LongField(attr.Info.Name, value); if (newValue < uint.MinValue) { return(uint.MinValue); } if (newValue > uint.MaxValue) { return(uint.MaxValue); } return((uint)newValue); }
private void DrawImmutableSelectable(object target, IMemberInspectionInfo memberToInspect, Dictionary <string, bool> folderPathToIsExpanded, Stack <string> pathStack) { if (ShouldDrawTypeAsList(memberToInspect.RealType)) { Warn($"It doesn't make sense to draw an instance of {memberToInspect.Info.ReflectedType.Name} as {InspectionKind.ImmutableSelectable}. It will be drawn as {InspectionKind.Immutable} instead."); DrawIEnumerable(target, memberToInspect, true, folderPathToIsExpanded, pathStack); } else { // TODO Really draw references as selectable? EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(memberToInspect.Info.Name); string text = memberToInspect.GetValue(target).ToString(); EditorGUILayout.SelectableLabel(text); EditorGUILayout.EndHorizontal(); } }
private void DrawMutable(object target, IMemberInspectionInfo memberToInspect, Dictionary <string, bool> folderPathToIsExpanded, Stack <string> pathStack) { var obj = memberToInspect.GetValue(target); object newObj; if (memberToInspect.RealType.IsEnum) { newObj = new EnumDrawer().Draw(memberToInspect, obj); } else { if (_drawers.TryGetValue(memberToInspect.RealType, out var drawer)) { //TODO better null checking (string) if (obj != null /*|| memberToInspect.RealType == typeof(string)*/) { newObj = drawer.Draw(memberToInspect, obj); } else { DrawNone(memberToInspect.Info.Name); newObj = null; } } else { if (obj != null && memberToInspect.RealType.IsValueType) { Warn($"The following value-type has no registered drawer: {memberToInspect.RealType}"); newObj = obj; } else { newObj = DrawMutableReference(memberToInspect, obj, folderPathToIsExpanded, pathStack); } } } if (obj != newObj) { memberToInspect.SetValue(target, newObj); } }
public override string Draw(IMemberInspectionInfo attr, string value) { switch (attr.InspectAttribute.InspectionKind) { case InspectionKind.Delayed: return(EditorGUILayout.DelayedTextField(attr.Info.Name, value)); case InspectionKind.Tag: return(EditorGUILayout.TagField(attr.Info.Name, value)); case InspectionKind.TextArea: EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); var result = EditorGUILayout.TextArea(value); EditorGUILayout.EndHorizontal(); return(result); default: return(EditorGUILayout.TextField(attr.Info.Name, value)); } }
public override int Draw(IMemberInspectionInfo attr, int value) { if (attr.InspectAttribute is InspectAsIntegerSliderAttribute attr_) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(attr.Info.Name); var newVal = EditorGUILayout.IntSlider(value, attr_.SliderMin, attr_.SliderMax); EditorGUILayout.EndHorizontal(); return(newVal); } else { switch (attr.InspectAttribute.InspectionKind) { case InspectionKind.Delayed: return(EditorGUILayout.DelayedIntField(attr.Info.Name, value)); default: return(EditorGUILayout.IntField(attr.Info.Name, value)); } } }
public override AnimationCurve Draw(IMemberInspectionInfo attr, AnimationCurve value) { return(EditorGUILayout.CurveField(attr.Info.Name, value)); }
public override bool Draw(IMemberInspectionInfo attr, bool value) { return(EditorGUILayout.Toggle(attr.Info.Name, value)); }
public override long Draw(IMemberInspectionInfo attr, long value) { return(EditorGUILayout.LongField(attr.Info.Name, value)); }
public override Bounds Draw(IMemberInspectionInfo attr, Bounds value) { return(EditorGUILayout.BoundsField(attr.Info.Name, value)); }
public override Vector4 Draw(IMemberInspectionInfo attr, Vector4 value) { return(EditorGUILayout.Vector4Field(attr.Info.Name, value)); }
public override Rect Draw(IMemberInspectionInfo attr, Rect value) { return(EditorGUILayout.RectField(attr.Info.Name, value)); }
public override Color Draw(IMemberInspectionInfo attr, Color value) { return(EditorGUILayout.ColorField(attr.Info.Name, value)); }