roblox_emulator: implement Vector3.__mul
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
use mlua::FromLua;
|
||||||
|
|
||||||
use super::number::Number;
|
use super::number::Number;
|
||||||
|
|
||||||
#[derive(Clone,Copy)]
|
#[derive(Clone,Copy)]
|
||||||
@ -55,6 +57,20 @@ impl mlua::UserData for Vector3{
|
|||||||
|
|
||||||
methods.add_meta_function(mlua::MetaMethod::Add,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this+val)));
|
methods.add_meta_function(mlua::MetaMethod::Add,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this+val)));
|
||||||
methods.add_meta_function(mlua::MetaMethod::Sub,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this-val)));
|
methods.add_meta_function(mlua::MetaMethod::Sub,|_,(Vector3(this),Vector3(val)):(Self,Self)|Ok(Self(this-val)));
|
||||||
|
methods.add_meta_function(mlua::MetaMethod::Mul,|lua,(lhs,rhs):(mlua::Value,mlua::Value)|{
|
||||||
|
match (lhs,rhs){
|
||||||
|
(mlua::Value::UserData(lhs),mlua::Value::UserData(rhs))=>lhs.borrow_scoped(|Vector3(lhs):&Vector3|rhs.borrow_scoped(|Vector3(rhs):&Vector3|Self(lhs*rhs)))?,
|
||||||
|
(lhs,mlua::Value::UserData(rhs))=>{
|
||||||
|
let lhs=Number::from_lua(lhs,lua)?;
|
||||||
|
rhs.borrow_scoped(|Vector3(rhs):&Vector3|Self(lhs.to_f32()*rhs))
|
||||||
|
},
|
||||||
|
(mlua::Value::UserData(lhs),rhs)=>{
|
||||||
|
let rhs=Number::from_lua(rhs,lua)?;
|
||||||
|
lhs.borrow_scoped(|Vector3(lhs):&Vector3|Self(lhs*rhs.to_f32()))
|
||||||
|
},
|
||||||
|
_=>Err(mlua::Error::runtime(format!("Expected Vector3")))
|
||||||
|
}
|
||||||
|
});
|
||||||
methods.add_meta_function(mlua::MetaMethod::Div,|_,(Vector3(this),val):(Self,mlua::Value)|{
|
methods.add_meta_function(mlua::MetaMethod::Div,|_,(Vector3(this),val):(Self,mlua::Value)|{
|
||||||
match val{
|
match val{
|
||||||
mlua::Value::Integer(n)=>Ok(Self(this/(n as f32))),
|
mlua::Value::Integer(n)=>Ok(Self(this/(n as f32))),
|
||||||
|
Reference in New Issue
Block a user