From 473b549101861692d7c09da883cf4a3f18ea004b Mon Sep 17 00:00:00 2001 From: christianlincoln Date: Fri, 20 Feb 2026 22:47:17 +0000 Subject: [PATCH] Fix: Get world error. Typos. --- src/duck/instance.rs | 22 +++++++++++----------- src/duck/part.rs | 7 ++++--- src/duck/script.rs | 4 ++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/duck/instance.rs b/src/duck/instance.rs index e13d57e..ca8d9d5 100644 --- a/src/duck/instance.rs +++ b/src/duck/instance.rs @@ -30,10 +30,10 @@ impl DefaultAsset { commands.insert_resource(DefaultAsset(handle)); } } -pub(crate) fn world<'w>(lua: &Lua) -> std::result::Result<&'w mut World, mlua::Error> { - lua.app_data_mut::<&World>() - .ok_or_else(Error("Direct world access not available here!".into())) - .map_err(LuaError::external).deref_mut() +pub(crate) fn world(lua: &Lua) -> std::result::Result, mlua::Error> { + lua.app_data_mut::() + .ok_or(Error("Direct world access not available here!".into())) + .map_err(LuaError::external) } pub struct Instance(pub Entity); @@ -47,7 +47,7 @@ impl FromLua for Instance { } impl LuaUserData for Instance { fn add_fields>(fields: &mut F) { - fields.add_field_method_get("parent",|lua: Lua, this| { + /*fields.add_field_method_get("parent",|lua: Lua, this| { Ok(world(&lua)?.get::(this.0).map(|parent| {Instance(parent.0)})) }); fields.add_field_method_set("parent",|lua: Lua, this, other: Option| { @@ -59,25 +59,25 @@ impl LuaUserData for Instance { let entity = world.get_entity_mut(); } Ok(()) - }); + });*/ crate::script::add_fields(fields); crate::part::add_fields(fields); } fn add_methods>(methods: &mut M) { - methods.add_method("despawn",|lua: Lua, this| { + /*methods.add_method("despawn",|lua: Lua, this| { let world = world(&lua).map_err(LuaError::external)?; world.get_entity(this).map_err(LuaError::external)?; Ok(()) - }); + });*/ crate::script::add_methods(methods); - crate::part::add_fields(fields); + crate::part::add_methods(methods); } } impl Instance { fn world_access(&self, lua: &Lua) -> std::result::Result { world(lua)?.get_entity_mut(self.0).map_err(LuaError::external) } - fn new(&self) { + fn new(&self) { T::add(self.spawn()); } @@ -86,7 +86,7 @@ impl Instance { } } -pub trait Duck { +pub trait Trait { fn add(entity: &mut EntityCommands); } diff --git a/src/duck/part.rs b/src/duck/part.rs index f4670cb..c689bdf 100644 --- a/src/duck/part.rs +++ b/src/duck/part.rs @@ -5,7 +5,7 @@ use mlua::prelude::{LuaUserData, LuaUserDataFields, LuaUserDataMethods}; use crate::duck::instance::*; pub struct Part; -impl Duck for Part { +impl Trait for Part { fn add(entity: &mut EntityCommands) { let id = entity.id(); entity.commands().run_system_cached_with(move | @@ -35,10 +35,10 @@ pub fn setup(app: &mut App) { } pub(crate) fn add_fields>(fields: &mut F) { - fields.add_field_method_get("transform",|lua: Lua, this| { + fields.add_field_method_get("transform",|lua: &Lua, this| { Ok(world(&lua)?.get::(this.0).unwrap()) }); - fields.add_field_method_set("transform",|lua: Lua, this,transform: Transform| { + fields.add_field_method_set("transform",|lua: &Lua, this,transform: Transform| { Ok(()) }); } @@ -52,6 +52,7 @@ impl FromLua for Transform { } } +#[derive(Component)] struct Transform(bevy::prelude::Transform); impl LuaUserData for Transform { diff --git a/src/duck/script.rs b/src/duck/script.rs index a9a0ecc..ec39997 100644 --- a/src/duck/script.rs +++ b/src/duck/script.rs @@ -42,8 +42,8 @@ impl AssetLoader for ScriptAssetLoader { #[derive(Component)] struct Script(Handle); -impl Duck for Script { - fn add_to(entity: &mut EntityCommands) -> Instance { +impl Trait for Script { + fn add(entity: &mut EntityCommands) -> Instance { let id = entity.id(); entity.commands().run_system_cached_with(| // Get commands -> defer a system In(id): In,