#add-on #bindings #simulator #sdk #spaceflight #vessel #orbiter

orbiter-rs

Rust 对 Orbiter 空间飞行模拟器 SDK 的绑定

4 个版本

0.2.2 2022年1月30日
0.2.1 2022年1月29日
0.2.0 2022年1月29日
0.1.0 2022年1月13日

161 in 模拟

MIT 许可证

390KB
1.5K SLoC

orbiter-rs — Orbiter SDK 的 Rust 绑定

Crates.io MIT licensed Docs.rs

此库是为了在 Rust 中开发 Orbiter 空间飞行模拟器的插件而创建的。它使用 cxx crate 来创建 Orbiter SDK 的 Rust 绑定。一个使用这些绑定构建的相当复杂的插件,包括一个着陆引导系统,可以在以下位置找到:https://github.com/thomasantony/surveyor

实现

现在可以将该存储库导入并像库一样使用。一个示例实现可以在 examples/Surveyor/surveyor.rs 中找到。一个插件模块必须包含一个实现 OrbiterVessel 特质的 struct。然后必须使用 init_vessel! 宏来生成将其链接到 Orbiter SDK 的代码。例如

init_vessel!(
    fn init(vessel) {
        Surveyor::new(vessel)
    }
    fn exit() {}
);

Orbiter Rust 插件的生命周期

待办事项

构建

  1. 下载/安装 Orbiter
  2. 安装 Visual Studio 2019
  3. 使用 rustup 安装 Rust (https://rustup.rs)
  4. 运行 rustup target add i686-pc-windows-msvc 安装 win32 目标

此插件已在 Windows 10 上与 Rust 1.57.0 和 Visual Studio 2019 Community Edition 进行了测试。运行 cargo build 应该会构建项目并生成一个 DLL 文件。

安装和测试插件

构建插件后,您应该在 target/i686-pc-windows-msvc/debug/examples/ 中有一个名为 Surveyor.dll 的文件。将此文件复制到您的 Orbiter 安装目录中的 Modules 文件夹。还将 ConfigMeshesScenarios 文件夹中的文件复制到 Orbiter 安装目录中相应的文件夹。在 Orbiter 中启动 SurveyorInOrbit 场景,确保航天器出现。按下 "L" 应该会激活反推力器点火序列。

未来

目前只有有限的Orbiter功能可以通过Rust绑定使用。这个列表未来会扩展,希望包括Orbiter SDK的所有功能。欢迎提交Pull requests!

网格

演示插件中的网格是从Surveyor 1.0 Orbiter 插件改编而来的。这些网格是基于https://www.orbiterwiki.org/wiki/Vessel_Tutorial_1上的教程更新的。

MFDs

可以找到构建MFDs的较旧的概念证明代码在https://github.com/thomasantony/RustMFD。然而,这使用了过时且修改过的cxx版本,可能无法在当前构建,仅作为一个参考。该仓库中的代码将在未来的某个时候迁移到这个仓库。

注意事项

  • 使用.cargo/config来强制i686作为目标

依赖项

~0.6–2MB
~31K SLoC