コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        /// <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;
            }
        }
コード例 #5
0
 /// <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);
 }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
 private void RemoveMessage(StratusObjectValidation message)
 {
     this.endOfFrameRequests.Add(() => { this.messages.Remove(message); });
 }