using System.Linq; using Sirenix.OdinInspector.Editor.Validation; using UnityEngine; using VOID.Editor.AttributeValidator; using VOID.Generic; using VOID.Generic.Triggers; [assembly: RegisterValidator(typeof(HideCeilingTriggerValidator))] namespace VOID.Editor.AttributeValidator { public class HideCeilingTriggerValidator : ValueValidator { protected override void Validate(ValidationResult result) { if (Value == null) return; ValidateHideableLayer(result); } private void ValidateHideableLayer(ValidationResult result) { var isWrongLayer = Value.gameObjectsToHide.SelectMany(go => go.GetComponentsInChildren()) .Select(transform => transform.gameObject.layer) .Any(layer => layer != LayerManager.StaticHideableIndex); if (!isWrongLayer) return; result.AddError($"All hideable objects targeted by this components needs layer {nameof(LayerManager.StaticHideable)}"); } } }