using System; using UnityEngine; [DisallowMultipleComponent] public sealed class DebounceBehavior : NodeBehavior { private bool pending; private float fireAt; private void Update() { if (base.IsAuthoritative && pending && Time.unscaledTime >= fireAt) { pending = false; TriggerOutput("Out"); } } public override void OnRun(string inputPortName) { if (base.IsAuthoritative && string.Equals(inputPortName, "In", StringComparison.Ordinal)) { float num = Mathf.Max(0f, (float)GetInputNumber("Seconds")); pending = true; fireAt = Time.unscaledTime + num; } } }