using System; using UnityEngine; [DisallowMultipleComponent] public sealed class TimerBehavior : NodeBehavior { private bool running; private float nextTickAt; private void Update() { if (base.IsAuthoritative && running) { float num = Mathf.Max(0.0001f, (float)GetInputNumber("Seconds")); if (Time.unscaledTime >= nextTickAt) { nextTickAt = Time.unscaledTime + num; TriggerOutput("Tick"); } } } public override void OnRun(string inputPortName) { if (base.IsAuthoritative) { if (string.Equals(inputPortName, "Start", StringComparison.Ordinal)) { running = true; nextTickAt = Time.unscaledTime + Mathf.Max(0.0001f, (float)GetInputNumber("Seconds")); } else if (string.Equals(inputPortName, "Stop", StringComparison.Ordinal)) { running = false; } } } }