Skip to content

Releases: mrdav30/FixedMathSharp

FixedMathSharp v2.1.1

01 Apr 22:12

Choose a tag to compare

v2.1.1 is a hardening release focused on correctness, packaging reliability, and overall library quality.

This update adds a few small API improvements, including component-wise epsilon helpers for Vector2d and Vector3d, a convenience Fixed4x4.NormalizeRotationMatrix() extension, and a new companion package, FixedMathSharp.FluentAssertions, for reusable assertions in downstream test projects.

It also fixes several edge cases uncovered during the hardening pass: negative midpoint rounding in FixedMath.Round, clamped-dot handling in Vector3d.Slerp, FixedCurve nullability and small-array construction issues that triggered MemoryPack warnings, and incomplete hashing in Fixed4x4.GetHashCode. On the packaging side, .NET Standard 2.1 dependency handling was cleaned up and the temporary JSON shim was removed in favor of explicit System.Text.Json dependency handling.

Internally, BoundingArea.Intersects, BoundingBox.Intersects, and Vector3d.ClosestPointsOnTwoLines were refactored to reduce complexity without changing behavior, and an unreachable branch in FixedTrigonometry.Pow2 was removed. Along the way, test coverage was expanded substantially across the core math surface, and the repository now publishes coverage reports as part of the project’s documentation and release quality bar.

FixedMathSharp v2.1.0

07 Mar 14:55

Choose a tag to compare

This release focuses on serialization cleanup and compatibility rather than numeric behavior changes.

Refactor

  • Improved serialization support across core numerics and bounds types, including Fixed64, vectors, matrices, quaternions, ranges, curves, BoundingArea, BoundingBox, and BoundingSphere.
  • Added explicit System.Text.Json metadata so JSON round-trips no longer depend on IncludeFields or IgnoreReadOnlyProperties.
  • Added non-.NET 8 JSON attribute shims to keep serialization annotations working across older target frameworks.
  • Simplified BoundingBox serialization to a state-based payload using Min and Max, removing the old versioned serialization field.
  • Expanded JSON and MemoryPack round-trip test coverage for the affected types.
  • Added .editorconfig and normalized formatting across the touched files.

Migration Note

If you relied on BoundingBox’s old (min, max, version) constructor or serialized Version field, update to the new state-based contract.

FixedMathSharp v2.0.0

04 Mar 05:49
ecc188b

Choose a tag to compare

Breaking changes

  • Dropped .NET Framework 4.8 support.
  • Added/standardized support on netstandard2.1 (with net8 retained).
  • Serialization stack changed from MessagePack to MemoryPack.

Updated tooling/runtime settings

  • C# language version bumped to 11.0.
  • Test project modernized:
    • moved to net8
    • updated test SDK/packages (including xUnit v3-related packages and newer test tooling).

Internal/maintenance

  • Added basic AGENTS.md.
  • Minor hash code implementation cleanup in core numeric structs (no API expansion, but behavior may differ for hash-based scenarios).

What's Changed

Full Changelog: v1.3.4...2.0.0

FixedMathSharp v1.3.4

12 Feb 17:15
973b4b1

Choose a tag to compare

  • BugFix
    • refactored BoundingBox to use a canonical min/max representation internally
      • removes dual-state risk of tracking scope and size separately

FixedMathSharp v1.3.3

01 Oct 02:22
b3971a3

Choose a tag to compare

  • New Features
    • Added new DeterministicRandom struct.
      • Switched to using xoroshiro128++ with splitmix64 seeding to ensure no allocations, no time/GUID.
  • Notice
    • Marked ThreadLocalRandom obsolete
      • DeterministicRandom gives explicit, reproducible streams keyed to your world/feature, independent of threading.

FixedMathSharp v1.3.2

11 Jul 15:45

Choose a tag to compare

  • BugFix
    • Updated intersection logic to correctly detect intersections between flat (zero-thickness) BoundingAreas in any primary plane.
      • Previously, coplanar and edge-touching areas were not recognized as intersecting due to 3D AABB logic.
      • Now uses 2D overlap checks when both bounds are flat in the same axis.

Full Changelog: v1.3.1...v1.3.2

FixedMathSharp v1.3.1

20 Jun 17:47

Choose a tag to compare

FixedMathSharp v1.3.0

14 Jun 19:42

Choose a tag to compare

  • New Features

    • Generic Clamp Utility
      • Added Clamp(T value, T min, T max) for general-purpose clamping across comparable types (fills a missing gap in .NET 4.8).
  • Refactors

    • Fixed64 Clamp Overload Updated
      • Removed nullable max overload to avoid ambiguity with new generic version.
      • Replaced with Clamp(Fixed64 value, Fixed64 min, Fixed64 max) for explicit and more performant clamping.

FixedMathSharp v1.2.3

07 Jun 03:10

Choose a tag to compare

  • Expanded Vector2d, Vector3d & Fixed64 operators
  • Fixed issue with Vector3d.ClampMagnitude
  • Added indexer for Fixed3x3 & Fixed4x4
  • Added zeroed out FixedQuaternion & Fixed4x4

FixedMathSharp v1.2.2

11 Mar 05:08

Choose a tag to compare

  • Improved Trigonometric Functions – Enhanced Sin precision and and in turn Cos.
  • Better Quaternion & Vector Normalization – Fixed rounding errors and ensured proper unit magnitudes.
  • Added Helper Methods – Streamlined common math operations for better performance and maintainability.

For details, see PR #35. 🚀