use super::{gameobject::GameObject, pptr::PPtr}; use crate::object::Value; use anyhow::Result; use serde::Serialize; #[derive(Debug, Serialize)] pub struct AssetInfo { pub preload_index: i32, pub preload_size: i32, pub asset: PPtr, } impl AssetInfo { pub fn from_value(v: Value) -> Result { let mut fields = v.as_class("AssetInfo").unwrap(); Ok(AssetInfo { preload_index: fields["preloadIndex"].as_i32().unwrap(), preload_size: fields["preloadSize"].as_i32().unwrap(), asset: PPtr::from_value(fields.remove("asset").unwrap()) .unwrap() .cast(), }) } }