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(crate) x: f64,
18 #[get(type(copy))]
20 #[get_mut(pub(crate))]
21 pub(crate) 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(crate) x: f64,
31 #[get(type(copy))]
33 #[get_mut(pub(crate))]
34 pub(crate) y: f64,
35 #[get(type(copy))]
37 #[get_mut(pub(crate))]
38 pub(crate) width: f64,
39 #[get(type(copy))]
41 #[get_mut(pub(crate))]
42 pub(crate) 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(crate) center: Vector2D,
53 #[get(type(copy))]
55 #[get_mut(pub(crate))]
56 #[set(pub(crate))]
57 pub(crate) 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 #[set(pub(crate))]
67 pub(crate) position: Vector2D,
68 #[get(pub(crate), type(copy))]
70 #[get_mut(pub(crate))]
71 #[set(pub(crate))]
72 pub(crate) rotation: f64,
73 #[get(pub(crate), type(copy))]
75 #[get_mut(pub(crate))]
76 #[set(pub(crate))]
77 pub(crate) scale: Vector2D,
78}
79
80#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
82pub struct Color {
83 #[get(type(copy))]
85 #[get_mut(pub(crate))]
86 #[set(pub(crate))]
87 pub(crate) red: f64,
88 #[get(type(copy))]
90 #[get_mut(pub(crate))]
91 #[set(pub(crate))]
92 pub(crate) green: f64,
93 #[get(type(copy))]
95 #[get_mut(pub(crate))]
96 #[set(pub(crate))]
97 pub(crate) blue: f64,
98 #[get(type(copy))]
100 pub(crate) alpha: f64,
101}
102
103#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
105pub struct Vector3D {
106 #[get(type(copy))]
108 #[get_mut(pub(crate))]
109 pub(crate) x: f64,
110 #[get(type(copy))]
112 #[get_mut(pub(crate))]
113 pub(crate) y: f64,
114 #[get(type(copy))]
116 #[get_mut(pub(crate))]
117 #[set(pub(crate))]
118 pub(crate) z: f64,
119}
120
121#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
123pub struct Quaternion {
124 #[get(type(copy))]
126 #[get_mut(pub(crate))]
127 pub(crate) x: f64,
128 #[get(type(copy))]
130 #[get_mut(pub(crate))]
131 pub(crate) y: f64,
132 #[get(type(copy))]
134 #[get_mut(pub(crate))]
135 #[set(pub(crate))]
136 pub(crate) z: f64,
137 #[get(type(copy))]
139 #[get_mut(pub(crate))]
140 #[set(pub(crate))]
141 pub(crate) w: f64,
142}
143
144#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
146pub struct Matrix4x4 {
147 #[get(type(copy))]
149 #[get_mut(pub(crate))]
150 #[set(pub(crate))]
151 pub(crate) 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 #[set(pub(crate))]
161 pub(crate) position: Vector3D,
162 #[get(pub(crate), type(copy))]
164 #[get_mut(pub(crate))]
165 #[set(pub(crate))]
166 pub(crate) rotation: Quaternion,
167 #[get(pub(crate), type(copy))]
169 #[get_mut(pub(crate))]
170 #[set(pub(crate))]
171 pub(crate) scale: Vector3D,
172}
173
174#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
176pub struct AABB3D {
177 #[get(type(copy))]
179 #[get_mut(pub(crate))]
180 #[set(pub(crate))]
181 pub(crate) min: Vector3D,
182 #[get(type(copy))]
184 #[get_mut(pub(crate))]
185 #[set(pub(crate))]
186 pub(crate) max: Vector3D,
187}
188
189#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
191pub struct Sphere {
192 #[get(type(copy))]
194 #[get_mut(pub(crate))]
195 #[set(pub(crate))]
196 pub(crate) center: Vector3D,
197 #[get(type(copy))]
199 #[get_mut(pub(crate))]
200 #[set(pub(crate))]
201 pub(crate) radius: f64,
202}
203
204#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
206pub struct Plane {
207 #[get(type(copy))]
209 #[get_mut(pub(crate))]
210 #[set(pub(crate))]
211 pub(crate) normal: Vector3D,
212 #[get(type(copy))]
214 #[get_mut(pub(crate))]
215 #[set(pub(crate))]
216 pub(crate) distance: f64,
217}
218
219#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
221pub struct Ray3D {
222 #[get(type(copy))]
224 #[get_mut(pub(crate))]
225 #[set(pub(crate))]
226 pub(crate) origin: Vector3D,
227 #[get(type(copy))]
229 #[get_mut(pub(crate))]
230 pub(crate) direction: Vector3D,
231}
232
233#[derive(Clone, Copy, Data, Debug, Default, New, PartialEq, PartialOrd)]
236pub struct Ray2D {
237 #[get(type(copy))]
239 #[get_mut(pub(crate))]
240 #[set(pub(crate))]
241 pub(crate) origin: Vector2D,
242 #[get(type(copy))]
244 #[get_mut(pub(crate))]
245 pub(crate) direction: Vector2D,
246}