using Unity.Entities; using Unity.Mathematics; namespace ProjectM.Simulation { /// /// Predicted, NON-replicated blink window on the owner-predicted player — the Movement-archetype Spark (a /// second dash, socketed). A shape-sibling of : re-simulated from the replicated /// blink-socket InputEvent every predicted tick, so its own window (never , which a /// same-tick dash+blink would clobber). BlinkSystem drives a VELOCITY blink over the half-open /// [StartTick, UntilTick) window and NEVER writes LocalTransform — the CC collide-and-slide processor /// owns transform integration; a raw write tunnels the subscene-only Environment colliders and resets Scale. /// Ticks routed through TickUtil.NonZero; compared via only. /// Baked all-zero (idle). NOT a [GhostField] (no player-ghost re-bake). /// public struct BlinkState : IComponentData { /// Planar XZ blink heading, captured at blink-start. public float2 Dir; /// Raw ServerTick at blink-start (NonZero). Lower (inclusive) bound of the blink window. public uint StartTick; /// StartTick + blink window (NonZero). Velocity override covers the HALF-OPEN [StartTick, UntilTick). public uint UntilTick; } }