3 个不稳定版本
0.2.1 | 2022年12月17日 |
---|---|
0.2.0 | 2021年11月16日 |
0.1.0 | 2021年5月8日 |
#54 in #roblox
在 rbxm 中使用
15KB
317 行
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.0 (LICENSE-APACHE 或 http://apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则任何有意提交以包含在作品中并由您定义的 Apache-2.0 许可证,将根据上述条款双许可,不附加任何其他条款或条件。
依赖项
~1.5MB
~34K SLoC