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 模拟
390KB
1.5K SLoC
orbiter-rs — Orbiter SDK 的 Rust 绑定
此库是为了在 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 插件的生命周期
待办事项
构建
- 下载/安装 Orbiter
- 安装 Visual Studio 2019
- 使用
rustup
安装 Rust (https://rustup.rs) - 运行
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
文件夹。还将 Config
、Meshes
和 Scenarios
文件夹中的文件复制到 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