use crate::ScriptContext; mod tortuise { #[link(wasm_import_module = "tortuise")] unsafe extern "C" { pub unsafe fn scene_id_by_name(context: u64, name: *const u8, length: usize) -> usize; pub safe fn switch_scene(context: u64, id: usize); } } impl ScriptContext<'_> { pub fn scene_id(&self, name: &str) -> Option { let id = unsafe { tortuise::scene_id_by_name(self.0, name.as_ptr(), name.len()) }; (id < usize::MAX).then_some(id) } pub fn switch_scene(&mut self, name: &str) -> Option<()> { let id = self.scene_id(name)?; tortuise::switch_scene(self.0, id); Some(()) } }