using Unity.Entities; namespace ProjectM.Simulation { /// /// SERVER-ONLY homing reel on a Husk hit by a Reel-flagged (HookPull) projectile — the Harpooner's signature /// verb. A sibling of / (NOT a [GhostField]: the /// reeled position replicates via the stock LocalTransform variant, so it adds no replicated surface). Unlike /// the frozen-Dir pull flag, this HOMES: ReelSystem re-aims the Husk's /// toward the caster's CURRENT position every server tick until the target is within release range or /// elapses — EnemyAISystem stays the SOLE Position writer (it drives the /// re-aimed knockback; ReelSystem only writes the Dir/Speed/UntilTick). Baked inert on Husk variants /// (EnemyAuthoring). Stores the caster's (not an Entity) so ReelSystem /// resolves the live caster position via a per-tick player-by-NetworkId gather. Ticks via /// ; compared with only. /// public struct ReelState : IComponentData { /// NetworkId of the reeling caster; ReelSystem homes toward this player's live position. public int CasterNetworkId; /// Reel pull speed (world units/sec) written into KnockbackState.Speed each tick. public float Speed; /// Raw tick the reel leash ends (NonZero). 0 = not reeling; active while .IsNewerThan(serverTick). public uint ExpireTick; } }