roblox_emulator: implement UDim & UDim2
This commit is contained in:
@@ -3,6 +3,8 @@ mod macros;
|
||||
mod runner;
|
||||
|
||||
mod r#enum;
|
||||
mod udim;
|
||||
mod udim2;
|
||||
mod color3;
|
||||
mod cframe;
|
||||
mod vector3;
|
||||
|
||||
@@ -35,6 +35,8 @@ fn init(lua:&mlua::Lua)->mlua::Result<()>{
|
||||
crate::scheduler::set_globals(lua,&globals)?;
|
||||
super::script_signal::set_globals(lua,&globals)?;
|
||||
super::r#enum::set_globals(lua,&globals)?;
|
||||
super::udim::set_globals(lua,&globals)?;
|
||||
super::udim2::set_globals(lua,&globals)?;
|
||||
super::color3::set_globals(lua,&globals)?;
|
||||
super::brickcolor::set_globals(lua,&globals)?;
|
||||
super::vector3::set_globals(lua,&globals)?;
|
||||
|
||||
34
lib/roblox_emulator/src/runner/udim.rs
Normal file
34
lib/roblox_emulator/src/runner/udim.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
#[derive(Clone,Copy)]
|
||||
pub struct UDim(rbx_types::UDim);
|
||||
impl UDim{
|
||||
pub fn new(scale:f32,offset:i32)->Self{
|
||||
UDim(rbx_types::UDim::new(scale,offset))
|
||||
}
|
||||
}
|
||||
impl From<rbx_types::UDim> for UDim{
|
||||
fn from(value:rbx_types::UDim)->Self{
|
||||
Self(value)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
|
||||
let table=lua.create_table()?;
|
||||
|
||||
table.raw_set("new",
|
||||
lua.create_function(|_,(scale,offset):(f32,i32)|
|
||||
Ok(UDim::new(scale,offset))
|
||||
)?
|
||||
)?;
|
||||
|
||||
globals.set("UDim",table)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
impl mlua::UserData for UDim{
|
||||
fn add_fields<F:mlua::UserDataFields<Self>>(fields:&mut F){
|
||||
fields.add_field_method_get("Scale",|_,UDim(this)|Ok(this.scale));
|
||||
fields.add_field_method_get("Offset",|_,UDim(this)|Ok(this.offset));
|
||||
}
|
||||
}
|
||||
type_from_lua_userdata!(UDim);
|
||||
34
lib/roblox_emulator/src/runner/udim2.rs
Normal file
34
lib/roblox_emulator/src/runner/udim2.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
use super::udim::UDim;
|
||||
|
||||
#[derive(Clone,Copy)]
|
||||
pub struct UDim2(rbx_types::UDim2);
|
||||
impl UDim2{
|
||||
pub fn new(sx:f32,ox:i32,sy:f32,oy:i32)->Self{
|
||||
UDim2(rbx_types::UDim2::new(
|
||||
rbx_types::UDim::new(sx,ox),
|
||||
rbx_types::UDim::new(sy,oy),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{
|
||||
let table=lua.create_table()?;
|
||||
|
||||
table.raw_set("new",
|
||||
lua.create_function(|_,(sx,ox,sy,oy):(f32,i32,f32,i32)|
|
||||
Ok(UDim2::new(sx,ox,sy,oy))
|
||||
)?
|
||||
)?;
|
||||
|
||||
globals.set("UDim2",table)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
impl mlua::UserData for UDim2{
|
||||
fn add_fields<F:mlua::UserDataFields<Self>>(fields:&mut F){
|
||||
fields.add_field_method_get("X",|_,UDim2(this)|Ok(UDim::from(this.x)));
|
||||
fields.add_field_method_get("Y",|_,UDim2(this)|Ok(UDim::from(this.y)));
|
||||
}
|
||||
}
|
||||
type_from_lua_userdata!(UDim2);
|
||||
Reference in New Issue
Block a user