ft: quad support
This commit is contained in:
28
src/vec3.rs
28
src/vec3.rs
@@ -1,13 +1,13 @@
|
||||
use core::f32::math::sqrt;
|
||||
use is_close::default;
|
||||
use rand::RngExt;
|
||||
use serde::Deserialize;
|
||||
use serde::{Deserialize, Serialize, Serializer};
|
||||
use std::{
|
||||
fmt::Display,
|
||||
ops::{Add, AddAssign, Div, DivAssign, Mul, MulAssign, Neg, Sub, SubAssign},
|
||||
};
|
||||
|
||||
#[derive(Copy, Clone, Debug, Deserialize)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub struct Vec3 {
|
||||
x: f32,
|
||||
y: f32,
|
||||
@@ -156,6 +156,29 @@ impl Vec3 {
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for Vec3 {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
([self.x, self.y, self.z] as [f32; 3]).serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for Vec3 {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let arr = <[f32; 3]>::deserialize(deserializer)?;
|
||||
Ok(Self {
|
||||
x: arr[0],
|
||||
y: arr[1],
|
||||
z: arr[2],
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Vec3 {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
@@ -222,7 +245,6 @@ impl Add<f32> for &Vec3 {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
impl Add<f32> for Vec3 {
|
||||
type Output = Self;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user