diff --git a/Cargo.lock b/Cargo.lock index be52904148..5b1d5c52b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -177,9 +177,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", @@ -206,9 +206,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ "windows-sys 0.52.0", ] @@ -1405,9 +1405,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.10" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -1415,9 +1415,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.9" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -2047,14 +2047,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "windows-sys 0.48.0", + "redox_syscall 0.4.1", + "windows-sys 0.52.0", ] [[package]] @@ -2279,7 +2279,7 @@ dependencies = [ [[package]] name = "gc-arena" version = "0.4.0" -source = "git+https://github.com/kyren/gc-arena.git#8f2d8018987b765c4b2cabe43bd9d63de4b8bce0" +source = "git+https://github.com/kyren/gc-arena.git#bdb328467fb062c8d904cb4ce4d725e2ad816580" dependencies = [ "allocator-api2", "gc-arena-derive", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "gc-arena-derive" version = "0.4.0" -source = "git+https://github.com/kyren/gc-arena.git#8f2d8018987b765c4b2cabe43bd9d63de4b8bce0" +source = "git+https://github.com/kyren/gc-arena.git#bdb328467fb062c8d904cb4ce4d725e2ad816580" dependencies = [ "proc-macro2", "quote", @@ -2956,9 +2956,9 @@ dependencies = [ [[package]] name = "lyon_tessellation" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bcac20d47825850fabf1e869bf7c2bbe2daefa0776c3cd2eb7cb74635f6e4a" +checksum = "1f5bcf02928361d18e6edb8ad3bc5b93cba8aa57e2508deb072c2d2ade8bbd0d" dependencies = [ "float_next_after", "lyon_path", @@ -3051,9 +3051,9 @@ checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", @@ -3413,9 +3413,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "once_map" @@ -3595,7 +3595,7 @@ dependencies = [ [[package]] name = "piccolo" version = "0.2.0" -source = "git+https://github.com/kyren/piccolo.git#41b6e20daa4b19a9976f3f854c2fe43fb2866009" +source = "git+https://github.com/kyren/piccolo.git?rev=d25ef38#d25ef38068229c96e24704fe499e412d0bef6e84" dependencies = [ "allocator-api2", "anyhow", @@ -4013,9 +4013,9 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.6" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", "getrandom 0.2.11", @@ -4074,12 +4074,12 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.6", + "ring 0.17.7", "rustls-webpki", "sct", ] @@ -4111,7 +4111,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.6", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -4157,7 +4157,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.6", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -4860,18 +4860,18 @@ dependencies = [ [[package]] name = "unic-langid" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2f" +checksum = "887622f8e7b723780c5e64b04dcc0c9b8f426ada7cca6790cd3ea3bf0f08037a" dependencies = [ "unic-langid-impl", ] [[package]] name = "unic-langid-impl" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ff" +checksum = "5adeb847e35eed4efbffd9fb2e4d078b91ece56e4d6a3c0d2df55b3a1dac07d5" dependencies = [ "serde", "tinystr", @@ -4879,9 +4879,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" @@ -5602,9 +5602,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "b67b5f0a4e7a27a64c651977932b9dc5667ca7fc31ac44b03ed37a0cf42fdfff" dependencies = [ "memchr", ] @@ -5659,18 +5659,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.28" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e" +checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.28" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b" +checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" dependencies = [ "proc-macro2", "quote", diff --git a/framework_crates/bones_bevy_renderer/src/lib.rs b/framework_crates/bones_bevy_renderer/src/lib.rs index a7c54a711d..a917879ec5 100644 --- a/framework_crates/bones_bevy_renderer/src/lib.rs +++ b/framework_crates/bones_bevy_renderer/src/lib.rs @@ -804,7 +804,10 @@ fn step_bones_game(world: &mut World) { asset_server.handle_asset_changes(|asset_server, handle| { let mut bones_egui_textures = game.shared_resource_mut::().unwrap(); - let mut asset = asset_server.get_asset_untyped_mut(handle).unwrap(); + let Some(mut asset) = asset_server.get_asset_untyped_mut(handle) else { + // There was an issue loading the asset. The error will have been logged. + return; + }; // TODO: hot reload changed fonts. diff --git a/framework_crates/bones_scripting/Cargo.toml b/framework_crates/bones_scripting/Cargo.toml index 21389264e7..913fc7e2f4 100644 --- a/framework_crates/bones_scripting/Cargo.toml +++ b/framework_crates/bones_scripting/Cargo.toml @@ -16,7 +16,7 @@ tracing = "0.1" bevy_tasks = "0.11" bones_lib = { version = "0.3", path = "../bones_lib" } bones_asset = { version = "0.3", path = "../bones_asset" } -piccolo = { git = "https://github.com/kyren/piccolo.git" } +piccolo = { git = "https://github.com/kyren/piccolo.git", rev = "d25ef38" } gc-arena = { git = "https://github.com/kyren/gc-arena.git" } gc-arena-derive = { git = "https://github.com/kyren/gc-arena.git" } send_wrapper = "0.6.0" @@ -26,5 +26,5 @@ elsa = "1.9" wasm-bindgen-futures = "0.4" [dev-dependencies] -piccolo = { git = "https://github.com/kyren/piccolo.git" } +piccolo = { git = "https://github.com/kyren/piccolo.git", rev = "d25ef38" } diff --git a/framework_crates/bones_scripting/src/lua.rs b/framework_crates/bones_scripting/src/lua.rs index 1cfa075eb9..aad75c2731 100644 --- a/framework_crates/bones_scripting/src/lua.rs +++ b/framework_crates/bones_scripting/src/lua.rs @@ -5,6 +5,7 @@ use bones_asset::dashmap::mapref::one::{MappedRef, MappedRefMut}; use bones_lib::ecs::utils::*; use parking_lot::Mutex; +pub use piccolo; use piccolo::{ compiler::{LineNumber, ParseError}, registry::{Fetchable, Stashable}, @@ -64,7 +65,7 @@ impl SessionPlugin for LuaPluginLoaderSessionPlugin { world: &World| { engine.exec(|lua| { Frozen::::in_scope(world, |world| { - lua.run(|ctx| { + lua.enter(|ctx| { let env = ctx.singletons().get(ctx, bindings::env); let worldref = WorldRef(world); worldref.add_to_env(ctx, env); @@ -87,10 +88,10 @@ impl SessionPlugin for LuaPluginLoaderSessionPlugin { for (has_run, closure) in &mut systems.startup { if !*has_run { - let executor = lua.run(|ctx| { - let closure = ctx.state.registry.fetch(closure); + let executor = lua.enter(|ctx| { + let closure = ctx.registry().fetch(closure); let ex = Executor::start(ctx, closure.into(), ()); - ctx.state.registry.stash(&ctx, ex) + ctx.registry().stash(&ctx, ex) }); if let Err(e) = lua.execute::<()>(&executor) { tracing::error!("Error running lua plugin system: {e}"); @@ -102,10 +103,10 @@ impl SessionPlugin for LuaPluginLoaderSessionPlugin { for (stage, closure) in &systems.core_stages { if stage == &lua_stage { - let executor = lua.run(|ctx| { - let closure = ctx.state.registry.fetch(closure); + let executor = lua.enter(|ctx| { + let closure = ctx.registry().fetch(closure); let ex = Executor::start(ctx, closure.into(), ()); - ctx.state.registry.stash(&ctx, ex) + ctx.registry().stash(&ctx, ex) }); if let Err(e) = lua.execute::<()>(&executor) { tracing::error!("Error running lua plugin system: {e}"); @@ -150,8 +151,7 @@ impl WorldRef { /// Add this world fn add_to_env<'gc>(&self, ctx: Context<'gc>, env: Table<'gc>) { - ctx.state - .globals + ctx.globals() .set(ctx, "world", self.clone().into_userdata(ctx)) .unwrap(); for (name, metatable) in [ @@ -227,11 +227,11 @@ impl LuaSingletons { "Encountered two functions with different return types and \ the same function pointer.", ); - ctx.state.registry.fetch(stashed) + ctx.registry().fetch(stashed) } else { drop(map); // Make sure we don't deadlock let v = singleton(ctx); - let stashed = ctx.state.registry.stash(&ctx, v); + let stashed = ctx.registry().stash(&ctx, v); self.singletons.borrow_mut().insert(id, Box::new(stashed)); v } @@ -242,9 +242,9 @@ impl Default for EngineState { fn default() -> Self { // Initialize an empty lua engine and our lua data. let mut lua = Lua::core(); - lua.try_run(|ctx| { + lua.try_enter(|ctx| { // Insert our lua singletons. - ctx.state.globals.set( + ctx.globals().set( ctx, "luasingletons", AnyUserData::new_static(&ctx, LuaSingletons::default()), @@ -317,7 +317,7 @@ impl LuaEngine { // Wrap world reference so that it can be converted to lua userdata. let worldref = WorldRef(world); - let executor = lua.try_run(|ctx| { + let executor = lua.try_enter(|ctx| { // Fetch the env table let env = self.state.data.get(ctx, bindings::env); @@ -342,15 +342,14 @@ impl LuaEngine { let closure = compiled_scripts.get(&cid); Ok::<_, PrototypeError>(match closure { - Some(closure) => ctx.state.registry.fetch(closure), + Some(closure) => ctx.registry().fetch(closure), None => { let asset = asset_server.store.assets.get(&cid).unwrap(); let source = &asset.data.cast_ref::().source; // TODO: Provide a meaningfull name to loaded scripts. let closure = Closure::load_with_env(ctx, None, source.as_bytes(), env)?; - compiled_scripts - .insert(cid, ctx.state.registry.stash(&ctx, closure)); + compiled_scripts.insert(cid, ctx.registry().stash(&ctx, closure)); closure } @@ -361,7 +360,7 @@ impl LuaEngine { worldref.add_to_env(ctx, env); let ex = Executor::start(ctx, closure.into(), ()); - let ex = ctx.state.registry.stash(&ctx, ex); + let ex = ctx.registry().stash(&ctx, ex); Ok(ex) }); diff --git a/framework_crates/bones_scripting/src/lua/asset.rs b/framework_crates/bones_scripting/src/lua/asset.rs index 2655eefb77..72ecbaba9a 100644 --- a/framework_crates/bones_scripting/src/lua/asset.rs +++ b/framework_crates/bones_scripting/src/lua/asset.rs @@ -92,7 +92,7 @@ impl LuaPlugin { } } fn load_impl(&self, lua: &mut piccolo::Lua) -> Result<(), anyhow::Error> { - let executor = lua.try_run(|ctx| { + let executor = lua.try_enter(|ctx| { let env = ctx.singletons().get(ctx, super::bindings::env); let session_var = AnyUserData::new_static(&ctx, self.systems.clone()); @@ -102,7 +102,7 @@ impl LuaPlugin { // TODO: Provide a meaningfull name to loaded scripts. let closure = Closure::load_with_env(ctx, None, self.source.as_bytes(), env)?; let ex = Executor::start(ctx, closure.into(), ()); - Ok(ctx.state.registry.stash(&ctx, ex)) + Ok(ctx.registry().stash(&ctx, ex)) })?; lua.execute::<()>(&executor)?; @@ -134,7 +134,7 @@ fn session_metatable(ctx: Context) -> Table { ) .unwrap(); - let add_startup_system_callback = ctx.state.registry.stash( + let add_startup_system_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (this, closure): (AnyUserData, Closure) = stack.consume(ctx)?; @@ -144,12 +144,12 @@ fn session_metatable(ctx: Context) -> Table { systems .as_loaded_mut() .startup - .push((false, ctx.state.registry.stash(&ctx, closure))); + .push((false, ctx.registry().stash(&ctx, closure))); Ok(CallbackReturn::Return) }), ); - let add_system_to_stage_callback = ctx.state.registry.stash( + let add_system_to_stage_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (this, stage, closure): (AnyUserData, AnyUserData, Closure) = stack.consume(ctx)?; @@ -160,7 +160,7 @@ fn session_metatable(ctx: Context) -> Table { systems .as_loaded_mut() .core_stages - .push((*stage, ctx.state.registry.stash(&ctx, closure))); + .push((*stage, ctx.registry().stash(&ctx, closure))); Ok(CallbackReturn::Return) }), @@ -176,20 +176,11 @@ fn session_metatable(ctx: Context) -> Table { #[allow(clippy::single_match)] match key.as_bytes() { b"add_system_to_stage" => { - stack.push_front( - ctx.state - .registry - .fetch(&add_system_to_stage_callback) - .into(), - ); + stack + .push_front(ctx.registry().fetch(&add_system_to_stage_callback).into()); } b"add_startup_system" => { - stack.push_front( - ctx.state - .registry - .fetch(&add_startup_system_callback) - .into(), - ); + stack.push_front(ctx.registry().fetch(&add_startup_system_callback).into()); } _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/bindings.rs b/framework_crates/bones_scripting/src/lua/bindings.rs index 3778eb7070..a24384e6c9 100644 --- a/framework_crates/bones_scripting/src/lua/bindings.rs +++ b/framework_crates/bones_scripting/src/lua/bindings.rs @@ -35,7 +35,7 @@ pub fn no_newindex(ctx: Context) -> AnyCallback { pub fn env(ctx: Context) -> Table { let env = Table::new(&ctx); - env.set(ctx, "math", ctx.state.globals.get(ctx, "math")) + env.set(ctx, "math", ctx.globals().get(ctx, "math")) .unwrap(); let schema_fn = ctx.singletons().get(ctx, schema::schema_fn); diff --git a/framework_crates/bones_scripting/src/lua/bindings/assets.rs b/framework_crates/bones_scripting/src/lua/bindings/assets.rs index 1244b1a01d..e3b2b33245 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/assets.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/assets.rs @@ -16,7 +16,7 @@ pub fn metatable(ctx: Context) -> Table { ) .unwrap(); - let get_callback = ctx.state.registry.stash( + let get_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (world, ecsref): (&WorldRef, &EcsRef) = stack.consume(ctx)?; @@ -65,7 +65,7 @@ pub fn metatable(ctx: Context) -> Table { }); } b"get" => { - stack.push_front(ctx.state.registry.fetch(&get_callback).into()); + stack.push_front(ctx.registry().fetch(&get_callback).into()); } _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/bindings/components.rs b/framework_crates/bones_scripting/src/lua/bindings/components.rs index 9b7835d855..cdd9b58a5c 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/components.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/components.rs @@ -18,7 +18,7 @@ pub fn metatable(ctx: Context) -> Table { .set(ctx, "__newindex", ctx.singletons().get(ctx, no_newindex)) .unwrap(); - let get_callback = ctx.state.registry.stash( + let get_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, |ctx, _fuel, mut stack| { let (world, entity_ecsref, schema): (&WorldRef, &EcsRef, AnyUserData) = @@ -51,7 +51,7 @@ pub fn metatable(ctx: Context) -> Table { Ok(CallbackReturn::Return) }), ); - let insert_callback = ctx.state.registry.stash( + let insert_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, |ctx, _fuel, mut stack| { let (world, entity_ecsref, value_ecsref): (&WorldRef, &EcsRef, &EcsRef) = @@ -76,7 +76,7 @@ pub fn metatable(ctx: Context) -> Table { Ok(CallbackReturn::Return) }), ); - let remove_callback = ctx.state.registry.stash( + let remove_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, |ctx, _fuel, mut stack| { let (world, entity_ecsref, schema): (&WorldRef, &EcsRef, AnyUserData) = @@ -109,13 +109,13 @@ pub fn metatable(ctx: Context) -> Table { #[allow(clippy::single_match)] match key.as_bytes() { b"get" => { - stack.push_front(ctx.state.registry.fetch(&get_callback).into()); + stack.push_front(ctx.registry().fetch(&get_callback).into()); } b"insert" => { - stack.push_front(ctx.state.registry.fetch(&insert_callback).into()); + stack.push_front(ctx.registry().fetch(&insert_callback).into()); } b"remove" => { - stack.push_front(ctx.state.registry.fetch(&remove_callback).into()); + stack.push_front(ctx.registry().fetch(&remove_callback).into()); } _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/bindings/ecsref.rs b/framework_crates/bones_scripting/src/lua/bindings/ecsref.rs index 93f103cf60..aeb688ba8a 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/ecsref.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/ecsref.rs @@ -132,7 +132,10 @@ impl std::fmt::Display for EcsRefBorrowError { component_name, } => write!( f, - "Entity {entity:?} does not have component `{component_name}`" + "Cannot access variable because entity {entity:?} no longer has the \ + component `{component_name}`. This may happen if you remove the cmponent \ + while you still have a variable referencing the component data, and you \ + then try to access the component data through the variable." ), EcsRefBorrowError::AssetNotLoaded => write!(f, "Asset not loaded"), EcsRefBorrowError::FieldNotFound(field) => write!(f, "Field not found: {field}"), diff --git a/framework_crates/bones_scripting/src/lua/bindings/entities.rs b/framework_crates/bones_scripting/src/lua/bindings/entities.rs index 60c588b1b7..bd07d2ff31 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/entities.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/entities.rs @@ -23,7 +23,7 @@ pub fn entities_metatable(ctx: Context) -> Table { .set(ctx, "__newindex", ctx.singletons().get(ctx, no_newindex)) .unwrap(); - let create_callback = ctx.state.registry.stash( + let create_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let this: &EcsRef = stack.consume(ctx)?; @@ -42,7 +42,7 @@ pub fn entities_metatable(ctx: Context) -> Table { Ok(CallbackReturn::Return) }), ); - let kill_callback = ctx.state.registry.stash( + let kill_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (this, entity_ecsref): (&EcsRef, &EcsRef) = stack.consume(ctx)?; @@ -56,15 +56,14 @@ pub fn entities_metatable(ctx: Context) -> Table { Ok(CallbackReturn::Return) }), ); - let iter_with_callback = ctx.state.registry.stash( + let iter_with_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (this, schema_args): (&EcsRef, Variadic>) = stack.consume(ctx)?; let mut b = this.borrow_mut(); let entities = b.schema_ref_mut()?.cast_into_mut::(); let world = ctx - .state - .globals + .globals() .get(ctx, "world") .as_static_user_data::()?; let mut bitset = entities.bitset().clone(); @@ -108,8 +107,7 @@ pub fn entities_metatable(ctx: Context) -> Table { if let Some(entity) = next_ent { let world = ctx - .state - .globals + .globals() .get(ctx, "world") .as_static_user_data::()?; @@ -157,13 +155,13 @@ pub fn entities_metatable(ctx: Context) -> Table { #[allow(clippy::single_match)] match key.as_bytes() { b"create" => { - stack.push_front(ctx.state.registry.fetch(&create_callback).into()); + stack.push_front(ctx.registry().fetch(&create_callback).into()); } b"kill" => { - stack.push_front(ctx.state.registry.fetch(&kill_callback).into()); + stack.push_front(ctx.registry().fetch(&kill_callback).into()); } b"iter_with" => { - stack.push_front(ctx.state.registry.fetch(&iter_with_callback).into()); + stack.push_front(ctx.registry().fetch(&iter_with_callback).into()); } _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/bindings/resources.rs b/framework_crates/bones_scripting/src/lua/bindings/resources.rs index 4e6675be58..d026f72f48 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/resources.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/resources.rs @@ -19,7 +19,7 @@ pub fn metatable(ctx: Context) -> Table { ) .unwrap(); - let get_callback = ctx.state.registry.stash( + let get_callback = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let (world, schema): (&WorldRef, AnyUserData) = stack.consume(ctx)?; @@ -50,7 +50,7 @@ pub fn metatable(ctx: Context) -> Table { #[allow(clippy::single_match)] match key.as_bytes() { b"get" => { - stack.push_front(ctx.state.registry.fetch(&get_callback).into()); + stack.push_front(ctx.registry().fetch(&get_callback).into()); } _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/bindings/schema.rs b/framework_crates/bones_scripting/src/lua/bindings/schema.rs index 0001fc06d2..325b654a6b 100644 --- a/framework_crates/bones_scripting/src/lua/bindings/schema.rs +++ b/framework_crates/bones_scripting/src/lua/bindings/schema.rs @@ -67,7 +67,7 @@ pub fn metatable(ctx: Context) -> Table { }), ) .unwrap(); - let create_fn = ctx.state.registry.stash( + let create_fn = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let this: AnyUserData = stack.consume(ctx)?; @@ -84,7 +84,7 @@ pub fn metatable(ctx: Context) -> Table { }), ); - let without_fn = ctx.state.registry.stash( + let without_fn = ctx.registry().stash( &ctx, AnyCallback::from_fn(&ctx, move |ctx, _fuel, mut stack| { let this: AnyUserData = stack.consume(ctx)?; @@ -129,8 +129,8 @@ pub fn metatable(ctx: Context) -> Table { )), ); } - b"create" => stack.replace(ctx, ctx.state.registry.fetch(&create_fn)), - b"without" => stack.replace(ctx, ctx.state.registry.fetch(&without_fn)), + b"create" => stack.replace(ctx, ctx.registry().fetch(&create_fn)), + b"without" => stack.replace(ctx, ctx.registry().fetch(&without_fn)), _ => (), } diff --git a/framework_crates/bones_scripting/src/lua/ext.rs b/framework_crates/bones_scripting/src/lua/ext.rs index 9917626899..39c2733832 100644 --- a/framework_crates/bones_scripting/src/lua/ext.rs +++ b/framework_crates/bones_scripting/src/lua/ext.rs @@ -10,7 +10,7 @@ pub trait CtxExt { } impl CtxExt for piccolo::Context<'_> { fn singletons(&self) -> &LuaSingletons { - let Value::UserData(data) = self.state.globals.get(*self, "luasingletons") else { + let Value::UserData(data) = self.globals().get(*self, "luasingletons") else { unreachable!(); }; data.downcast_static::().unwrap()