runservice
This commit is contained in:
parent
5997d312cd
commit
70c78b66bd
@ -377,12 +377,13 @@ static CLASS_FUNCTION_DATABASE:CFD=phf::phf_map!{
|
|||||||
"GetService"=>cf!(|lua,_this,service:mlua::String|{
|
"GetService"=>cf!(|lua,_this,service:mlua::String|{
|
||||||
dom_mut(lua,|dom|{
|
dom_mut(lua,|dom|{
|
||||||
//dom.root_ref()==this.referent ?
|
//dom.root_ref()==this.referent ?
|
||||||
match &*service.to_str()?{
|
let service=&*service.to_str()?;
|
||||||
"Lighting"=>{
|
match service{
|
||||||
let referent=find_first_child_of_class(dom,dom.root(),"Lighting")
|
"Lighting"|"RunService"=>{
|
||||||
|
let referent=find_first_child_of_class(dom,dom.root(),service)
|
||||||
.map(|instance|instance.referent())
|
.map(|instance|instance.referent())
|
||||||
.unwrap_or_else(||
|
.unwrap_or_else(||
|
||||||
dom.insert(dom.root_ref(),InstanceBuilder::new("Lighting"))
|
dom.insert(dom.root_ref(),InstanceBuilder::new(service))
|
||||||
);
|
);
|
||||||
Ok(Instance::new(referent))
|
Ok(Instance::new(referent))
|
||||||
},
|
},
|
||||||
@ -504,6 +505,11 @@ type LUD=phf::Map<&'static str,// Class name
|
|||||||
>
|
>
|
||||||
>;
|
>;
|
||||||
static LAZY_USER_DATA:LUD=phf::phf_map!{
|
static LAZY_USER_DATA:LUD=phf::phf_map!{
|
||||||
|
"RunService"=>phf::phf_map!{
|
||||||
|
"RenderStepped"=>|lua|{
|
||||||
|
lua.create_any_userdata(super::script_signal::ScriptSignal::new())
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct InstanceValueStore{
|
pub struct InstanceValueStore{
|
||||||
|
@ -120,4 +120,23 @@ impl Runnable<'_>{
|
|||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
#[cfg(feature="run-service")]
|
||||||
|
pub fn run_service_step(&self)->Result<(),mlua::Error>{
|
||||||
|
let render_stepped=super::instance::dom_mut(&self.lua,|dom|{
|
||||||
|
let run_service=super::instance::find_first_child_of_class(dom,dom.root(),"RunService").ok_or_else(||mlua::Error::runtime("RunService missing"))?;
|
||||||
|
super::instance::instance_value_store_mut(&self.lua,|instance_value_store|{
|
||||||
|
//unwrap because I trust my find_first_child_of_class function to
|
||||||
|
let mut instance_values=instance_value_store.get_or_create_instance_values(run_service).ok_or_else(||mlua::Error::runtime("RunService InstanceValues missing"))?;
|
||||||
|
let render_stepped=instance_values.get_or_create_value(&self.lua,"RenderStepped")?;
|
||||||
|
//let stepped=instance_values.get_or_create_value(&self.lua,"Stepped")?;
|
||||||
|
//let heartbeat=instance_values.get_or_create_value(&self.lua,"Heartbeat")?;
|
||||||
|
Ok(render_stepped)
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
if let Some(render_stepped)=render_stepped{
|
||||||
|
let signal:&super::script_signal::ScriptSignal=&*render_stepped.borrow()?;
|
||||||
|
signal.fire(mlua::MultiValue::new());
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user