#roblox #model #instance #proc #macro #mesh #rbxm

rbxm-proc

rbxm crate 内部使用的进程宏

3 个不稳定版本

0.2.1 2022年12月17日
0.2.0 2021年11月16日
0.1.0 2021年5月8日

#54 in #roblox


rbxm 中使用

MIT/Apache

15KB
317

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 许可证,将根据上述条款双许可,不附加任何其他条款或条件。

依赖项

~1.5MB
~34K SLoC