1use super::*;
2
3#[derive(Clone, Copy, Data, Debug, Default, Eq, Hash, New, Ord, PartialEq, PartialOrd)]
9pub struct Numeric;
10
11#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
13pub struct Vector2D {
14 #[get(type(copy))]
16 #[get_mut(pub(crate))]
17 pub x: f64,
18 #[get(type(copy))]
20 #[get_mut(pub(crate))]
21 pub y: f64,
22}
23
24#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
26pub struct Rect {
27 #[get(type(copy))]
29 #[get_mut(pub(crate))]
30 pub x: f64,
31 #[get(type(copy))]
33 #[get_mut(pub(crate))]
34 pub y: f64,
35 #[get(type(copy))]
37 #[get_mut(pub(crate))]
38 pub width: f64,
39 #[get(type(copy))]
41 #[get_mut(pub(crate))]
42 pub height: f64,
43}
44
45#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
47pub struct Circle {
48 #[get(type(copy))]
50 #[get_mut(pub(crate))]
51 #[set(pub(crate))]
52 pub center: Vector2D,
53 #[get(type(copy))]
55 #[get_mut(pub(crate))]
56 #[set(pub(crate))]
57 pub radius: f64,
58}
59
60#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
62pub struct Transform2D {
63 #[get(type(copy))]
65 #[get_mut(pub(crate))]
66 pub position: Vector2D,
67 #[get(pub(crate), type(copy))]
69 #[get_mut(pub(crate))]
70 #[set(pub(crate))]
71 pub(crate) rotation: f64,
72 #[get(pub(crate), type(copy))]
74 #[get_mut(pub(crate))]
75 #[set(pub(crate))]
76 pub(crate) scale: Vector2D,
77}
78
79#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
81pub struct Color {
82 #[get(type(copy))]
84 #[get_mut(pub(crate))]
85 #[set(pub(crate))]
86 pub red: f64,
87 #[get(type(copy))]
89 #[get_mut(pub(crate))]
90 #[set(pub(crate))]
91 pub green: f64,
92 #[get(type(copy))]
94 #[get_mut(pub(crate))]
95 #[set(pub(crate))]
96 pub blue: f64,
97 #[get(type(copy))]
99 pub alpha: f64,
100}
101
102#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
104pub struct Vector3D {
105 #[get(type(copy))]
107 #[get_mut(pub(crate))]
108 pub x: f64,
109 #[get(type(copy))]
111 #[get_mut(pub(crate))]
112 pub y: f64,
113 #[get(type(copy))]
115 #[get_mut(pub(crate))]
116 pub z: f64,
117}
118
119#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
121pub struct Quaternion {
122 #[get(type(copy))]
124 #[get_mut(pub(crate))]
125 pub x: f64,
126 #[get(type(copy))]
128 #[get_mut(pub(crate))]
129 pub y: f64,
130 #[get(type(copy))]
132 #[get_mut(pub(crate))]
133 pub z: f64,
134 #[get(type(copy))]
136 #[get_mut(pub(crate))]
137 #[set(pub(crate))]
138 pub w: f64,
139}
140
141#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
143pub struct Matrix4x4 {
144 #[get_mut(pub(crate))]
149 #[get(type(copy))]
150 #[set(pub(crate))]
151 pub elements: [f64; 16],
152}
153
154#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
156pub struct Transform3D {
157 #[get(type(copy))]
159 #[get_mut(pub(crate))]
160 pub position: Vector3D,
161 #[get(pub(crate), type(copy))]
163 #[get_mut(pub(crate))]
164 #[set(pub(crate))]
165 pub(crate) rotation: Quaternion,
166 #[get(pub(crate), type(copy))]
168 #[get_mut(pub(crate))]
169 #[set(pub(crate))]
170 pub(crate) scale: Vector3D,
171}
172
173#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
175pub struct AABB3D {
176 #[get(type(copy))]
178 #[get_mut(pub(crate))]
179 #[set(pub(crate))]
180 pub min: Vector3D,
181 #[get(type(copy))]
183 #[get_mut(pub(crate))]
184 #[set(pub(crate))]
185 pub max: Vector3D,
186}
187
188#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
190pub struct Sphere {
191 #[get(type(copy))]
193 #[get_mut(pub(crate))]
194 #[set(pub(crate))]
195 pub center: Vector3D,
196 #[get(type(copy))]
198 #[get_mut(pub(crate))]
199 #[set(pub(crate))]
200 pub radius: f64,
201}
202
203#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
205pub struct Plane {
206 #[get(type(copy), pub(crate))]
208 #[get_mut(pub(crate))]
209 #[set(pub(crate))]
210 pub(crate) normal: Vector3D,
211 #[get(type(copy), pub(crate))]
213 #[get_mut(pub(crate))]
214 #[set(pub(crate))]
215 pub(crate) distance: f64,
216}
217
218#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
220pub struct Ray3D {
221 #[get(type(copy))]
223 #[get_mut(pub(crate))]
224 #[set(pub(crate))]
225 pub origin: Vector3D,
226 #[get(type(copy))]
228 #[get_mut(pub(crate))]
229 pub direction: Vector3D,
230}
231
232#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
235pub struct Ray2D {
236 #[get(type(copy))]
238 #[get_mut(pub(crate))]
239 #[set(pub(crate))]
240 pub origin: Vector2D,
241 #[get(type(copy))]
243 #[get_mut(pub(crate))]
244 pub direction: Vector2D,
245}