Fix: Get world error. Typos.
This commit is contained in:
@@ -30,10 +30,10 @@ impl<S: Asset> DefaultAsset<S> {
|
|||||||
commands.insert_resource(DefaultAsset(handle));
|
commands.insert_resource(DefaultAsset(handle));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub(crate) fn world<'w>(lua: &Lua) -> std::result::Result<&'w mut World, mlua::Error> {
|
pub(crate) fn world(lua: &Lua) -> std::result::Result<AppDataRefMut<World>, mlua::Error> {
|
||||||
lua.app_data_mut::<&World>()
|
lua.app_data_mut::<World>()
|
||||||
.ok_or_else(Error("Direct world access not available here!".into()))
|
.ok_or(Error("Direct world access not available here!".into()))
|
||||||
.map_err(LuaError::external).deref_mut()
|
.map_err(LuaError::external)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Instance(pub Entity);
|
pub struct Instance(pub Entity);
|
||||||
@@ -47,7 +47,7 @@ impl FromLua for Instance {
|
|||||||
}
|
}
|
||||||
impl LuaUserData for Instance {
|
impl LuaUserData for Instance {
|
||||||
fn add_fields<F: LuaUserDataFields<Self>>(fields: &mut F) {
|
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)}))
|
Ok(world(&lua)?.get::<ChildOf>(this.0).map(|parent| {Instance(parent.0)}))
|
||||||
});
|
});
|
||||||
fields.add_field_method_set("parent",|lua: Lua, this, other: Option<Instance>| {
|
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();
|
let entity = world.get_entity_mut();
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});*/
|
||||||
crate::script::add_fields(fields);
|
crate::script::add_fields(fields);
|
||||||
crate::part::add_fields(fields);
|
crate::part::add_fields(fields);
|
||||||
}
|
}
|
||||||
fn add_methods<M: LuaUserDataMethods<Self>>(methods: &mut M) {
|
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)?;
|
let world = world(&lua).map_err(LuaError::external)?;
|
||||||
world.get_entity(this).map_err(LuaError::external)?;
|
world.get_entity(this).map_err(LuaError::external)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});*/
|
||||||
crate::script::add_methods(methods);
|
crate::script::add_methods(methods);
|
||||||
crate::part::add_fields(fields);
|
crate::part::add_methods(methods);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl Instance {
|
impl Instance {
|
||||||
fn world_access(&self, lua: &Lua) -> std::result::Result<EntityWorldMut, mlua::Error> {
|
fn world_access(&self, lua: &Lua) -> std::result::Result<EntityWorldMut, mlua::Error> {
|
||||||
world(lua)?.get_entity_mut(self.0).map_err(LuaError::external)
|
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());
|
T::add(self.spawn());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ impl Instance {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Duck {
|
pub trait Trait {
|
||||||
fn add(entity: &mut EntityCommands);
|
fn add(entity: &mut EntityCommands);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use mlua::prelude::{LuaUserData, LuaUserDataFields, LuaUserDataMethods};
|
|||||||
use crate::duck::instance::*;
|
use crate::duck::instance::*;
|
||||||
|
|
||||||
pub struct Part;
|
pub struct Part;
|
||||||
impl Duck for Part {
|
impl Trait for Part {
|
||||||
fn add(entity: &mut EntityCommands) {
|
fn add(entity: &mut EntityCommands) {
|
||||||
let id = entity.id();
|
let id = entity.id();
|
||||||
entity.commands().run_system_cached_with(move |
|
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) {
|
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())
|
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(())
|
Ok(())
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -52,6 +52,7 @@ impl FromLua for Transform {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
struct Transform(bevy::prelude::Transform);
|
struct Transform(bevy::prelude::Transform);
|
||||||
impl LuaUserData for Transform {
|
impl LuaUserData for Transform {
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ impl AssetLoader for ScriptAssetLoader {
|
|||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
struct Script(Handle<ScriptAsset>);
|
struct Script(Handle<ScriptAsset>);
|
||||||
|
|
||||||
impl Duck for Script {
|
impl Trait for Script {
|
||||||
fn add_to(entity: &mut EntityCommands) -> Instance {
|
fn add(entity: &mut EntityCommands) -> Instance {
|
||||||
let id = entity.id();
|
let id = entity.id();
|
||||||
entity.commands().run_system_cached_with(| // Get commands -> defer a system
|
entity.commands().run_system_cached_with(| // Get commands -> defer a system
|
||||||
In(id): In<Entity>,
|
In(id): In<Entity>,
|
||||||
|
|||||||
Reference in New Issue
Block a user