#[derive(Default)] pub(crate) struct Globals; impl bevy_mod_scripting_lua::tealr::mlu::ExportInstances for Globals { fn add_instances<'lua, T: bevy_mod_scripting_lua::tealr::mlu::InstanceCollector<'lua>>( self, instances: &mut T, ) -> bevy_mod_scripting_lua::tealr::mlu::mlua::Result<()> { {% for item in items %} {% if item.has_static_methods %} instances.add_instance("{{ item.ident }}", bevy_mod_scripting_lua::tealr::mlu::UserDataProxy::<{{item.ident | prefix_lua}}>::new)?; {% endif %} {% endfor %} Ok(()) } } pub struct {{ "A P I Provider" | prefix_cratename | convert_case(case="upper_camel")}}; impl bevy_mod_scripting_core::hosts::APIProvider for {{ "A P I Provider" | prefix_cratename | convert_case(case="upper_camel") }} { type APITarget = std::sync::Mutex; type ScriptContext = std::sync::Mutex; type DocTarget = bevy_mod_scripting_lua::docs::LuaDocFragment; fn attach_api(&mut self, ctx: &mut Self::APITarget) -> Result<(), bevy_mod_scripting_core::error::ScriptError> { let ctx = ctx .get_mut() .expect("Unable to acquire lock on Lua context"); bevy_mod_scripting_lua::tealr::mlu::set_global_env(Globals, ctx) .map_err(|e| bevy_mod_scripting_core::error::ScriptError::Other(e.to_string())) } fn get_doc_fragment(&self) -> Option { Some(bevy_mod_scripting_lua::docs::LuaDocFragment::new("{{ "A P I" | prefix_cratename | convert_case(case="upper_camel") }}", |tw| { tw .document_global_instance::().expect("Something went wrong documenting globals") {% for item in items %} .process_type::<{{ item.ident | prefix_lua }}>() {% if item.has_static_methods %} .process_type::>() {% endif %} {% endfor %} } )) } fn setup_script( &mut self, script_data: &bevy_mod_scripting_core::hosts::ScriptData, ctx: &mut Self::ScriptContext, ) -> Result<(), bevy_mod_scripting_core::error::ScriptError> { Ok(()) } fn setup_script_runtime( &mut self, world_ptr: bevy_mod_scripting_core::world::WorldPointer, _script_data: &bevy_mod_scripting_core::hosts::ScriptData, ctx: &mut Self::ScriptContext, ) -> Result<(), bevy_mod_scripting_core::error::ScriptError> { Ok(()) } fn register_with_app(&self, app: &mut bevy::app::App) { {% for item in items %} app.register_foreign_lua_type::<{{ item.import_path }}>(); {% endfor %} } }