Skip to content

Releases: mrdav30/GridForge

GridForge v7.1.4

24 Jun 22:42

Choose a tag to compare

Highlights

  • Added allocation-conscious GridTracer.TraceLineInto(...) APIs that write directly into caller-owned SwiftList<Voxel> buffers.
  • Added GridTraceScratch overloads so hot paths can reuse trace scratch state instead of relying on per-call pooled scratch.
  • Added 2D X/Z tracing overloads with explicit layerY support and parity with the existing 3D trace behavior.
  • Added regression coverage for result clearing, null validation, inactive worlds, enumerable parity, and 2D/3D trace consistency.
  • Updated SwiftCollections package dependencies to v5.1.1, including Lean variants.
  • Added the ReleaseLean benchmark define for MemoryPack-disabled benchmark validation.

GridForge v7.1.2

20 Jun 04:20

Choose a tag to compare

Added

  • Added deterministic traversal helpers for GridForge-backed broad-phase and coverage consumers:
    • GridTraversal
    • GridTraversalState
    • GridTraversalPaddingMode
  • Added topology-aware cell edge metrics through GridTopologyMetricUtility.
  • Added duplicate-safe traversal support via voxel spawn-token suppression.
  • Added padded bounds helpers for both full 3D and X/Z planar traversal.
  • Documented traversal padding and duplicate suppression in the GridTracer coverage wiki.

Changed

  • Updated standard and Lean dependencies to FixedMathSharp / SwiftCollections 5.0.2.

Validation

  • Added focused tests for unique traversal, padded bounds checks, and topology-aware cell edge behavior.

GridForge v7.1.1

17 Jun 03:23

Choose a tag to compare

Fixed

  • Fixed NormalizeBounds snapping for negative fractional coordinates in rectangular prism grids.
  • Fixed hex prism Y-layer normalization so negative layer bounds expand outward correctly.
  • Corrected voxel coverage behavior for negative-side bounds, including blocker/query coverage that previously could miss edge voxels.

GridForge v7.1.0

16 Jun 22:57

Choose a tag to compare

Added

  • Added public VoxelGrid.NormalizeBounds(...) for topology-aligned bounds normalization.
  • Added GridTracer.GetCoveredVoxelsInto(...) overloads for caller-owned covered voxel results.
  • Added GridTraceScratch for allocation-sensitive repeated coverage queries.

Improved

  • Updated migration and GridTracer docs with guidance for downstream libraries.
  • Improved local project-reference compatibility for consumer solution builds.

GridForge v7.0.0

16 Jun 18:12

Choose a tag to compare

GridForge v7 is a breaking release focused on making the core grid model storage-neutral, topology-aware, and easier to adapt for tools and engine integrations.

Highlights

  • Added per-grid topology metrics for rectangular-prism and hex-prism grids.
  • Added dense and sparse voxel storage behind the same VoxelGrid model.
  • Added sparse grid construction, configured-only lookup, and runtime sparse add/remove.
  • Added Vector2d XZ-plane convenience APIs for lookup, tracing, scans, blockers, and obstacles.
  • Added hex-prism topology with pointy-top and flat-top orientation support.
  • Reworked neighbor APIs into topology-neutral contact queries and topology-specific directed lookup.
  • Added closest grid/voxel query helpers.
  • Added engine-agnostic diagnostics for cell traversal, sparse-hole descriptors, topology geometry, and dirty sessions.
  • Hardened tracing, coverage, blockers, scans, and mixed-topology behavior.

Breaking Changes

This release replaces several v6 assumptions: GridWorld no longer owns voxel size, VoxelGrid.Voxels is no longer public, and rectangular-only neighbor APIs were replaced with the new contact/directed neighbor model.

Before upgrading, read the migration guide:

Migration Guide

GridForge v6.0.6

30 May 02:38

Choose a tag to compare

Dependency Updates

  • bumped SwiftCollections to v4.1.1

GridForge v6.0.5

26 May 04:46

Choose a tag to compare

Fixed

  • Reduced steady-state allocations in PartitionProvider by preserving its backing dictionary after the last partition is removed, improving repeated remove/re-add workflows.
  • Added regression coverage to verify partition storage reuse stays allocation-conscious.

Changed

  • Updated SwiftCollections and SwiftCollections.Lean dependencies to v4.1.0.

Documentation And Tooling

  • Refreshed the README to better explain GridForge’s conjoined-grid, explicit-world model and developer-facing value.
  • Updated AGENTS.md and wiki docs to match current package variants, nullable settings, CI configurations, and occupant API usage.
  • Fixed the GitHub wiki sync workflow to listen for the current build-and-test workflow name.

GridForge v6.0.4

19 May 15:35

Choose a tag to compare

Highlights

  • Updated core dependencies to FixedMathSharp 4.0.0 and SwiftCollections 4.0.5.
  • Switched the lean build dependency from FixedMathSharp.NoMemoryPack to FixedMathSharp.Lean.
  • Reduced core method complexity across grid registration, tracing, blockers, occupants, scan cells, voxel reset, and neighbor lookup paths.
  • Optimized neighbor-direction offset resolution with direct lookup instead of linear scanning.
  • Documented remaining intentional complexity exceptions.

Improvements

  • Decomposed GridTracer coverage traversal and trace-line setup for clearer pooled-state handling.
  • Split GridWorld lifecycle, lookup, registration, removal, and overlap helpers into smaller units.
  • Simplified blocker apply/remove flow while preserving cached coverage behavior.
  • Split occupant tracking mutation paths and scan-cell occupant filtering helpers.
  • Improved voxel/grid reset structure and pooled cleanup paths.

Documentation and CI

  • Normalized wiki links for GitHub wiki publishing.
  • Added a tested wiki-link rewrite helper to the sync workflow.
  • Centralized release archive output under artifacts/releases.
  • Renamed and cleaned up build/test workflow configuration.

Full Changelog: v6.0.3...v6.0.4

GridForge v6.0.3

11 May 06:07

Choose a tag to compare

This patch release focuses on allocation-free hashing, release automation, dependency alignment, and test coverage hardening.

Fixed

  • Fixed an allocation issue in WorldVoxelIndex.GetHashCode() by hashing voxel indices explicitly.
  • Hardened invalid grid-direction offset handling so invalid offsets return SpatialDirection.None with debug logging instead of relying only on debug assertions.

Performance

  • Removed boxing/unboxing paths from hash code generation in WorldVoxelIndex, VoxelGrid, and BoundsKey.
  • Refactored GridTracer line tracing internals to reduce complexity while preserving pooled collection cleanup behavior.

Packaging and Release

  • Added a NuGet publish workflow triggered by GitHub release publication.
  • Release publishing now validates GitVersion tag consistency, builds GridForge and GridForge.Lean, verifies package and symbols artifacts, uploads build artifacts, and publishes to NuGet.
  • Updated SwiftCollections and SwiftCollections.Lean dependencies to 4.0.4 across library, tests, and benchmarks.

Quality

  • Expanded unit coverage around grid lifecycle behavior, spatial lookup paths, scan radius overloads, tracer entry points, logger wrappers, and scan-cell no-op behavior.
  • Added InternalsVisibleTo for tests and benchmarks.
  • Centralized build-output ignore rules at the repository root.

Full reviewed range: v6.0.2..521b7cf, covering commits 0fd1e60 through 521b7cf.

GridForge v6.0.2

07 May 15:54

Choose a tag to compare

Patch release focused on lower-allocation scan hot paths and updated diagnostics.

Added

  • Added allocation-conscious GridScanManager.ScanRadiusInto(...) overloads for caller-owned result buffers, including typed results and reusable GridScanScratch storage.
  • Added GridTracer.GetCoveredScanCellsInto(...) for caller-owned scan-cell collection.
  • Added GridForgeLogger.DebugChannel and EnableDebugLogging for gated verbose diagnostics.

Improved

  • Reduced steady-state allocations in radius scans by avoiding iterator/LINQ paths and reusing caller-provided scratch storage.
  • Migrated GridForge logging onto SwiftCollections.Diagnostics.
  • Updated SwiftCollections and SwiftCollections.Lean from 4.0.2 to 4.0.3.

Testing & CI

  • Added tests for allocation-free scan APIs, typed scan filtering, and debug-channel logging behavior.
  • Updated CI and coverage workflows to build and test in Release configuration.

Migration Note

  • GridForge’s local diagnostic shim types/extensions were removed in favor of SwiftCollections.Diagnostics. Consumers using those helpers directly should migrate to the SwiftCollections equivalents.