Fix: Get world error. Typos.

This commit is contained in:
2026-02-20 22:47:17 +00:00
parent a7f013ecf8
commit 473b549101
3 changed files with 17 additions and 16 deletions

View File

@@ -30,10 +30,10 @@ impl<S: Asset> DefaultAsset<S> {
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<AppDataRefMut<World>, mlua::Error> {
lua.app_data_mut::<World>()
.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<F: LuaUserDataFields<Self>>(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::<ChildOf>(this.0).map(|parent| {Instance(parent.0)}))
});
fields.add_field_method_set("parent",|lua: Lua, this, other: Option<Instance>| {
@@ -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<M: LuaUserDataMethods<Self>>(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<EntityWorldMut, mlua::Error> {
world(lua)?.get_entity_mut(self.0).map_err(LuaError::external)
}
fn new<T: Duck>(&self) {
fn new<T: Trait>(&self) {
T::add(self.spawn());
}
@@ -86,7 +86,7 @@ impl Instance {
}
}
pub trait Duck {
pub trait Trait {
fn add(entity: &mut EntityCommands);
}

View File

@@ -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<F: LuaUserDataFields<Instance>>(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::<Transform>(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 {

View File

@@ -42,8 +42,8 @@ impl AssetLoader for ScriptAssetLoader {
#[derive(Component)]
struct Script(Handle<ScriptAsset>);
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<Entity>,