#detour #binding #recast #query #nav-mesh

sys recast-detour-sys

Recast & Detour 库的简化 (仅 detour) Rust 绑定 (sys crate)

2 个版本

0.1.1 2019年5月6日
0.1.0 2019年4月25日

#7#recast

Download history 14/week @ 2024-03-29 3/week @ 2024-04-05

107 每月下载量

MIT 协议

1.5MB
30K SLoC

C++ 29K SLoC // 0.1% comments C 404 SLoC // 0.2% comments Rust 317 SLoC Lua 208 SLoC // 0.1% comments

recast-detour-rs — Latest Version

本项目不会且不会成为完整的 Recast & Detour 库。

本项目执行以下操作:

  • Detour 查询添加一个非常简单的 C-api。
  • 提供一个实际的 Rust crate 以提供更好的使用 (recast-detour-rs)
  • 一个增强的 obj 文件格式读取器,用于从文件中读取 NavMesh
  • Unity NavMesh 导出器的演示实现

基本用法


#[cfg(test)]
mod tests {
    use super::*;
    use insta::*;

    fn simple_mesh() -> NavMeshData {
        let vertices = vec![
            0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 10.0, 0.0, 10.0, 0.0, 0.0, 10.0,
        ];

        let indices = vec![0, 1, 2, 0, 2, 3];

        NavMeshData {
            vertices,
            indices,
            walkable_height: 0.2,
            walkable_radius: 0.2,
            walkable_climb: 0.2,
            cell_size: 0.1,
            cell_height: 0.1,
        }
    }

    #[test]
    fn test_simple_path() {
        assert_eq!("0.0.1", version());
        let mesh = simple_mesh();

        let q = RecastQuery::new_from_mesh(mesh).unwrap();
        let p = q
            .find_path((0.2, 0.1, 0.4).into(), (0.8, 0.1, 0.5).into(), 0.2)
            .unwrap();

        assert_debug_snapshot_matches!(p, @r###"Point(
    [
        0.29999924,
        0.0,
        0.29999924
    ]
)"###);
    }
}

无运行时依赖