7 个版本
0.3.0 | 2022 年 12 月 17 日 |
---|---|
0.2.1 | 2021 年 11 月 16 日 |
0.1.3 | 2021 年 5 月 8 日 |
#1563 在 编码
305KB
8K SLoC
rbxm-rs
Roblox 模型文件读取器,用 Rust 实现。
特性
- 对许多 Roblox 实例类型的强类型处理
- 特性标志以支持不稳定的格式,例如 CSGPHS 网格。
#[no_std]
支持,只要存在 alloc
示例
use rbxm::{from_file, SerdeError, ModelError};
fn main() {
// Read a model from a file
let model = match from_file("./Model.rbxm") {
Ok(model) => model,
Err(SerdeError::IoError(err)) => panic!("IO Error: {}", err),
Err(err) => panic!("Error parsing model: {}", err),
};
// Get a part from a path, this looks for a root node named ModelSection with a child named Part, and returns
// that child.
let part = match model.get_path("ModelSection/Part") {
Ok(part) => part,
Err(ModelError::NotFound) => panic!("Couldn't find instance at \"ModelSection/Part\""),
Err(ModelError::AmbiguousPath) => panic!("Found more than one instance matching \"ModelSection/Part\""),
Err(err) => panic!("Model Error: {}", err),
};
println!("Part Class: {}", part.borrow().kind.class_name())
}
待办事项
- 完成实例信息文档
- 支持 XML 文件
- 在数据上提供更多辅助方法
- 实例新方法 +
#[non_exhaustive]
以便更好地兼容未来 - 提高解析模块化,可能添加一个低级 API
许可协议
许可协议为以下之一
- Apache 许可协议第 2 版 (LICENSE-APACHE 或 http://apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确表示,否则根据 Apache-2.0 许可证定义的,任何有意提交以包含在作品中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。
依赖项
~3MB
~65K SLoC