use crate::{
codec::{Decode, Encode},
decoder::BufDecoder,
encoder::BufEncoder,
error::DecodeError,
};
impl Encode for glam::Vec2 {
#[inline]
fn encode(&self, enc: &mut BufEncoder) {
self.x.encode(enc);
self.y.encode(enc);
}
}
impl Decode for glam::Vec2 {
#[inline]
fn decode(dec: &mut BufDecoder<'_>) -> Result<Self, DecodeError> {
Ok(Self::new(f32::decode(dec)?, f32::decode(dec)?))
}
}
impl Encode for glam::Vec3 {
#[inline]
fn encode(&self, enc: &mut BufEncoder) {
self.x.encode(enc);
self.y.encode(enc);
self.z.encode(enc);
}
}
impl Decode for glam::Vec3 {
#[inline]
fn decode(dec: &mut BufDecoder<'_>) -> Result<Self, DecodeError> {
Ok(Self::new(f32::decode(dec)?, f32::decode(dec)?, f32::decode(dec)?))
}
}
impl Encode for glam::Vec4 {
#[inline]
fn encode(&self, enc: &mut BufEncoder) {
self.x.encode(enc);
self.y.encode(enc);
self.z.encode(enc);
self.w.encode(enc);
}
}
impl Decode for glam::Vec4 {
#[inline]
fn decode(dec: &mut BufDecoder<'_>) -> Result<Self, DecodeError> {
Ok(Self::new(
f32::decode(dec)?, f32::decode(dec)?,
f32::decode(dec)?, f32::decode(dec)?,
))
}
}
impl Encode for glam::Quat {
#[inline]
fn encode(&self, enc: &mut BufEncoder) {
self.x.encode(enc);
self.y.encode(enc);
self.z.encode(enc);
self.w.encode(enc);
}
}
impl Decode for glam::Quat {
#[inline]
fn decode(dec: &mut BufDecoder<'_>) -> Result<Self, DecodeError> {
Ok(Self::from_xyzw(
f32::decode(dec)?, f32::decode(dec)?,
f32::decode(dec)?, f32::decode(dec)?,
))
}
}
impl Encode for glam::Mat4 {
fn encode(&self, enc: &mut BufEncoder) {
self.x_axis.encode(enc);
self.y_axis.encode(enc);
self.z_axis.encode(enc);
self.w_axis.encode(enc);
}
}
impl Decode for glam::Mat4 {
fn decode(dec: &mut BufDecoder<'_>) -> Result<Self, DecodeError> {
Ok(Self::from_cols(
glam::Vec4::decode(dec)?,
glam::Vec4::decode(dec)?,
glam::Vec4::decode(dec)?,
glam::Vec4::decode(dec)?,
))
}
}