Releases: mrdav30/GridForge
Releases · mrdav30/GridForge
GridForge v7.1.4
Highlights
- Added allocation-conscious
GridTracer.TraceLineInto(...)APIs that write directly into caller-ownedSwiftList<Voxel>buffers. - Added
GridTraceScratchoverloads so hot paths can reuse trace scratch state instead of relying on per-call pooled scratch. - Added 2D X/Z tracing overloads with explicit
layerYsupport 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
Added
- Added deterministic traversal helpers for GridForge-backed broad-phase and coverage consumers:
GridTraversalGridTraversalStateGridTraversalPaddingMode
- 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/SwiftCollections5.0.2.
Validation
- Added focused tests for unique traversal, padded bounds checks, and topology-aware cell edge behavior.
GridForge v7.1.1
Fixed
- Fixed
NormalizeBoundssnapping 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
Added
- Added public
VoxelGrid.NormalizeBounds(...)for topology-aligned bounds normalization. - Added
GridTracer.GetCoveredVoxelsInto(...)overloads for caller-owned covered voxel results. - Added
GridTraceScratchfor 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
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
VoxelGridmodel. - Added sparse grid construction, configured-only lookup, and runtime sparse add/remove.
- Added
Vector2dXZ-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:
GridForge v6.0.6
Dependency Updates
- bumped
SwiftCollectionsto v4.1.1
GridForge v6.0.5
Fixed
- Reduced steady-state allocations in
PartitionProviderby 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
SwiftCollectionsandSwiftCollections.Leandependencies tov4.1.0.
Documentation And Tooling
- Refreshed the README to better explain GridForge’s conjoined-grid, explicit-world model and developer-facing value.
- Updated
AGENTS.mdand 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-testworkflow name.
GridForge v6.0.4
Highlights
- Updated core dependencies to
FixedMathSharp 4.0.0andSwiftCollections 4.0.5. - Switched the lean build dependency from
FixedMathSharp.NoMemoryPacktoFixedMathSharp.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
GridTracercoverage traversal and trace-line setup for clearer pooled-state handling. - Split
GridWorldlifecycle, 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
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.Nonewith debug logging instead of relying only on debug assertions.
Performance
- Removed boxing/unboxing paths from hash code generation in
WorldVoxelIndex,VoxelGrid, andBoundsKey. - Refactored
GridTracerline 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
GridForgeandGridForge.Lean, verifies package and symbols artifacts, uploads build artifacts, and publishes to NuGet. - Updated
SwiftCollectionsandSwiftCollections.Leandependencies to4.0.4across 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
InternalsVisibleTofor 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
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 reusableGridScanScratchstorage. - Added
GridTracer.GetCoveredScanCellsInto(...)for caller-owned scan-cell collection. - Added
GridForgeLogger.DebugChannelandEnableDebugLoggingfor 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
SwiftCollectionsandSwiftCollections.Leanfrom4.0.2to4.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
Releaseconfiguration.
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.