@@ -11,27 +11,42 @@ public static class NetcodeSessionExtensions
1111 /// <summary>
1212 /// Returns the current state string representation
1313 /// </summary>
14+ public static string GetStateString < T > ( this INetcodeSession < T > @this , IStateStringParser ? parser = null )
15+ where T : unmanaged
16+ {
17+ var state = @this . GetCurrentSavedFrame ( ) ;
18+ var currentBytes = state . GameState . WrittenSpan ;
19+ return @this . GetStateString ( state . Frame , currentBytes , parser ) ;
20+ }
21+
22+ /// <summary>
23+ /// Returns string representation for given <paramref name="state"/>
24+ /// </summary>
1425 public static string GetStateString < T > (
1526 this INetcodeSession < T > @this ,
27+ StateSnapshot state ,
1628 IStateStringParser ? parser = null
17- ) where T : unmanaged =>
18- @this . GetStateString ( @this . GetCurrentSavedFrame ( ) , parser ) ;
29+ ) where T : unmanaged
30+ {
31+ var stateBytes = state . State . AsSpan ( 0 , ( int ) state . Size ) ;
32+ return @this . GetStateString ( state . Frame , stateBytes , parser ) ;
33+ }
1934
2035 /// <summary>
21- /// Returns string representation for given <paramref name="state "/>
36+ /// Returns string representation for given <paramref name="frame"/> and <paramref name="stateBytes "/>
2237 /// </summary>
23- public static string GetStateString < T > (
38+ static string GetStateString < T > (
2439 this INetcodeSession < T > @this ,
25- SavedFrame state ,
40+ Frame frame ,
41+ ReadOnlySpan < byte > stateBytes ,
2642 IStateStringParser ? parser = null
2743 ) where T : unmanaged
2844 {
2945 parser ??= JsonStateStringParser . Singleton ;
30- var currentOffset = 0 ;
31- var currentBytes = state . GameState . WrittenSpan ;
32- BinaryBufferReader currentReader = new ( currentBytes , ref currentOffset , @this . StateSerializationEndianness ) ;
33- var currentObject = @this . GetHandler ( ) . CreateState ( state . Frame , ref currentReader ) ;
34- return parser . GetStateString ( state . Frame , in currentReader , currentObject ) ;
46+ var offset = 0 ;
47+ BinaryBufferReader reader = new ( stateBytes , ref offset , @this . StateSerializationEndianness ) ;
48+ var stateObject = @this . GetHandler ( ) . CreateState ( frame , ref reader ) ;
49+ return parser . GetStateString ( frame , in reader , stateObject ) ;
3550 }
3651
3752 /// <summary>
0 commit comments