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

recast-detour-rs

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

5个版本

0.2.0 2023年5月3日
0.1.3 2019年5月6日
0.1.2 2019年5月6日
0.1.1 2019年5月6日
0.1.0 2019年4月25日

#2 in #recast

Download history 9/week @ 2024-04-02

每月下载 239

MIT 许可证

24KB
596 代码行

recast-detour-rs — 最新版本

本项目不是也不会是一个完整的Recast & Detour库。

本项目完成以下工作

  • Detour 查询添加一个非常简单的c-api。
  • 提供了一个真正的Rust包,以提供更好的使用 (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
    ]
)"###);
    }
}

依赖关系

~1.6–3.5MB
~81K SLoC