#path-finding #navigation #mesh #detour #recast

sys recastnavigation-sys

recastnavigation的原始FFI绑定

4个稳定版本

1.0.3 2024年1月11日
1.0.2 2023年9月30日
1.0.1 2023年5月6日
1.0.0 2023年5月1日

#1695游戏开发


3 个 crate 使用

自定义许可证

1.5MB
40K SLoC

C++ 38K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments C 404 SLoC // 0.2% comments JavaScript 225 SLoC // 0.4% comments Lua 223 SLoC // 0.1% comments

recastnavigation-sys

recastnavigation的原始Rust绑定,包括Recast、Detour、DetourCrowd和DetourTileCache。

crate 结构

这些是recastnavigation中所有库的原始FFI绑定。每个库都通过具有相应名称的功能标志来启用

  • recast -> Recast
  • detour -> Detour
  • detour_crowd -> DetourCrowd
  • detour_tile_cache -> DetourTileCache

除了库功能标志外,还有“额外功能”。目前,这些是

  • detour_large_nav_meshes - 启用64位dtPolyRefs,允许Detour(及其依赖项)有更大的导航网格。注意这意味着Detour周围的包装器应该知道dtPolyRefs可以有不同的大小,或者具有对预期dtPolyRef大小的静态断言,或者确保您的包装器可以处理两种dtPolyRef大小。

查找与供应商

默认情况下,此crate将首先使用pkgconfig查找recastnavigation。如果找不到recastnavigation,此crate将从recastnavigation目录(即供应商)构建它。

要始终供应商,请将环境变量中的 RECAST_VENDOR=true 设置为true。这不会搜索系统安装的recastnavigation,而是始终从crate中的源构建recastnavigation。

要永不供应商,请将环境变量中的 RECAST_NO_VENDOR=true 设置为true。这将搜索系统安装的recastnavigation,如果缺失,则构建此crate将失败。注意这优先于 RECAST_VENDOR=true

版本控制

遗憾的是,recastnavigation 没有固定的发布流程。首先这意味着从 pkgconfig 中要求特定版本是不可靠的——希望编译错误会清楚地表明 recastnavigation 已过时。其次,这个crate的版本号并不能真正追踪 recastnavigation 的版本。目标是使用语义版本控制来跟踪 recastnavigation 的变更,尽管实际上并不是 recastnavigation 的每个提交都对应这个crate的一个版本。如果需要,应该通过问题报告来请求提升 recastnavigation 的版本。

许可证

MIT 许可证 下授权。这并不扩展到 recastnavigation 目录,该目录包含 recastnavigation 项目的内容(作为一个Git子模块)。

依赖项