mirror_mirror/foreign_impls/
glam.rs

1use glam::{Mat3, Vec2, Vec3};
2use mirror_mirror_macros::__private_derive_reflect_foreign;
3
4__private_derive_reflect_foreign! {
5    #[reflect(crate_name(crate))]
6    pub struct Vec2 {
7        pub x: f32,
8        pub y: f32,
9    }
10}
11
12__private_derive_reflect_foreign! {
13    #[reflect(crate_name(crate))]
14    pub struct Vec3 {
15        pub x: f32,
16        pub y: f32,
17        pub z: f32,
18    }
19}
20
21// `Vec4`, `Quat`, and `Mat2` are left out because glam uses bad hacks which changes the struct
22// definitions for different architectures (simd vs no simd) and cargo features. So we'd have
23// to use the same hacks in mirror-mirror which I'd like to avoid.
24
25// `Mat4` is left out because it contains `Vec4` which we don't support.
26
27__private_derive_reflect_foreign! {
28    #[reflect(crate_name(crate))]
29    pub struct Mat3 {
30        pub x_axis: Vec3,
31        pub y_axis: Vec3,
32        pub z_axis: Vec3,
33    }
34}