Skip to content

FixedMathSharp v4.0.0

Latest

Choose a tag to compare

@mrdav30 mrdav30 released this 18 May 17:08
· 2 commits to main since this release

FixedMathSharp 4.0.0 is a major geometry, transform, packaging, and reliability release. This version expands the deterministic fixed-point API with frustum, plane, ray, and 4D vector support while hardening several core math paths.

Breaking Changes

  • Removed the public IBound abstraction and generic Intersects(IBound) dispatch. Use the new strongly typed Contains(...) and Intersects(...) overloads on BoundingBox, BoundingArea, BoundingSphere, BoundingFrustum, FixedPlane, and FixedRay.
  • Renamed the no-MemoryPack build/package path from ReleaseNoMemoryPack / FixedMathSharp.NoMemoryPack to ReleaseLean / FixedMathSharp.Lean.

Added

  • Added BoundingFrustum with matrix/plane construction, containment checks, intersection checks, corners, planes, and clamp support.
  • Added FixedPlane, FixedPlaneIntersectionType, and ContainmentType for richer deterministic spatial queries.
  • Added FixedRay with intersections against planes, boxes, areas, spheres, and frustums.
  • Added Vector4d with arithmetic, comparisons, normalization, distance/dot helpers, matrix transforms, fuzzy equality helpers, JSON support, and MemoryPack support.
  • Added expanded Fixed4x4 transform helpers, including translation, rotation, scale, look-at, world, orthographic, perspective, inversion, point transforms, and Vector4d transforms.
  • Added Lean package output for FixedMathSharp.FluentAssertions.Lean.

Improved

  • Hardened BoundingBox, BoundingArea, BoundingSphere, and frustum behavior with typed containment/intersection APIs.
  • Hardened quaternion normalization, rotation, Euler conversion, division, interpolation, and matrix conversion behavior.
  • Improved Fixed4x4 affine handling and transform/inversion coverage.
  • Improved release automation with centralized archive output and a NuGet publishing workflow for standard and Lean packages.
  • Reorganized source files by domain while preserving the public FixedMathSharp namespace.

Fixed

  • Fixed a Fixed64 multiplication saturation edge case where overflow during rounded 128-bit shifting could wrap before saturation.
  • Fixed release-configuration test discrepancies, including Lean/MemoryPack-disabled scenarios.
  • Removed unreachable/dead bounding-sphere merge code surfaced during coverage hardening.

Quality

  • Expanded tests across geometry, bounds, matrices, quaternions, vectors, assertions, serialization-related paths, and Lean builds.
  • Added complexity exception documentation for intentionally complex performance-sensitive methods.
  • Refreshed README and contributor-facing guidance for the current API and release workflow.

Full Changelog: 1bec7da...be39470