Skip to content

Releases: ikpil/DotRecast

2026.1.3

28 Feb 04:43

Choose a tag to compare

What's Changed

  • [upstream] Fix crash on large-scale navmesh generation (assert trigge… (#119) @ikpil
  • [upstream] When attempting to add a span that is invalid (zero or neg… (#118) @ikpil
  • [upstream] Document span range values inclusivity/exclusivity (#117) @ikpil
  • Pr/upgrade serilog (#116) @ikpil

Full Changelog: 2026.1.2...2026.1.3

2026.1.2

08 Feb 08:48

Choose a tag to compare

What's Changed

  • Pr/sample geom provider (#115) @ikpil
  • feat: add RcVec2i and RcVec3i structs with unit tests (#114) @ikpil
  • refactor: replace Task.WaitAll with atomic counter for thread throttl… (#113) @ikpil
  • Silk.NET 2.23.0 (#112) @ikpil
  • refactor: remove ref parameters from OverlapQuantBounds (#111) @ikpil
  • refactor: use 'in' modifier for struct parameters to avoid unnecessar… (#109) @ikpil

Full Changelog: 2026.1.1...2026.1.2

2026.1.1

03 Jan 04:34

Choose a tag to compare

What's Changed

[2026.1.1] - 2026-01-03

Added

Fixed

Changed

  • Support .NET 10 (@ikpil)
  • Refactor: RcRecast.GetCon to use in parameter modifier (@ikpil)
  • Refactor: RcMatrix4x4f to use 'in' modifier and enforce CS9191 (@ikpil)
  • Refactor: Moved RcCollectionExtensions to the Extensions namespace to resolve naming conflicts (@ikpil)
  • Refactor: Added Rc and Dt prefixes to classes to maintain consistency and prevent naming conflicts (@ikpil)
  • Upgrade Microsoft.NET.Test.Sdk to 18.0.1 (@ikpil)
  • Upgrade NUnit to 4.4.0 (@ikpil)
  • Upgrade NUnit3TestAdapter to 6.0.1 (@ikpil)
  • Upgrade NUnit.Analyzers to 4.11.2 (@ikpil)
  • Upgrade BenchmarkDotNet to 0.15.8 (@ikpil)
  • Upgrade Serilog.Settings.Configuration to 10.0.0 (@ikpil)
  • Upgrade Serilog.Sinks.Console to 6.1.1 (@ikpil)
  • Upgrade Newtonsoft.Json to 13.0.4 (@ikpil)
  • Upgrade actions/checkout@v6 (@ikpil)

Removed

  • Removed m_tileCount (@ikpil)

Special Thanks

Full Changelog: 2025.2.1...2026.1.1

2025.2.1

01 Jun 03:40

Choose a tag to compare

[2025.2.1] - 2025-06-01

Added

  • Nothing

Fixed

  • Nothing

Changed

  • Refactor FindFollowPath to use Span for better performance and safety (#100) @ikpil
  • Refactor QueryPolygonsInTile to use Span for memory reuse (#99) @ikpil
  • Replaced List with Span to reduce heap memory usage (#98) @ikpil
  • Pr/remove list in raycast hit (#97) @ikpil
  • revmoe RcArrayBenchmarkTests (#96) @ikpil
  • changed PriorityQueueBenchmarks (#95) @ikpil
  • change to ToVec3 for .NET Standard 2.1 Numerics compatibility (#94) @ikpil
  • optimize DtConvexConvexIntersections.Intersect (#93) @ikpil
  • Pr/optimize circle constraint (#92) @ikpil
  • refactor(imgui): determined whether the mouse is on the UI through WantCaptureMouse property (#88) @sssooonnnggg
  • feat(debug-draw): add an option to render meshes in a left-handed coordinate system (#86) @sssooonnnggg
  • Nothing

Removed

  • Nothing

Special Thanks

Full Changelog: 2024.4.1...2025.2.1

2024.4.1

19 Nov 15:05

Choose a tag to compare

[2024.4.1] - 2024-11-19

Added

Fixed

Changed

  • Changed data structure of 'neis' from List to byte[] for optimized memory usage and improved access speed in DtLayerMonotoneRegion
  • Changed new RcVec3f[3] to stackalloc RcVec3f[3] in DtNavMesh.GetPolyHeight() to reduce heap allocation
  • Changed memory handling to use stackalloc in DtNavMeshQuery.GetPolyWallSegments for reducing SOH
  • Changed DtNavMeshQuery.GetPolyWallSegments() to use Span for enhanced performance, memory efficiency.
  • Changed bmin/bmax from int[] to RcVec3i for improved memory efficiency

Removed

  • Nothing

Special Thanks

Full Changelog: 2024.3.1...2024.4.1

2024.3.1

08 Jul 15:12

Choose a tag to compare

[2024.3.1] - 2024-07-09

Added

  • Nothing

Fixed

  • Fixed bug where the dynamic voxel save file browser doesn't appear in Recast.Demo

Changed

  • Changed to reuse samples and edges list in BuildPolyDetail()
  • Changed heights, areas, cons, and regs arrays to byte arrays for uniformity and efficiency in DtTileCacheLayer
  • Changed reg, area arrays to byte arrays for uniformity and efficiency in DtTileCacheContour
  • Changed RcChunkyTriMesh to separate the function and variable.
  • Changed to consolidate vector-related functions into one place.
  • Changed stack handling from List to a fixed-size array with manual index management for optimization in RcLayers.BuildHeightfieldLayers()
  • Changed to use Span and stackalloc for improved performance and memory management in RcLayers.BuildHeightfieldLayers()
  • Changed vertCount and triCount to byte in DtPolyDetail
  • Changed new float[] to stackalloc float[] in DtConvexConvexIntersections.Intersect()
  • Changed agents management from list to dictionary in DtCrowd
  • Changed to efficiently stack nearby DtCrowdAgents in DtCrowd.GetNeighbours()
  • Changed to limit neighbor search to a maximum count and use array for memory efficiency in DtCrowd.AddNeighbour()

Removed

  • Removed RcMeshDetails.VdistSq2(float[], float[])
  • Removed RcVecUtils.Dot()
  • Removed RcVecUtils.Scale()
  • Removed RcVecUtils.Subtract(RcVec3f i, float[] verts, int j)
  • Removed RcVecUtils.Subtract(float[] verts, int i, int j)
  • Removed RcVecUtils.Min(), RcVecUtils.Max()
  • Removed RcVecUtils.Create(float[] values)
  • Removed RcVecUtils.Dot2D(this RcVec3f this, Span v, int vi)

Special Thanks

Full Changelog: 2024.2.3...2024.3.1

2024.2.3

03 Jun 14:34

Choose a tag to compare

[2024.2.3] - 2024-06-03

Added

  • Added DtCollectPolysQuery and FindCollectPolyTest

Fixed

  • Nothing

Changed

  • Changed IDtPolyQuery interface to make Process() more versatile
  • Changed PolyQueryInvoker to DtActionPolyQuery
  • Changed DtTileCacheBuilder to a static class
  • Changed DtTileCacheLayerHeaderReader to a static class
  • Changed Dictionary<int, List<DtMeshTile>> to DtMeshTile[] to optimize memory usage
  • Changed MAX_STEER_POINTS from class constant to local.
  • Changed List<DtStraightPath> to Span<DtStraightPath> for enhanced memory efficiency
  • Changed DtWriter to a static class and renamed it to RcIO
  • Changed class Trajectory to interface ITrajectory

Removed

  • Nothing

Special Thanks

PR

  • Changed List<DtStraightPath> to Span<DtStraightPath> for enhanced… (#70) @ikpil
  • Changed Dictionary<int, List<DtMeshTile>> to DtMeshTile[] to opti… (#69) @ikpil
  • Changed IDtPolyQuery interface to make Process() more versatile (#68) @ikpil

Full Changelog: 2024.2.2...2024.2.3

2024.2.2

18 May 00:23

Choose a tag to compare

[2024.2.2] - 2024-05-18

Added

  • Added RcSpans UnitTest

Changed

  • Changed class name of static functions to RcRecast and DtDetour
  • Changed DtLink class member variable type from int to byte
  • Changed initialization in DtNavMesh constructor to Init() function.

Special Thanks

PR

  • Pr/index to first link in linked list v2 (#67) @ikpil

Full Changelog: 2024.2.1...2024.2.2

2024.2.1

04 May 01:03

Choose a tag to compare

[2024.2.1] - 2024-05-04

Added

  • Added RcCircularBuffer @ikpil
  • Added struct DtCrowdScopedTimer to avoid allocations in scoped timer calls. @wrenge
  • Added struct RcScopedTimer to avoid allocations in RcContext scoped timer @ikpil
  • Added RcSpans @ikpil

Fixed

  • SOH issue #14
  • Optimization: reduce number of allocations on hot path. @awgil

Changed

  • Changed DtPathCorridor.Init(int maxPath) function to allow setting the maximum path @ikpil
  • Changed from List to RcCyclicBuffer in DtCrowdTelemetry execution timing sampling @wrenge
  • RcCyclicBuffer optimizations @wrenge

Removed

Special Thanks

PR

  • Optimization: reduce number of allocations on hot path in RcRasterizations.DividePoly (#62) @awgil
  • SIMD for CyclicBuffer aggregation (#58) @wrenge
  • CyclicBuffer optimizations (#55) @wrenge
  • Avoid allocation in ScopedTimer call (#54) @wrenge
  • Pr/fix telemetry memcpy (#53) @ikpil

Full Changelog: 2024.1.3...2024.2.1

2024.1.3

13 Feb 04:55

Choose a tag to compare

[2024.1.3] - 2024-02-13

Added

  • Added DtNodeQueue UnitTest @ikpil
  • Added RcSortedQueue UnitTest @ikpil
  • Added IComparable interface to RcAtomicLong @ikpil
  • Added Menu bar in Demo @ikpil

Changed

  • Update Microsoft.NET.Test.Sdk 17.8.0 to 17.9.0
  • Enhanced ToString method of DtNode to provide more detailed information.
  • Reuse DtNode in DtNodePool

Special Thanks

Full Changelog: 2024.1.2...2024.1.3