using System; using UnityEngine; // OutlineFx © NullTale - https://x.com/NullTale/ namespace OutlineFx { [Serializable] public sealed class Optional { [SerializeField] internal bool enabled; [SerializeField] internal T value = default!; public bool Enabled { get => enabled; set => enabled = value; } public T Value { get => value; set => this.value = value; } // ======================================================================= public Optional(bool enabled) { this.enabled = enabled; } public Optional(T value, bool enabled) { this.enabled = enabled; this.value = value; } public T GetValue(T disabledValue) { return enabled ? value : disabledValue; } public T GetValueOrDefault() { return enabled ? value : default; } public static implicit operator bool(Optional opt) { return opt.enabled; } public static implicit operator T(Optional opt) { return opt.value; } } }