use super::pptr::PPtr; use crate::object::Value; use anyhow::Result; use serde::Serialize; #[derive(Debug, Serialize)] pub struct Transform { pub father: PPtr, pub children: Vec>, } impl Transform { pub fn from_value(v: Value) -> Result { 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(), }) } }