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;
}
}