6个版本 (3个破坏性版本)
0.5.3 | 2024年3月4日 |
---|---|
0.5.1 | 2024年1月24日 |
0.4.0 | 2023年11月11日 |
0.3.0 | 2023年11月7日 |
0.1.0 | 2023年11月3日 |
#828 在 解析器实现
每月145 次下载
62KB
1.5K SLoC
datamodel-rs
datamodel-rs是一个Rust库,提供序列化和反序列化Valve的专有DMX文件格式的功能。
什么是DMX?
DMX是由Valve公司创建的一种键值格式文件格式。它主要用于Source Filmmaker(SFM),但也可用于其他用途,如3D模型和粒子。DMX文件可以以文本或二进制格式保存。DMX与XML类似,因为它使用元素和属性来存储数据。
示例
struct CoolData {
name: String,
age: i32,
is_cool: bool,
}
impl Element for CoolData {
fn to_element(self) -> DmElement {
let mut element = DmElement::new(self.name, "CoolData".to_string());
element.set_attribute("age", self.age);
element.set_attribute("is_cool", self.is_cool);
element
}
fn from_element(value: &DmElement) -> Option<Self> {
Some(Self {
name: value.get_name().to_string(),
age: *value.get_attribute::<i32>("age")?,
is_cool: *value.get_attribute::<bool>("is_cool")?,
})
}
}
let header = DmHeader {
encoding_name: "binary".to_string(),
encoding_version: 2,
format_name: "dmx".to_string(),
format_version: 1,
};
let mut root = DmElement::empty();
root.set_name("Cool Data");
root.set_element(
"The Data",
CoolData {
name: "bob".to_string(),
age: 42,
is_cool: true,
},
);
let _ = serialize_file("TheCoolFile.dmx", &root, &header);
支持什么?
- 二进制编码版本1 - 5支持
需要什么?
- keyvalues2编码
- keyvalues2_flat编码
依赖项
~1MB
~18K SLoC