diff options
Diffstat (limited to 'src/classes/transform.rs')
-rw-r--r-- | src/classes/transform.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/classes/transform.rs b/src/classes/transform.rs new file mode 100644 index 0000000..518e248 --- /dev/null +++ b/src/classes/transform.rs @@ -0,0 +1,26 @@ +use super::pptr::PPtr; +use crate::object::Value; +use anyhow::Result; +use serde::Serialize; + +#[derive(Debug, Serialize)] +pub struct Transform { + pub father: PPtr<Transform>, + pub children: Vec<PPtr<Transform>>, +} +impl Transform { + pub fn from_value(v: Value) -> Result<Self> { + let mut fields = v.as_class("Transform").unwrap(); + Ok(Self { + children: fields + .remove("m_Children") + .unwrap() + .as_array() + .unwrap() + .into_iter() + .map(|e| PPtr::from_value(e).unwrap().cast()) + .collect(), + father: PPtr::from_value(fields.remove("m_Father").unwrap())?.cast(), + }) + } +} |