blob: 95284e9508aaaf1ad0da1b85d5a6989b2d4a8b45 (
plain)
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 preload_scene(context: u64, id: usize);
pub safe fn is_scene_loaded(context: u64, id: usize) -> u32;
pub safe fn switch_scene(context: u64, id: usize);
}
}
impl ScriptContext {
pub fn scene_id(&self, name: &str) -> usize {
unsafe { tortuise::scene_id_by_name(self.0, name.as_ptr(), name.len()) }
}
pub fn preload_scene(&self, name: &str) {
let id = self.scene_id(name);
tortuise::preload_scene(self.0, id);
}
pub fn is_scene_loaded(&self, name: &str) -> bool {
let id = self.scene_id(name);
tortuise::is_scene_loaded(self.0, id) > 0
}
pub fn switch_scene(&self, name: &str) {
let id = self.scene_id(name);
tortuise::switch_scene(self.0, id);
}
}
|