Compare commits
4 Commits
f259022666
...
e39b2cd674
Author | SHA1 | Date | |
---|---|---|---|
e39b2cd674 | |||
7625ea0959 | |||
784dde3386 | |||
fa4ae23381 |
31
src/runner/color_sequence.rs
Normal file
31
src/runner/color_sequence.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#[derive(Clone,Copy)]
|
||||||
|
pub struct ColorSequence{}
|
||||||
|
impl ColorSequence{
|
||||||
|
pub const fn new()->Self{
|
||||||
|
Self{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl Into<rbx_types::ColorSequence> for ColorSequence{
|
||||||
|
fn into(self)->rbx_types::ColorSequence{
|
||||||
|
rbx_types::ColorSequence{
|
||||||
|
keypoints:Vec::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
|
||||||
|
let number_sequence_table=lua.create_table()?;
|
||||||
|
|
||||||
|
number_sequence_table.raw_set("new",
|
||||||
|
lua.create_function(|_,_:mlua::MultiValue|
|
||||||
|
Ok(ColorSequence::new())
|
||||||
|
)?
|
||||||
|
)?;
|
||||||
|
|
||||||
|
globals.set("ColorSequence",number_sequence_table)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
impl mlua::UserData for ColorSequence{}
|
||||||
|
type_from_lua_userdata!(ColorSequence);
|
@ -267,12 +267,10 @@ impl mlua::UserData for Instance{
|
|||||||
database:db,
|
database:db,
|
||||||
descriptor:Some(class),
|
descriptor:Some(class),
|
||||||
};
|
};
|
||||||
iter.find_map(|class|
|
iter.find_map(|class|{
|
||||||
cf.get_or_create_class_methods(&class.name)
|
let mut class_methods=cf.get_or_create_class_methods(&class.name)?;
|
||||||
.and_then(|mut class_methods|
|
|
||||||
class_methods.get_or_create_function(lua,index_str).transpose()
|
class_methods.get_or_create_function(lua,index_str).transpose()
|
||||||
)
|
}).transpose()
|
||||||
).transpose()
|
|
||||||
})?{
|
})?{
|
||||||
return function.into_lua(lua);
|
return function.into_lua(lua);
|
||||||
}
|
}
|
||||||
@ -296,7 +294,7 @@ impl mlua::UserData for Instance{
|
|||||||
let property=iter.find_map(|cls|cls.properties.get(index_str)).ok_or(mlua::Error::runtime(format!("Property '{index_str}' missing on class '{}'",class.name)))?;
|
let property=iter.find_map(|cls|cls.properties.get(index_str)).ok_or(mlua::Error::runtime(format!("Property '{index_str}' missing on class '{}'",class.name)))?;
|
||||||
match &property.data_type{
|
match &property.data_type{
|
||||||
rbx_reflection::DataType::Value(rbx_types::VariantType::Vector3)=>{
|
rbx_reflection::DataType::Value(rbx_types::VariantType::Vector3)=>{
|
||||||
let typed_value:Vector3=value.as_userdata().ok_or(mlua::Error::runtime("Expected Userdata"))?.take()?;
|
let typed_value:Vector3=*value.as_userdata().ok_or(mlua::Error::runtime("Expected Userdata"))?.borrow()?;
|
||||||
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Vector3(typed_value.into()));
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Vector3(typed_value.into()));
|
||||||
},
|
},
|
||||||
rbx_reflection::DataType::Value(rbx_types::VariantType::Float32)=>{
|
rbx_reflection::DataType::Value(rbx_types::VariantType::Float32)=>{
|
||||||
@ -312,7 +310,7 @@ impl mlua::UserData for Instance{
|
|||||||
Ok(rbx_types::Enum::from_u32(*e.items.get(&*s.to_str()?).ok_or(mlua::Error::runtime("Invalid enum item"))?))
|
Ok(rbx_types::Enum::from_u32(*e.items.get(&*s.to_str()?).ok_or(mlua::Error::runtime("Invalid enum item"))?))
|
||||||
},
|
},
|
||||||
mlua::Value::UserData(any_user_data)=>{
|
mlua::Value::UserData(any_user_data)=>{
|
||||||
let e:super::r#enum::Enum=any_user_data.take()?;
|
let e:super::r#enum::Enum=*any_user_data.borrow()?;
|
||||||
Ok(e.into())
|
Ok(e.into())
|
||||||
},
|
},
|
||||||
_=>Err(mlua::Error::runtime("Expected Enum")),
|
_=>Err(mlua::Error::runtime("Expected Enum")),
|
||||||
@ -320,7 +318,7 @@ impl mlua::UserData for Instance{
|
|||||||
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Enum(typed_value));
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Enum(typed_value));
|
||||||
},
|
},
|
||||||
rbx_reflection::DataType::Value(rbx_types::VariantType::Color3)=>{
|
rbx_reflection::DataType::Value(rbx_types::VariantType::Color3)=>{
|
||||||
let typed_value:super::color3::Color3=value.as_userdata().ok_or(mlua::Error::runtime("Expected Color3"))?.take()?;
|
let typed_value:super::color3::Color3=*value.as_userdata().ok_or(mlua::Error::runtime("Expected Color3"))?.borrow()?;
|
||||||
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Color3(typed_value.into()));
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::Color3(typed_value.into()));
|
||||||
},
|
},
|
||||||
rbx_reflection::DataType::Value(rbx_types::VariantType::Bool)=>{
|
rbx_reflection::DataType::Value(rbx_types::VariantType::Bool)=>{
|
||||||
@ -331,6 +329,14 @@ impl mlua::UserData for Instance{
|
|||||||
let typed_value=value.as_str().ok_or(mlua::Error::runtime("Expected boolean"))?;
|
let typed_value=value.as_str().ok_or(mlua::Error::runtime("Expected boolean"))?;
|
||||||
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::String(typed_value.to_owned()));
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::String(typed_value.to_owned()));
|
||||||
},
|
},
|
||||||
|
rbx_reflection::DataType::Value(rbx_types::VariantType::NumberSequence)=>{
|
||||||
|
let typed_value:super::number_sequence::NumberSequence=*value.as_userdata().ok_or(mlua::Error::runtime("Expected NumberSequence"))?.borrow()?;
|
||||||
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::NumberSequence(typed_value.into()));
|
||||||
|
},
|
||||||
|
rbx_reflection::DataType::Value(rbx_types::VariantType::ColorSequence)=>{
|
||||||
|
let typed_value:super::color_sequence::ColorSequence=*value.as_userdata().ok_or(mlua::Error::runtime("Expected ColorSequence"))?.borrow()?;
|
||||||
|
instance.properties.insert(index_str.to_owned(),rbx_types::Variant::ColorSequence(typed_value.into()));
|
||||||
|
},
|
||||||
other=>return Err(mlua::Error::runtime(format!("Unimplemented property type: {other:?}"))),
|
other=>return Err(mlua::Error::runtime(format!("Unimplemented property type: {other:?}"))),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -7,5 +7,7 @@ mod color3;
|
|||||||
mod cframe;
|
mod cframe;
|
||||||
mod vector3;
|
mod vector3;
|
||||||
pub mod instance;
|
pub mod instance;
|
||||||
|
mod number_sequence;
|
||||||
|
mod color_sequence;
|
||||||
|
|
||||||
pub use runner::{Runner,Error};
|
pub use runner::{Runner,Error};
|
||||||
|
31
src/runner/number_sequence.rs
Normal file
31
src/runner/number_sequence.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#[derive(Clone,Copy)]
|
||||||
|
pub struct NumberSequence{}
|
||||||
|
impl NumberSequence{
|
||||||
|
pub const fn new()->Self{
|
||||||
|
Self{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl Into<rbx_types::NumberSequence> for NumberSequence{
|
||||||
|
fn into(self)->rbx_types::NumberSequence{
|
||||||
|
rbx_types::NumberSequence{
|
||||||
|
keypoints:Vec::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
|
||||||
|
let number_sequence_table=lua.create_table()?;
|
||||||
|
|
||||||
|
number_sequence_table.raw_set("new",
|
||||||
|
lua.create_function(|_,_:mlua::MultiValue|
|
||||||
|
Ok(NumberSequence::new())
|
||||||
|
)?
|
||||||
|
)?;
|
||||||
|
|
||||||
|
globals.set("NumberSequence",number_sequence_table)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
impl mlua::UserData for NumberSequence{}
|
||||||
|
type_from_lua_userdata!(NumberSequence);
|
@ -34,6 +34,8 @@ fn init(lua:&mlua::Lua)->mlua::Result<()>{
|
|||||||
super::vector3::set_globals(lua,&globals)?;
|
super::vector3::set_globals(lua,&globals)?;
|
||||||
super::cframe::set_globals(lua,&globals)?;
|
super::cframe::set_globals(lua,&globals)?;
|
||||||
super::instance::set_globals(lua,&globals)?;
|
super::instance::set_globals(lua,&globals)?;
|
||||||
|
super::number_sequence::set_globals(lua,&globals)?;
|
||||||
|
super::color_sequence::set_globals(lua,&globals)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user