using Unity.Entities; using Unity.NetCode; namespace ProjectM.Simulation { /// /// MC-1 — predicted per-player dash cooldown gate (an AbilityCooldown twin). [GhostField] so the /// owning client does not mispredict the cooldown across rollback / reconnect: re-predicted ticks see the same /// authoritative gate the server applied and converge without a double-dash. 0 = ready; set to /// serverTick + dashCooldownTicks via TickUtil.NonZero on dash-start; compare by wrapping into a /// and using (raw uint subtraction is unsafe /// across tick wraparound). Baked {NextTick = 0}. /// public struct DashCooldown : IComponentData { /// Raw tick of the earliest tick the player may dash again. 0 = ready. [GhostField] public uint NextTick; } }