52818d0dd6
Per Phase1_Combat_Gym_Build_Spec §6 (the Blink Spark = a second, socketed dash): - AbilityArchetype += Movement (falls through AbilityFireSystem; a sibling system drives it). - AbilityId += the 5 Phase-1 Sparks (DecoyWisp/HookPull/Vortex/Blink/LightZone). - BlinkState: predicted, non-replicated blink window (DashState sibling). - BlinkSystem: velocity blink (never a LocalTransform write), triggered by the Movement- archetype socket, dash-wins precedence ([UpdateAfter(DashSystem)]), sole writer of its socket's SocketCooldown row; reads socket loadout/cooldown by entity via lookups (query at 6 args, under the 7-cap). Baked BlinkState on the player. L1 clean; L2 494/494. Dead until a Blink Spark def is socketed (ability-database SO = next). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
1.4 KiB
C#
28 lines
1.4 KiB
C#
using Unity.Entities;
|
|
using Unity.Mathematics;
|
|
|
|
namespace ProjectM.Simulation
|
|
{
|
|
/// <summary>
|
|
/// Predicted, NON-replicated blink window on the owner-predicted player — the Movement-archetype Spark (a
|
|
/// second dash, socketed). A shape-sibling of <see cref="DashState"/>: re-simulated from the replicated
|
|
/// blink-socket InputEvent every predicted tick, so its own window (never <see cref="DashState"/>, which a
|
|
/// same-tick dash+blink would clobber). BlinkSystem drives a VELOCITY blink over the half-open
|
|
/// [StartTick, UntilTick) window and NEVER writes <c>LocalTransform</c> — the CC collide-and-slide processor
|
|
/// owns transform integration; a raw write tunnels the subscene-only Environment colliders and resets Scale.
|
|
/// Ticks routed through <c>TickUtil.NonZero</c>; compared via <see cref="Unity.NetCode.NetworkTick"/> only.
|
|
/// Baked all-zero (idle). NOT a <c>[GhostField]</c> (no player-ghost re-bake).
|
|
/// </summary>
|
|
public struct BlinkState : IComponentData
|
|
{
|
|
/// <summary>Planar XZ blink heading, captured at blink-start.</summary>
|
|
public float2 Dir;
|
|
|
|
/// <summary>Raw ServerTick at blink-start (NonZero). Lower (inclusive) bound of the blink window.</summary>
|
|
public uint StartTick;
|
|
|
|
/// <summary>StartTick + blink window (NonZero). Velocity override covers the HALF-OPEN [StartTick, UntilTick).</summary>
|
|
public uint UntilTick;
|
|
}
|
|
}
|