engine/render: lua userdata for resources/renderables
parent
f0dc1cca3c
commit
6055a034f0
|
@ -110,6 +110,7 @@ pub enum Renderable {
|
||||||
Light(ResourceID<Light>),
|
Light(ResourceID<Light>),
|
||||||
Mesh(ResourceID<Mesh>, ResourceID<Material>),
|
Mesh(ResourceID<Mesh>, ResourceID<Material>),
|
||||||
}
|
}
|
||||||
|
impl mlua::UserData for Renderable {}
|
||||||
|
|
||||||
impl Component for Renderable {
|
impl Component for Renderable {
|
||||||
fn id(&self) -> ecs::component::ID {
|
fn id(&self) -> ecs::component::ID {
|
||||||
|
@ -119,3 +120,27 @@ impl Component for Renderable {
|
||||||
Box::new(self.clone())
|
Box::new(self.clone())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct RenderableBindings;
|
||||||
|
|
||||||
|
impl ComponentLuaBindings for RenderableBindings {
|
||||||
|
fn globals<'a>(&self, lua: &'a mlua::Lua) -> mlua::Table<'a> {
|
||||||
|
let res = lua.create_table().unwrap();
|
||||||
|
res.set("new_mesh", lua.create_function(|_, args: (ResourceID<Mesh>, ResourceID<Light>)| {
|
||||||
|
Ok(1337)
|
||||||
|
}).unwrap()).unwrap();
|
||||||
|
res
|
||||||
|
}
|
||||||
|
fn idstr(&self) -> &'static str {
|
||||||
|
"Renderable"
|
||||||
|
}
|
||||||
|
fn id(&self) -> ecs::component::ID {
|
||||||
|
ecs::component::component_id::<Renderable>()
|
||||||
|
}
|
||||||
|
fn any_into_dyn<'a>(&self, ud: &'a mlua::AnyUserData) -> Option<Box<dyn Component>> {
|
||||||
|
match ud.borrow::<Renderable>() {
|
||||||
|
Ok(v) => Some(Box::new(Renderable::clone(&v))),
|
||||||
|
Err(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -80,6 +80,8 @@ pub struct ResourceID<T: Resource> {
|
||||||
phantom: std::marker::PhantomData<T>,
|
phantom: std::marker::PhantomData<T>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl <T: Resource> mlua::UserData for ResourceID<T> {}
|
||||||
|
|
||||||
impl <T: Resource> Clone for ResourceID<T> {
|
impl <T: Resource> Clone for ResourceID<T> {
|
||||||
fn clone(&self) -> ResourceID<T> {
|
fn clone(&self) -> ResourceID<T> {
|
||||||
ResourceID {
|
ResourceID {
|
||||||
|
|
Loading…
Reference in New Issue