public static StratusObjectValidation NullReference(Behaviour behaviour, string description = null) { FieldInfo[] nullFields = Stratus.Utilities.StratusReflection.GetFieldsWithNullReferences(behaviour); if (nullFields.Empty()) { return(null); } string label = behaviour.GetType().Name; if (description != null) { label += $" {description}"; } string msg = $"{label} has the following fields currently set to null:"; foreach (var f in nullFields) { msg += $"\n - <i>{f.Name}</i>"; } StratusObjectValidation validation = new StratusObjectValidation(msg, Level.Warning, behaviour); return(validation); }
public override StratusObjectValidation Validate() { StratusObjectValidation validation = new StratusObjectValidation(StratusObjectValidation.Level.Warning, this); validation.Add(StratusObjectValidation.NullReference(this, $"<i>{description}</i>")); validation.Add(ValidateLayers()); return(validation); }
StratusObjectValidation[] IStratusValidatorAggregator.Validate() { var messages = new List <StratusObjectValidation>(); messages.AddIfNotNull(StratusObjectValidation.Generate(this)); messages.AddRange(StratusObjectValidation.Aggregate(triggers)); messages.AddRange(StratusObjectValidation.Aggregate(triggerables)); return(messages.ToArray()); }
/// <summary> /// Concatenates two validation messages together, provided they are to the same target. /// The level is raised to the highest of the two. /// </summary> /// <param name="other"></param> public void Add(StratusObjectValidation other) { if (other == null || other.target != this.target) { return; } message += other.message; if (other.type > this.type) { this.type = other.type; } }
/// <summary> /// Adds a validation message on top of the editor /// </summary> /// <param name="message"></param> /// <param name="type"></param> /// <param name="target"></param> public void AddMessage(StratusObjectValidation message) { this.messages.Add(message); }
/// <summary> /// Adds a validation message on top of the editor /// </summary> /// <param name="message"></param> /// <param name="type"></param> /// <param name="target"></param> public void AddMessage(string message, MessageType type, UnityEngine.Object target, Func <bool> onValidate = null) { StratusObjectValidation contextMessage = new StratusObjectValidation(message, type.Convert(), target); this.messages.Add(contextMessage); }
private void RemoveMessage(StratusObjectValidation message) { this.endOfFrameRequests.Add(() => { this.messages.Remove(message); }); }