mirror of
https://github.com/lune-org/lune.git
synced 2024-12-12 21:10:36 +00:00
Impl from traits for roblox datatypes
This commit is contained in:
parent
72c30d31c7
commit
d23366fc98
2 changed files with 36 additions and 15 deletions
|
@ -118,10 +118,22 @@ impl DatatypeTable for Vector2 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<&RbxVector2> for Vector2 {
|
||||||
|
fn from(v: &RbxVector2) -> Self {
|
||||||
|
Vector2(Vec2 { x: v.x, y: v.y })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&Vector2> for RbxVector2 {
|
||||||
|
fn from(v: &Vector2) -> Self {
|
||||||
|
RbxVector2 { x: v.0.x, y: v.0.y }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl FromRbxVariant for Vector2 {
|
impl FromRbxVariant for Vector2 {
|
||||||
fn from_rbx_variant(variant: &RbxVariant) -> RbxConversionResult<Self> {
|
fn from_rbx_variant(variant: &RbxVariant) -> RbxConversionResult<Self> {
|
||||||
if let RbxVariant::Vector2(v) = variant {
|
if let RbxVariant::Vector2(v) = variant {
|
||||||
Ok(Vector2(Vec2 { x: v.x, y: v.y }))
|
Ok(v.into())
|
||||||
} else {
|
} else {
|
||||||
Err(RbxConversionError::FromRbxVariant {
|
Err(RbxConversionError::FromRbxVariant {
|
||||||
from: variant.display_name(),
|
from: variant.display_name(),
|
||||||
|
@ -138,10 +150,7 @@ impl ToRbxVariant for Vector2 {
|
||||||
desired_type: Option<RbxVariantType>,
|
desired_type: Option<RbxVariantType>,
|
||||||
) -> RbxConversionResult<RbxVariant> {
|
) -> RbxConversionResult<RbxVariant> {
|
||||||
if matches!(desired_type, None | Some(RbxVariantType::Vector2)) {
|
if matches!(desired_type, None | Some(RbxVariantType::Vector2)) {
|
||||||
Ok(RbxVariant::Vector2(RbxVector2 {
|
Ok(RbxVariant::Vector2(self.into()))
|
||||||
x: self.0.x,
|
|
||||||
y: self.0.y,
|
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Err(RbxConversionError::DesiredTypeMismatch {
|
Err(RbxConversionError::DesiredTypeMismatch {
|
||||||
can_convert_to: Some(RbxVariantType::Vector2.display_name()),
|
can_convert_to: Some(RbxVariantType::Vector2.display_name()),
|
||||||
|
|
|
@ -132,14 +132,30 @@ impl DatatypeTable for Vector3 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<&RbxVector3> for Vector3 {
|
||||||
|
fn from(v: &RbxVector3) -> Self {
|
||||||
|
Vector3(Vec3 {
|
||||||
|
x: v.x,
|
||||||
|
y: v.y,
|
||||||
|
z: v.z,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&Vector3> for RbxVector3 {
|
||||||
|
fn from(v: &Vector3) -> Self {
|
||||||
|
RbxVector3 {
|
||||||
|
x: v.0.x,
|
||||||
|
y: v.0.y,
|
||||||
|
z: v.0.z,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl FromRbxVariant for Vector3 {
|
impl FromRbxVariant for Vector3 {
|
||||||
fn from_rbx_variant(variant: &RbxVariant) -> RbxConversionResult<Self> {
|
fn from_rbx_variant(variant: &RbxVariant) -> RbxConversionResult<Self> {
|
||||||
if let RbxVariant::Vector3(v) = variant {
|
if let RbxVariant::Vector3(v) = variant {
|
||||||
Ok(Vector3(Vec3 {
|
Ok(v.into())
|
||||||
x: v.x,
|
|
||||||
y: v.y,
|
|
||||||
z: v.z,
|
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Err(RbxConversionError::FromRbxVariant {
|
Err(RbxConversionError::FromRbxVariant {
|
||||||
from: variant.display_name(),
|
from: variant.display_name(),
|
||||||
|
@ -156,11 +172,7 @@ impl ToRbxVariant for Vector3 {
|
||||||
desired_type: Option<RbxVariantType>,
|
desired_type: Option<RbxVariantType>,
|
||||||
) -> RbxConversionResult<RbxVariant> {
|
) -> RbxConversionResult<RbxVariant> {
|
||||||
if matches!(desired_type, None | Some(RbxVariantType::Vector3)) {
|
if matches!(desired_type, None | Some(RbxVariantType::Vector3)) {
|
||||||
Ok(RbxVariant::Vector3(RbxVector3 {
|
Ok(RbxVariant::Vector3(self.into()))
|
||||||
x: self.0.x,
|
|
||||||
y: self.0.y,
|
|
||||||
z: self.0.z,
|
|
||||||
}))
|
|
||||||
} else {
|
} else {
|
||||||
Err(RbxConversionError::DesiredTypeMismatch {
|
Err(RbxConversionError::DesiredTypeMismatch {
|
||||||
can_convert_to: Some(RbxVariantType::Vector3.display_name()),
|
can_convert_to: Some(RbxVariantType::Vector3.display_name()),
|
||||||
|
|
Loading…
Reference in a new issue