WriteAnchoredTime stores the absolute value; ReadAnchoredTime re-bases it by the elapsed time since the loaded save started, so downtime does not age it and an unchanged value serializes to identical bytes. Min/MaxValue pass through unshifted and shifts saturate instead of overflowing. The shift rides the reader instance, so parallel per-persistence loads and single-file restores each see their own file's anchor. World.SaveStartTime is stamped the moment the world freezes for a snapshot - one anchor for the whole save - and written into the idx v5 header. Loading an idx v5 computes the shift and applies it to that persistence's bin readers; v4 and older carry no anchor and read with a zero shift, which existing hand-written-header tests already pin. Nothing serializes anchored values yet; field conversions follow separately. Covered by unit round-trip tests and an end-to-end persistence test that re-bases across a simulated two-hour downtime. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| Buffers | ||
| Client | ||
| Collections | ||
| Console | ||
| Geometry | ||
| Items | ||
| Json | ||
| Localization | ||
| Maps | ||
| Network | ||
| PropertyList | ||
| Serialization | ||
| Text | ||
| Timer | ||
| Utility | ||
| World | ||
| SerialTests.cs | ||