1.1.0: Added validate attribute with NotNullField

This commit is contained in:
Anders Ejlersen 2021-12-04 15:04:41 +01:00
parent 18356eb532
commit 41ced8fdb7
15 changed files with 166 additions and 8 deletions

View file

@ -75,6 +75,7 @@ namespace Module.Inspector.Editor.Utilities
var predrawerModifiers = new List<ResultValue<PredrawerModifierPropertyAttribute, PredrawerModifierPropertyDrawer>>(2);
var valueModifiers = new List<ResultValue<ValueModifierPropertyAttribute, ValueModifierPropertyDrawer>>(2);
var accessModifiers = new List<ResultValue<AccessModifierPropertyAttribute, AccessModifierPropertyDrawer>>(2);
var validators = new List<ResultValue<ValidatePropertyAttribute, ValidatePropertyDrawer>>(2);
object[] attributes = fieldInfo.GetCustomAttributes(false);
string tooltip = null;
var isObsolete = false;
@ -115,6 +116,13 @@ namespace Module.Inspector.Editor.Utilities
if (prop != null)
accessModifiers.Add(new ResultValue<AccessModifierPropertyAttribute, AccessModifierPropertyDrawer>(accessModifier, prop));
}
else if (att is ValidatePropertyAttribute validator)
{
var prop = InternalCreateInstanceOf<ValidatePropertyDrawer>(validator);
if (prop != null)
validators.Add(new ResultValue<ValidatePropertyAttribute, ValidatePropertyDrawer>(validator, prop));
}
else if (att is TooltipAttribute attTooltip)
{
tooltip = attTooltip.tooltip;
@ -144,7 +152,7 @@ namespace Module.Inspector.Editor.Utilities
}
}
return new Result(drawer, predrawerModifiers, valueModifiers, accessModifiers, tooltip, isObsolete);
return new Result(drawer, predrawerModifiers, valueModifiers, accessModifiers, validators, tooltip, isObsolete);
}
private static T InternalCreateInstanceOf<T>(AbstractPropertyAttribute att) where T : AbstractPropertyDrawer
@ -172,6 +180,7 @@ namespace Module.Inspector.Editor.Utilities
public readonly List<ResultValue<PredrawerModifierPropertyAttribute, PredrawerModifierPropertyDrawer>> predrawerModifiers;
public readonly List<ResultValue<ValueModifierPropertyAttribute, ValueModifierPropertyDrawer>> valueModifiers;
public readonly List<ResultValue<AccessModifierPropertyAttribute, AccessModifierPropertyDrawer>> accessModifiers;
public readonly List<ResultValue<ValidatePropertyAttribute, ValidatePropertyDrawer>> validators;
public readonly string tooltip;
public readonly bool isObsolete;
@ -179,6 +188,7 @@ namespace Module.Inspector.Editor.Utilities
List<ResultValue<PredrawerModifierPropertyAttribute, PredrawerModifierPropertyDrawer>> predrawerModifiers,
List<ResultValue<ValueModifierPropertyAttribute, ValueModifierPropertyDrawer>> valueModifiers,
List<ResultValue<AccessModifierPropertyAttribute, AccessModifierPropertyDrawer>> accessModifiers,
List<ResultValue<ValidatePropertyAttribute, ValidatePropertyDrawer>> validators,
string tooltip,
bool isObsolete)
{
@ -186,6 +196,7 @@ namespace Module.Inspector.Editor.Utilities
this.predrawerModifiers = predrawerModifiers;
this.valueModifiers = valueModifiers;
this.accessModifiers = accessModifiers;
this.validators = validators;
this.tooltip = tooltip;
this.isObsolete = isObsolete;
}
@ -222,6 +233,17 @@ namespace Module.Inspector.Editor.Utilities
return null;
}
public T GetValidator<T>() where T : ValidatePropertyAttribute
{
for (var i = 0; i < validators.Count; i++)
{
if (validators[i].attribute is T att)
return att;
}
return null;
}
}
/// <summary>