FixedMathSharp.Chronicler
8.0.0
dotnet add package FixedMathSharp.Chronicler --version 8.0.0
NuGet\Install-Package FixedMathSharp.Chronicler -Version 8.0.0
<PackageReference Include="FixedMathSharp.Chronicler" Version="8.0.0" />
<PackageVersion Include="FixedMathSharp.Chronicler" Version="8.0.0" />
<PackageReference Include="FixedMathSharp.Chronicler" />
paket add FixedMathSharp.Chronicler --version 8.0.0
#r "nuget: FixedMathSharp.Chronicler, 8.0.0"
#:package FixedMathSharp.Chronicler@8.0.0
#addin nuget:?package=FixedMathSharp.Chronicler&version=8.0.0
#tool nuget:?package=FixedMathSharp.Chronicler&version=8.0.0
FixedMathSharp.Chronicler
FixedMathSharp.Chronicler connects FixedMathSharp to Chronicler: exact
simulation-time conversions and deterministic ChronicleHashWriter extensions.
Use it for long-running simulation clocks, replay checks, and state
fingerprints.
Install
dotnet add package FixedMathSharp.Chronicler
Use
FixedMathSharp.Chronicler.Lean
when the rest of your application uses the FixedMathSharp Lean package graph.
Both variants target .NET Standard 2.1 and .NET 10.
Record hashes
using Chronicler.Hashing;
using FixedMathSharp;
using FixedMathSharp.Chronicler;
var writer = new ChronicleHashWriter();
writer.WriteVector3d(new Vector3d(10, 2, -4));
writer.WriteQuaternion(FixedQuaternion.Identity);
ChronicleHash hash = writer.ToHash();
Extensions cover Fixed64, vectors, quaternions, matrices, FixedTransform,
core bounds, rays, and planes. Each method writes fields in an explicit stable
order. Changing that order or the authoritative fields is a hash and replay
compatibility event.
WriteTransform hashes local position, local rotation, and local scale. Parent
identity and derived world values are intentionally excluded.
See the migration guide when upgrading existing consumers or changing shared diagnostics and hash imports.
Exact simulation-time conversions
FixedChronicleTime bridges Fixed64 seconds and
Chronicler.Timing.ChronicleDuration. Both have 32 fractional bits, so widening
preserves every raw bit, including negative fractions. Narrowing succeeds only
when the duration fits Fixed64; it never saturates or rounds.
Subtract timestamps before converting to Fixed64. This complete method measures a quarter second after 100 Julian years (365.25 days per year):
using Chronicler.Timing;
using FixedMathSharp;
using FixedMathSharp.Chronicler;
public static class TimingExample
{
public static Fixed64 MeasureInterval()
{
var start = new ChronicleTimestamp(3_155_760_000, 0);
var end = start + FixedChronicleTime.FromFixed64(Fixed64.FromRaw(0x40000000));
return FixedChronicleTime.ToFixed64(end - start); // Exactly 0.25 seconds.
}
}
A 100-year interval itself does not fit Fixed64. TryToFixed64 returns false
and a zero output for an out-of-range duration; ToFixed64 throws
OverflowException. Keep wide intervals as ChronicleDuration when narrowing
is unnecessary. There is deliberately no direct timestamp conversion.
GetFrameCountForDuration(duration, stepDuration) counts complete steps at the
supplied step size and returns a long, including results above int.MaxValue.
Duration must be nonnegative and step duration positive; invalid arguments throw
ArgumentOutOfRangeException. It divides the raw integers and floors the
result: no reciprocal multiplication, saturation, historical frame lookup, or
wait scheduling is involved. With a rounded 1/30-second step (143165577 raw
units), one second contains 29 complete steps; 30 steps require 4294967310 raw
units. Use the actual represented step, not an assumed exact decimal rate.
Chronicler owns clock advancement and wide time values; FixedMathSharp core remains independent of Chronicler's timing APIs. Hosts still own fixed-step execution, lifetime boundaries, and coordinated restore.
Learn more
FixedMathSharp.Chronicler is licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Chronicler.Core (>= 1.0.0)
- FixedMathSharp (>= 8.0.0)
-
net10.0
- Chronicler.Core (>= 1.0.0)
- FixedMathSharp (>= 8.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on FixedMathSharp.Chronicler:
| Package | Downloads |
|---|---|
|
Gravitas
High-performance, engine-agnostic fixed-point physics for deterministic 2D, 3D, and mixed-dimension lockstep games and simulations. |
GitHub repositories
This package is not used by any popular GitHub repositories.