recast-rs/
├── crates/
│ ├── landmark-common/ # Shared utilities, math, error types
│ ├── landmark/ # Navigation mesh generation
│ ├── waymark/ # Pathfinding and navigation queries
│ ├── waymark-crowd/ # Multi-agent crowd simulation
│ ├── waymark-tilecache/ # Dynamic obstacle management
│ ├── waymark-dynamic/ # Dynamic navmesh support
│ └── landmark-cli/ # Command-line tool
├── docs/ # This mdbook documentation
├── .github/workflows/ # CI: ci.yml, cross-build.yml
└── .cargo/config.toml # Build settings
Unit tests are inline #[cfg(test)] modules. Integration tests in crates/landmark/tests/ and crates/waymark/tests/. Examples in examples/. Benchmarks in per-crate benches/ directories.
C++ Module Rust Crate C++ Prefix Rust Module
Recast landmarkrclandmark::
Detour waymarkdtwaymark::
DetourCrowd waymark-crowddtwaymark_crowd::
DetourTileCache waymark-tilecachedtwaymark_tilecache::
DebugUtils landmark-common::debugdulandmark_common::debug::
(none) waymark-dynamic- waymark_dynamic::
The waymark-dynamic crate has no C++ equivalent. It extends the original
library with 7 collider types, async operations, and a checkpoint system.
Purpose Crate Notes
Vector math glam 0.30WASM-compatible, game-oriented
Error types thiserror 2.0Library error derivation
Bit flags bitflags 2.10PolyFlags, NavMeshFlags
Byte order byteorder 1.5C++ binary format compatibility
Logging log 0.4Logging facade
Float ordering ordered-float 5.1Ordered floats for collections
Timing web-time 1.1WASM-compatible Instant
Async (WASM) async-lock 3.4 + futures-lite 2.6Runtime-agnostic
Serialization serde 1.0 + postcard 1.1Optional feature
Compression lz4_flex 0.12Pure Rust LZ4, WASM-compatible
C++ Rust
floatf32
inti32
unsigned intu32
unsigned shortu16
unsigned charu8
float[3]glam::Vec3 or [f32; 3]
Raw pointer + size &[T] slice
Output parameter Return value or &mut T
rcAlloc/rcFreeBox<T> or Vec<T>
rcContext*RecastContext + log crate
Return bool + output param Return Result<T, E>
Null pointer check Option<T>
Virtual methods Trait objects
dtPolyQueryPolyQuery trait