using System; namespace ShrinkModFramework { /// 把文件系统的 burst 事件折叠为一次主线程 reload。 internal sealed class ShrinkModReloadDebouncer { private bool _pending; private float _reloadAt; public bool IsPending => _pending; public void Schedule(float now, float delaySeconds) { _pending = true; _reloadAt = now + Math.Max(0.05f, delaySeconds); } public bool TryConsume(float now) { if (!_pending || now < _reloadAt) return false; _pending = false; return true; } public void Reset() { _pending = false; _reloadAt = 0f; } } }