7 个版本

0.3.0 2022 年 12 月 17 日
0.2.1 2021 年 11 月 16 日
0.1.3 2021 年 5 月 8 日

#1563编码

MIT/Apache 许可协议

305KB
8K SLoC

rbxm-rs

crates.io Documentation MIT/Apache-2 licensed

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 许可证定义的,任何有意提交以包含在作品中的贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~3MB
~65K SLoC