game ticks api

This commit is contained in:
Quaternions 2024-10-16 19:50:40 -07:00
parent 9c1807ec76
commit eb66516f83

View File

@ -90,4 +90,23 @@ impl Runnable<'_>{
.set_name(name) .set_name(name)
.exec().map_err(|error|Error::Lua{source,error}) .exec().map_err(|error|Error::Lua{source,error})
} }
pub fn has_scheduled_threads(&self)->Result<bool,mlua::Error>{
scheduler_mut(&self.lua,|scheduler|
Ok(scheduler.has_scheduled_threads())
)
}
pub fn game_tick(&self)->Result<(),mlua::Error>{
if let Some(threads)=scheduler_mut(&self.lua,|scheduler|Ok(scheduler.tick_threads()))?{
for thread in threads{
//TODO: return dt and total run time
let result=thread.resume::<mlua::MultiValue>((1.0/20.0,0.0))
.map_err(|error|Error::Lua{source:"source unavailable".to_owned(),error});
match result{
Ok(_)=>(),
Err(e)=>println!("game_tick Error: {e}"),
}
}
}
Ok(())
}
} }