public static object DefaultPropertyField(Rect position, GUIContent label, object value, System.Type valueType) { var propertyType = (valueType != null) ? EditorHelper.GetPropertyType(valueType) : SerializedPropertyType.Generic; switch (propertyType) { case SerializedPropertyType.Integer: EditorGUI.BeginChangeCheck(); int num1 = EditorGUI.IntField(position, label, ConvertUtil.ToInt(value)); if (EditorGUI.EndChangeCheck()) { return(num1); } else { break; } case SerializedPropertyType.Boolean: EditorGUI.BeginChangeCheck(); bool flag2 = EditorGUI.Toggle(position, label, ConvertUtil.ToBool(value)); if (EditorGUI.EndChangeCheck()) { return(flag2); } else { break; } case SerializedPropertyType.Float: EditorGUI.BeginChangeCheck(); float num2 = EditorGUI.FloatField(position, label, ConvertUtil.ToSingle(value)); if (EditorGUI.EndChangeCheck()) { return(num2); } else { break; } case SerializedPropertyType.String: EditorGUI.BeginChangeCheck(); string str1 = EditorGUI.TextField(position, label, ConvertUtil.ToString(value)); if (EditorGUI.EndChangeCheck()) { return(str1); } else { break; } case SerializedPropertyType.Color: EditorGUI.BeginChangeCheck(); Color color = EditorGUI.ColorField(position, label, ConvertUtil.ToColor(value)); if (EditorGUI.EndChangeCheck()) { return(color); } else { break; } case SerializedPropertyType.ObjectReference: EditorGUI.BeginChangeCheck(); object obj = EditorGUI.ObjectField(position, label, value as UnityEngine.Object, valueType, true); if (EditorGUI.EndChangeCheck()) { return(obj); } break; case SerializedPropertyType.LayerMask: EditorGUI.BeginChangeCheck(); LayerMask mask = (value is LayerMask) ? (LayerMask)value : (LayerMask)ConvertUtil.ToInt(value); mask = SPEditorGUI.LayerMaskField(position, label, mask); if (EditorGUI.EndChangeCheck()) { return(mask); } break; case SerializedPropertyType.Enum: if (valueType.GetCustomAttributes(typeof(System.FlagsAttribute), false).Any()) { EditorGUI.BeginChangeCheck(); var e = SPEditorGUI.EnumFlagField(position, label, ConvertUtil.ToEnumOfType(valueType, value)); if (EditorGUI.EndChangeCheck()) { return(e); } } else { EditorGUI.BeginChangeCheck(); var e = SPEditorGUI.EnumPopupExcluding(position, label, ConvertUtil.ToEnumOfType(valueType, value)); if (EditorGUI.EndChangeCheck()) { return(e); } } break; case SerializedPropertyType.Vector2: EditorGUI.BeginChangeCheck(); var v2 = EditorGUI.Vector2Field(position, label, ConvertUtil.ToVector2(value)); if (EditorGUI.EndChangeCheck()) { return(v2); } break; case SerializedPropertyType.Vector3: EditorGUI.BeginChangeCheck(); var v3 = EditorGUI.Vector3Field(position, label, ConvertUtil.ToVector3(value)); if (EditorGUI.EndChangeCheck()) { return(v3); } break; case SerializedPropertyType.Vector4: EditorGUI.BeginChangeCheck(); var v4 = EditorGUI.Vector4Field(position, label.text, ConvertUtil.ToVector4(value)); if (EditorGUI.EndChangeCheck()) { return(v4); } break; case SerializedPropertyType.Rect: EditorGUI.BeginChangeCheck(); Rect rect = (value is Rect) ? (Rect)value : new Rect(); rect = EditorGUI.RectField(position, label, rect); if (EditorGUI.EndChangeCheck()) { return(rect); } break; case SerializedPropertyType.ArraySize: EditorGUI.BeginChangeCheck(); int num3 = EditorGUI.IntField(position, label, ConvertUtil.ToInt(value), EditorStyles.numberField); if (EditorGUI.EndChangeCheck()) { return(num3); } break; case SerializedPropertyType.Character: bool changed = GUI.changed; GUI.changed = false; string str2 = EditorGUI.TextField(position, label, new string(ConvertUtil.ToChar(value), 1)); if (GUI.changed) { if (str2.Length == 1) { return(str2[0]); } else { GUI.changed = false; } } GUI.changed = GUI.changed | changed; break; case SerializedPropertyType.AnimationCurve: EditorGUI.BeginChangeCheck(); AnimationCurve curve = value as AnimationCurve; curve = EditorGUI.CurveField(position, label, curve); if (EditorGUI.EndChangeCheck()) { return(curve); } break; case SerializedPropertyType.Bounds: EditorGUI.BeginChangeCheck(); Bounds bnds = (value is Bounds) ? (Bounds)value : new Bounds(); bnds = EditorGUI.BoundsField(position, label, bnds); if (EditorGUI.EndChangeCheck()) { return(bnds); } break; case SerializedPropertyType.Gradient: EditorGUI.BeginChangeCheck(); Gradient grad = value as Gradient; grad = SPEditorGUI.GradientField(position, label, grad); if (EditorGUI.EndChangeCheck()) { return(grad); } break; default: EditorGUI.PrefixLabel(position, label); break; } return(value); }