namespace NeonSprawl.Server.Game.PositionState; /// /// HTTP JSON body for GET /game/players/{{id}}/position. Consumers should read /// before interpreting other fields. /// /// /// Example v1 payload: /// /// {"schemaVersion":1,"playerId":"dev-local-1","position":{"x":0,"y":0,"z":0},"sequence":0} /// /// public sealed class PositionStateResponse { /// Schema version the server currently emits for this contract; increment when the shape or semantics change. public const int CurrentSchemaVersion = 1; /// Contract version; should match when produced by this API. public int SchemaVersion { get; init; } = CurrentSchemaVersion; /// Player id (echo of the route for sanity). public required string PlayerId { get; init; } /// Authoritative world position. public required PositionVector Position { get; init; } /// Monotonic-ish ordering hint for future sync; v1 is always 0. public ulong Sequence { get; init; } }