use nalgebra::{Matrix2, Matrix3, Matrix4, UnitComplex, UnitQuaternion, Vector2, Vector3, Vector4};
use uuid::Uuid;
#[derive(PartialEq, Debug)]
pub enum FieldKind {
Bool(bool),
U8(u8),
I8(i8),
U16(u16),
I16(i16),
U32(u32),
I32(i32),
U64(u64),
I64(i64),
F32(f32),
F64(f64),
UnitQuaternion(UnitQuaternion<f32>),
Matrix4(Matrix4<f32>),
BinaryBlob(Vec<u8>),
Matrix3(Matrix3<f32>),
Uuid(Uuid),
UnitComplex(UnitComplex<f32>),
PodArray {
type_id: u8,
element_size: u32,
bytes: Vec<u8>,
},
Matrix2(Matrix2<f32>),
Vector2F32(Vector2<f32>),
Vector3F32(Vector3<f32>),
Vector4F32(Vector4<f32>),
Vector2F64(Vector2<f64>),
Vector3F64(Vector3<f64>),
Vector4F64(Vector4<f64>),
Vector2U8(Vector2<u8>),
Vector3U8(Vector3<u8>),
Vector4U8(Vector4<u8>),
Vector2I8(Vector2<i8>),
Vector3I8(Vector3<i8>),
Vector4I8(Vector4<i8>),
Vector2U16(Vector2<u16>),
Vector3U16(Vector3<u16>),
Vector4U16(Vector4<u16>),
Vector2I16(Vector2<i16>),
Vector3I16(Vector3<i16>),
Vector4I16(Vector4<i16>),
Vector2U32(Vector2<u32>),
Vector3U32(Vector3<u32>),
Vector4U32(Vector4<u32>),
Vector2I32(Vector2<i32>),
Vector3I32(Vector3<i32>),
Vector4I32(Vector4<i32>),
Vector2U64(Vector2<u64>),
Vector3U64(Vector3<u64>),
Vector4U64(Vector4<u64>),
Vector2I64(Vector2<i64>),
Vector3I64(Vector3<i64>),
Vector4I64(Vector4<i64>),
String(String),
}
#[derive(PartialEq, Debug)]
pub struct Field {
pub name: String,
pub kind: FieldKind,
}
impl Field {
pub fn new(name: &str, kind: FieldKind) -> Self {
Self {
name: name.to_owned(),
kind,
}
}
}