[−][src]Crate rbx_dom_weak
rbx_dom_weak is a common representation of the Roblox DOM for Rust. It's designed to play nicely with the borrow checker and allows accessing instances by ID in constant time.
Constructing a new tree of instances is accomplished by first creating an
RbxInstanceProperties
object that describes the root instance of the
tree, and then wrapping it with an RbxTree
:
use std::collections::HashMap; use rbx_dom_weak::{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());
Note that the maplit crate is incredibly useful for defining properties inline.
Once we have a tree, we can use RbxTree::insert_instance
and
RbxTree::get_instance
to add instances to the tree and retrieve them.
use rbx_dom_weak::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);
To change properties on an instance that's already present in the tree, use
RbxTree::get_instance_mut
. Note that it isn't possible to add or remove
children through this method, use RbxTree::insert_instance
instead.
Structs
ColorSequence | |
ColorSequenceKeypoint | |
Descendants | An iterator over all descendants of an instance in an |
NumberSequence | |
NumberSequenceKeypoint | |
PhysicalProperties | Represents possible custom physical properties on a |
Ray | |
RbxId | A unique ID that represents an instance within an |
RbxInstance | Represents an instance that is rooted in an |
RbxInstanceProperties | The properties associated with a Roblox Instance that might not exist yet. |
RbxTree | Represents a tree containing Roblox instances. |
Rect |
Enums
AmbiguousRbxValue | Represents a value that doesn't have explicit type information attached to it. Given more reflection information, it should be possible to recover the exact type of this value. |
BrickColor | |
RbxValue | Represents a value that can be assigned to the properties of an instance. |
RbxValueConversion | Contains the result of trying to convert an |
RbxValueType | An enum that can hold any of the types that |
UnresolvedRbxValue | Represents a value that was deserialized that might not have full type information attached. |