2个不稳定版本
0.2.0 | 2019年1月26日 |
---|---|
0.1.0 | 2019年1月12日 |
#894 in 游戏
17KB
280 代码行
rbx_tree
Roblox DOM的弱类型实现,用于在外部工具中表示实例。
覆盖率
由于rbx_tree是弱类型的,当Roblox中添加新实例时,它不需要更新。然而,当添加新数据类型如Vector3int16
时,它必须更新。
数据类型覆盖率
- BinaryString
- Bool
- CFrame
- Color3
- Color3uint8
- Enum
- Float32
- Int32
- String
- Vector2
- Vector2int16
- Vector3
- Vector3int16
- 内容
- 物理属性(目前为占位符)
- 引用
lib.rs
:
rbx_tree是Rust中Roblox DOM的通用表示。它设计得很好,与借用检查器兼容,并允许以常数时间通过ID访问实例。
rbx_tree的API并不完全稳定,但大部分设计已经锁定。它绝对是一个0.x.y质量的库。
通过首先创建一个描述树根实例的RbxInstanceProperties
对象,然后将其包装在RbxTree
中,来完成新实例树的构建。
use std::collections::HashMap;
use rbx_tree::{RbxInstanceProperties, RbxTree};
let props = RbxInstanceProperties {
name: "My Cool Game".to_owned(),
class_name: "DataModel".to_owned(),
properties: HashMap::new(),
};
let mut tree = RbxTree::new(props);
println!("ID of instance we just inserted is {}", tree.get_root_id());
请注意,maplit 包对于定义属性非常有用。
一旦我们有了树,我们就可以使用RbxTree::insert_instance
和RbxTree::get_instance
将实例添加到树中并检索它们。
use rbx_tree::RbxValue;
use maplit::hashmap;
#
#
#
let http_service = RbxInstanceProperties {
name: "HttpService".to_owned(),
class_name: "HttpService".to_owned(),
properties: hashmap! {
"HttpEnabled".to_owned() => RbxValue::Bool {
value: true,
},
},
};
let datamodel_id = tree.get_root_id();
let http_service_id = tree.insert_instance(http_service, datamodel_id);
println!("HttpService has ID {}", http_service_id);
要更改树中已存在的实例上的属性,请使用RbxTree::get_instance_mut
。请注意,不可能通过此方法添加或删除子项,请改用RbxTree::insert_instance
。
依赖关系
~1.2–2MB
~36K SLoC