using Sirenix.OdinInspector.Editor.Validation; using UnityEngine; using VOID.Editor.AttributeValidator; using VOID.Generic; using VOID.Generic.Triggers; [assembly: RegisterValidator(typeof(DynamicTriggerValidator))] namespace VOID.Editor.AttributeValidator { public class DynamicTriggerValidator : ValueValidator { protected override void Validate(ValidationResult result) { if (Value is not Component component) return; ValidateLayer(result, component); ValidateCollider(result, component); } private void ValidateLayer(ValidationResult result, Component component) { if (LayerManager.CodeInMask(component.gameObject.layer, LayerManager.Trigger)) return; result.AddError( $"This component uses {nameof(IDynamicTrigger)} which requires layer {nameof(LayerManager.Trigger)}!"); } private void ValidateCollider(ValidationResult result, Component component) { if (component.GetComponentInChildren()) return; result.AddError( $"This component uses {nameof(IDynamicTrigger)} which requires at least one collider!"); } } }