using Unity.Collections; using Unity.Mathematics; using Unity.NetCode; namespace ProjectM.Simulation { /// /// Twin-stick player input (server-authoritative, input-only clients). Gathered once per frame /// on the owning client in and streamed to the server via /// AutoCommandTarget. Netcode source-gen produces InputBufferData<PlayerInput> plus the /// copy/apply systems from this type. The [GhostField]s let remote owners be predicted; the /// data replays deterministically under rollback. /// public struct PlayerInput : IInputComponentData { /// WASD / left-stick movement, normalized to roughly -1..1 per axis. [GhostField(Quantization = 1000)] public float2 Move; /// Right-stick / cursor aim direction (normalized). Zero => face movement direction. [GhostField(Quantization = 1000)] public float2 Aim; public FixedString512Bytes ToFixedString() { var s = new FixedString512Bytes(); s.Append(Move.x); s.Append(','); s.Append(Move.y); s.Append(';'); s.Append(Aim.x); s.Append(','); s.Append(Aim.y); return s; } } }