using System; using JetBrains.Annotations; using UnityEditor; namespace TriInspector { public abstract class TriValidator { internal bool ApplyOnArrayElement { get; set; } [PublicAPI] public virtual void Initialize(TriPropertyDefinition propertyDefinition) { } [PublicAPI] public abstract TriValidationResult Validate(TriProperty property); } public abstract class TriAttributeValidator : TriValidator { internal Attribute RawAttribute { get; set; } } public abstract class TriAttributeValidator : TriAttributeValidator where TAttribute : Attribute { [PublicAPI] public TAttribute Attribute => (TAttribute) RawAttribute; } public abstract class TriValueValidator : TriValidator { } public abstract class TriValueValidator : TriValueValidator { public sealed override TriValidationResult Validate(TriProperty property) { return Validate(new TriValue(property)); } [PublicAPI] public abstract TriValidationResult Validate(TriValue propertyValue); } }