/* * SPDX-License-Identifier: AGPL-3.0-or-later * Copyright (C) 2025 Sergej Görzen * This file is part of OmiLAXR. */ using System; using System.Collections; using UnityEngine; namespace OmiLAXR.Schedules { /// /// Scheduler that triggers on every Unity frame update. /// [CreateAssetMenu( fileName = "RealtimeTicker", menuName = "OmiLAXR/Scheduler/RealtimeTicker", order = 1)] public class RealtimeTicker : Scheduler { /// /// Run loop: triggers every frame. /// protected override IEnumerator Run() { while (isActive) { // Wait one frame yield return null; TriggerOnTick(); } } /// /// Factory for programmatic creation. /// public static RealtimeTicker Create( MonoBehaviour owner, Action onTick = null, Action onTickStart = null, Action onTickEnd = null, bool runImmediate = false) { var scheduler = CreateInstance(); scheduler.Init(owner, onTick, onTickStart, onTickEnd, runImmediate); return scheduler; } } }