sneak past type issues
This commit is contained in:
parent
e67f0f0889
commit
d272ac242b
@ -33,6 +33,11 @@ fn get_full_name(dom:&rbx_dom_weak::WeakDom,instance:&rbx_dom_weak::Instance)->S
|
|||||||
struct Dereferent(Ref);
|
struct Dereferent(Ref);
|
||||||
impl mlua::UserData for Dereferent{}
|
impl mlua::UserData for Dereferent{}
|
||||||
type_from_lua_userdata!(Dereferent);
|
type_from_lua_userdata!(Dereferent);
|
||||||
|
impl Referent for Dereferent{
|
||||||
|
fn referent(&self)->Ref{
|
||||||
|
self.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
trait Referent{
|
trait Referent{
|
||||||
fn referent(&self)->Ref;
|
fn referent(&self)->Ref;
|
||||||
@ -152,10 +157,11 @@ impl Instance{
|
|||||||
Ok(crate::context::class_is_a(instance.class.as_str(),classname.to_str()?))
|
Ok(crate::context::class_is_a(instance.class.as_str(),classname.to_str()?))
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,index):(Self,mlua::String)|{
|
methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,index):(mlua::AnyUserData,mlua::String)|{
|
||||||
let index_str=index.to_str()?;
|
let index_str=index.to_str()?;
|
||||||
|
let dereferent:Dereferent=mlua::AnyUserDataExt::get(&this,"Referent")?;
|
||||||
dom(lua,|dom|{
|
dom(lua,|dom|{
|
||||||
let instance=this.get(dom)?;
|
let instance=dereferent.get(dom)?;
|
||||||
//find a child with a matching name
|
//find a child with a matching name
|
||||||
let maybe_child=instance.children()
|
let maybe_child=instance.children()
|
||||||
.iter()
|
.iter()
|
||||||
@ -169,10 +175,11 @@ impl Instance{
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
methods.add_meta_function(mlua::MetaMethod::NewIndex,|lua,(this,index,value):(Self,mlua::String,mlua::Value)|
|
methods.add_meta_function(mlua::MetaMethod::NewIndex,|lua,(this,index,value):(mlua::AnyUserData,mlua::String,mlua::Value)|{
|
||||||
|
let dereferent:Dereferent=mlua::AnyUserDataExt::get(&this,"Referent")?;
|
||||||
dom(lua,|dom|{
|
dom(lua,|dom|{
|
||||||
//println!("__newindex t={this:?} i={index:?} v={value:?}");
|
let instance=dereferent.get_mut(dom)?;
|
||||||
let instance=this.get_mut(dom)?;
|
//println!("__newindex t={} i={index:?} v={value:?}",instance.name);
|
||||||
let index_str=index.to_str()?;
|
let index_str=index.to_str()?;
|
||||||
let db=rbx_reflection_database::get();
|
let db=rbx_reflection_database::get();
|
||||||
let class=db.classes.get(instance.class.as_str()).ok_or(mlua::Error::runtime("Class missing"))?;
|
let class=db.classes.get(instance.class.as_str()).ok_or(mlua::Error::runtime("Class missing"))?;
|
||||||
@ -198,7 +205,7 @@ impl Instance{
|
|||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user