Skip to content

Commit 4748ef7

Browse files
committed
expose serialization endianness
1 parent 42f5d34 commit 4748ef7

File tree

7 files changed

+31
-12
lines changed

7 files changed

+31
-12
lines changed

src/Backdash/Session/Backends/LocalSession.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ SessionServices<TInput> services
6363
public int NumberOfSpectators => 0;
6464
public int FixedFrameRate => options.FrameRate;
6565
public int LocalPort => 0;
66+
public Endianness StateSerializationEndianness => endianness.Endianness;
67+
public Endianness InputSerializationEndianness => options.Protocol.SerializationEndianness;
6668
public INetcodeRandom Random => random;
6769

6870
public ReadOnlySpan<SynchronizedInput<TInput>> CurrentSynchronizedInputs => syncInputBuffer;

src/Backdash/Session/Backends/RemoteSession.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,9 @@ void Close()
200200
public SavedFrame GetCurrentSavedFrame() => synchronizer.GetLastSavedFrame();
201201
public int NumberOfPlayers => addedPlayers.Count;
202202
public int NumberOfSpectators => addedSpectators.Count;
203-
204203
public int LocalPort => udp.BindPort;
205-
204+
public Endianness StateSerializationEndianness => synchronizer.SerializationEndianness;
205+
public Endianness InputSerializationEndianness => options.Protocol.SerializationEndianness;
206206
public SessionMode Mode => SessionMode.Remote;
207207

208208
public IReadOnlySet<NetcodePlayer> GetPlayers() => addedPlayers;

src/Backdash/Session/Backends/ReplaySession.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ SessionServices<TInput> services
5151
random = services.DeterministicRandom;
5252
NumberOfPlayers = options.NumberOfPlayers;
5353
FixedFrameRate = options.FrameRate;
54+
InputSerializationEndianness = options.Protocol.SerializationEndianness;
5455
endianness = options.GetEndiannessNumberStateSerializer();
5556
callbacks = services.SessionHandler;
5657

@@ -94,10 +95,11 @@ public void Close()
9495
callbacks.OnSessionClose();
9596
}
9697

98+
public Endianness InputSerializationEndianness { get; }
99+
public Endianness StateSerializationEndianness => endianness.Endianness;
97100
public Frame CurrentFrame { get; private set; } = Frame.Zero;
98101
public FrameSpan RollbackFrames => FrameSpan.Zero;
99102
public FrameSpan FramesBehind => FrameSpan.Zero;
100-
101103
public bool IsInRollback => false;
102104
public SavedFrame GetCurrentSavedFrame() => stateStore.Last();
103105

src/Backdash/Session/Backends/SpectatorSession.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ sealed class SpectatorSession<TInput> :
4848
readonly IChecksumProvider checksumProvider;
4949
readonly EndiannessSerializer.INumberSerializer endianness;
5050

51-
public int FixedFrameRate { get; }
52-
5351
public SpectatorSession(
5452
SpectatorOptions spectatorOptions,
5553
NetcodeOptions options,
@@ -64,7 +62,6 @@ SessionServices<TInput> services
6462
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(options.FrameRate);
6563

6664
this.options = options;
67-
FixedFrameRate = this.options.FrameRate;
6865
hostEndpoint = spectatorOptions.GetHostEndPoint();
6966
jobManager = services.JobManager;
7067
random = services.DeterministicRandom;
@@ -155,6 +152,7 @@ public void Close()
155152
callbacks.OnSessionClose();
156153
}
157154

155+
public int FixedFrameRate => options.FrameRate;
158156
public Frame CurrentFrame { get; private set; } = Frame.Zero;
159157
public FrameSpan RollbackFrames => FrameSpan.Zero;
160158
public FrameSpan FramesBehind => FrameSpan.Zero;
@@ -164,7 +162,8 @@ public void Close()
164162
public int NumberOfPlayers { get; private set; }
165163
public int NumberOfSpectators => 0;
166164
public int LocalPort => udp.BindPort;
167-
165+
public Endianness StateSerializationEndianness => endianness.Endianness;
166+
public Endianness InputSerializationEndianness => options.Protocol.SerializationEndianness;
168167
public ReadOnlySpan<SynchronizedInput<TInput>> CurrentSynchronizedInputs => syncInputBuffer;
169168

170169
public ReadOnlySpan<TInput> CurrentInputs => inputBuffer;

src/Backdash/Session/Backends/SyncTestSession.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,13 @@ sealed class PlayerInputState
5757
Task backGroundJobTask = Task.CompletedTask;
5858
Frame lastVerified = Frame.Zero;
5959

60-
public int FixedFrameRate { get; }
61-
6260
readonly IReadOnlySet<NetcodePlayer> localPlayerFallback = new HashSet<NetcodePlayer>
6361
{
6462
new(0, PlayerType.Local),
6563
}.ToFrozenSet();
6664

65+
readonly NetcodeOptions options;
66+
6767
public SyncTestSession(
6868
SyncTestOptions<TInput> syncTestOptions,
6969
NetcodeOptions options,
@@ -75,7 +75,7 @@ SessionServices<TInput> services
7575
ArgumentNullException.ThrowIfNull(syncTestOptions);
7676
ArgumentOutOfRangeException.ThrowIfNegativeOrZero(syncTestOptions.CheckDistanceFrames);
7777

78-
FixedFrameRate = options.FrameRate;
78+
this.options = options;
7979
checkDistance = new(syncTestOptions.CheckDistanceFrames);
8080
logStateOnDesync = syncTestOptions.LogStateOnDesync;
8181
throwError = syncTestOptions.ThrowOnDesync;
@@ -101,7 +101,7 @@ SessionServices<TInput> services
101101
Callbacks = callbacks,
102102
};
103103

104-
endianness = options.GetEndiannessNumberStateSerializer();
104+
endianness = synchronizer.NumberSerializer;
105105
}
106106

107107
public void Dispose() => tsc.SetResult();
@@ -120,7 +120,9 @@ public async ValueTask DisposeAsync()
120120
public SessionMode Mode => SessionMode.SyncTest;
121121
public FrameSpan FramesBehind => synchronizer.FramesBehind;
122122
public FrameSpan RollbackFrames => synchronizer.RollbackFrames;
123-
123+
public int FixedFrameRate => options.FrameRate;
124+
public Endianness StateSerializationEndianness => endianness.Endianness;
125+
public Endianness InputSerializationEndianness => options.Protocol.SerializationEndianness;
124126
public ReadOnlySpan<SynchronizedInput<TInput>> CurrentSynchronizedInputs => syncInputBuffer;
125127

126128
public ReadOnlySpan<TInput> CurrentInputs => inputBuffer;

src/Backdash/Session/INetcodeSession.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ public interface INetcodeSessionInfo
6262
/// </summary>
6363
bool IsInRollback { get; }
6464

65+
/// <summary>
66+
/// Returns the state serialization <see cref="Endianness"/>
67+
/// <seealso cref="NetcodeOptions.StateSerializationEndianness"/>
68+
/// </summary>
69+
Endianness StateSerializationEndianness { get; }
70+
71+
/// <summary>
72+
/// Returns the input serialization <see cref="Endianness"/>
73+
/// <seealso cref="ProtocolOptions.SerializationEndianness"/>
74+
/// </summary>
75+
Endianness InputSerializationEndianness { get; }
76+
6577
/// <summary>
6678
/// Returns the last saved state.
6779
/// </summary>

src/Backdash/Synchronizing/Input/Synchronizer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public Synchronizer(
5757
float rollbackFrameCounter;
5858

5959
public Frame CurrentFrame => currentFrame;
60+
public EndiannessSerializer.INumberSerializer NumberSerializer => endianness;
61+
public Endianness SerializationEndianness => endianness.Endianness;
6062
public FrameSpan FramesBehind => new(currentFrame.Number - lastConfirmedFrame.Number);
6163
public FrameSpan RollbackFrames => new((int)Math.Round(rollbackFrameCounter));
6264

0 commit comments

Comments
 (0)