1use crate::{Vec2, Vec3, Vec3Swizzles, Vec4};
4
5impl Vec3Swizzles for Vec3 {
6 type Vec2 = Vec2;
7
8 type Vec4 = Vec4;
9
10 #[inline]
11 fn xx(self) -> Vec2 {
12 Vec2 {
13 x: self.x,
14 y: self.x,
15 }
16 }
17
18 #[inline]
19 fn xy(self) -> Vec2 {
20 Vec2 {
21 x: self.x,
22 y: self.y,
23 }
24 }
25
26 #[inline]
27 fn with_xy(self, rhs: Vec2) -> Self {
28 Self::new(rhs.x, rhs.y, self.z)
29 }
30
31 #[inline]
32 fn xz(self) -> Vec2 {
33 Vec2 {
34 x: self.x,
35 y: self.z,
36 }
37 }
38
39 #[inline]
40 fn with_xz(self, rhs: Vec2) -> Self {
41 Self::new(rhs.x, self.y, rhs.y)
42 }
43
44 #[inline]
45 fn yx(self) -> Vec2 {
46 Vec2 {
47 x: self.y,
48 y: self.x,
49 }
50 }
51
52 #[inline]
53 fn with_yx(self, rhs: Vec2) -> Self {
54 Self::new(rhs.y, rhs.x, self.z)
55 }
56
57 #[inline]
58 fn yy(self) -> Vec2 {
59 Vec2 {
60 x: self.y,
61 y: self.y,
62 }
63 }
64
65 #[inline]
66 fn yz(self) -> Vec2 {
67 Vec2 {
68 x: self.y,
69 y: self.z,
70 }
71 }
72
73 #[inline]
74 fn with_yz(self, rhs: Vec2) -> Self {
75 Self::new(self.x, rhs.x, rhs.y)
76 }
77
78 #[inline]
79 fn zx(self) -> Vec2 {
80 Vec2 {
81 x: self.z,
82 y: self.x,
83 }
84 }
85
86 #[inline]
87 fn with_zx(self, rhs: Vec2) -> Self {
88 Self::new(rhs.y, self.y, rhs.x)
89 }
90
91 #[inline]
92 fn zy(self) -> Vec2 {
93 Vec2 {
94 x: self.z,
95 y: self.y,
96 }
97 }
98
99 #[inline]
100 fn with_zy(self, rhs: Vec2) -> Self {
101 Self::new(self.x, rhs.y, rhs.x)
102 }
103
104 #[inline]
105 fn zz(self) -> Vec2 {
106 Vec2 {
107 x: self.z,
108 y: self.z,
109 }
110 }
111
112 #[inline]
113 fn xxx(self) -> Vec3 {
114 Vec3::new(self.x, self.x, self.x)
115 }
116
117 #[inline]
118 fn xxy(self) -> Vec3 {
119 Vec3::new(self.x, self.x, self.y)
120 }
121
122 #[inline]
123 fn xxz(self) -> Vec3 {
124 Vec3::new(self.x, self.x, self.z)
125 }
126
127 #[inline]
128 fn xyx(self) -> Vec3 {
129 Vec3::new(self.x, self.y, self.x)
130 }
131
132 #[inline]
133 fn xyy(self) -> Vec3 {
134 Vec3::new(self.x, self.y, self.y)
135 }
136
137 #[inline]
138 fn xzx(self) -> Vec3 {
139 Vec3::new(self.x, self.z, self.x)
140 }
141
142 #[inline]
143 fn xzy(self) -> Vec3 {
144 Vec3::new(self.x, self.z, self.y)
145 }
146
147 #[inline]
148 fn xzz(self) -> Vec3 {
149 Vec3::new(self.x, self.z, self.z)
150 }
151
152 #[inline]
153 fn yxx(self) -> Vec3 {
154 Vec3::new(self.y, self.x, self.x)
155 }
156
157 #[inline]
158 fn yxy(self) -> Vec3 {
159 Vec3::new(self.y, self.x, self.y)
160 }
161
162 #[inline]
163 fn yxz(self) -> Vec3 {
164 Vec3::new(self.y, self.x, self.z)
165 }
166
167 #[inline]
168 fn yyx(self) -> Vec3 {
169 Vec3::new(self.y, self.y, self.x)
170 }
171
172 #[inline]
173 fn yyy(self) -> Vec3 {
174 Vec3::new(self.y, self.y, self.y)
175 }
176
177 #[inline]
178 fn yyz(self) -> Vec3 {
179 Vec3::new(self.y, self.y, self.z)
180 }
181
182 #[inline]
183 fn yzx(self) -> Vec3 {
184 Vec3::new(self.y, self.z, self.x)
185 }
186
187 #[inline]
188 fn yzy(self) -> Vec3 {
189 Vec3::new(self.y, self.z, self.y)
190 }
191
192 #[inline]
193 fn yzz(self) -> Vec3 {
194 Vec3::new(self.y, self.z, self.z)
195 }
196
197 #[inline]
198 fn zxx(self) -> Vec3 {
199 Vec3::new(self.z, self.x, self.x)
200 }
201
202 #[inline]
203 fn zxy(self) -> Vec3 {
204 Vec3::new(self.z, self.x, self.y)
205 }
206
207 #[inline]
208 fn zxz(self) -> Vec3 {
209 Vec3::new(self.z, self.x, self.z)
210 }
211
212 #[inline]
213 fn zyx(self) -> Vec3 {
214 Vec3::new(self.z, self.y, self.x)
215 }
216
217 #[inline]
218 fn zyy(self) -> Vec3 {
219 Vec3::new(self.z, self.y, self.y)
220 }
221
222 #[inline]
223 fn zyz(self) -> Vec3 {
224 Vec3::new(self.z, self.y, self.z)
225 }
226
227 #[inline]
228 fn zzx(self) -> Vec3 {
229 Vec3::new(self.z, self.z, self.x)
230 }
231
232 #[inline]
233 fn zzy(self) -> Vec3 {
234 Vec3::new(self.z, self.z, self.y)
235 }
236
237 #[inline]
238 fn zzz(self) -> Vec3 {
239 Vec3::new(self.z, self.z, self.z)
240 }
241
242 #[inline]
243 fn xxxx(self) -> Vec4 {
244 Vec4::new(self.x, self.x, self.x, self.x)
245 }
246
247 #[inline]
248 fn xxxy(self) -> Vec4 {
249 Vec4::new(self.x, self.x, self.x, self.y)
250 }
251
252 #[inline]
253 fn xxxz(self) -> Vec4 {
254 Vec4::new(self.x, self.x, self.x, self.z)
255 }
256
257 #[inline]
258 fn xxyx(self) -> Vec4 {
259 Vec4::new(self.x, self.x, self.y, self.x)
260 }
261
262 #[inline]
263 fn xxyy(self) -> Vec4 {
264 Vec4::new(self.x, self.x, self.y, self.y)
265 }
266
267 #[inline]
268 fn xxyz(self) -> Vec4 {
269 Vec4::new(self.x, self.x, self.y, self.z)
270 }
271
272 #[inline]
273 fn xxzx(self) -> Vec4 {
274 Vec4::new(self.x, self.x, self.z, self.x)
275 }
276
277 #[inline]
278 fn xxzy(self) -> Vec4 {
279 Vec4::new(self.x, self.x, self.z, self.y)
280 }
281
282 #[inline]
283 fn xxzz(self) -> Vec4 {
284 Vec4::new(self.x, self.x, self.z, self.z)
285 }
286
287 #[inline]
288 fn xyxx(self) -> Vec4 {
289 Vec4::new(self.x, self.y, self.x, self.x)
290 }
291
292 #[inline]
293 fn xyxy(self) -> Vec4 {
294 Vec4::new(self.x, self.y, self.x, self.y)
295 }
296
297 #[inline]
298 fn xyxz(self) -> Vec4 {
299 Vec4::new(self.x, self.y, self.x, self.z)
300 }
301
302 #[inline]
303 fn xyyx(self) -> Vec4 {
304 Vec4::new(self.x, self.y, self.y, self.x)
305 }
306
307 #[inline]
308 fn xyyy(self) -> Vec4 {
309 Vec4::new(self.x, self.y, self.y, self.y)
310 }
311
312 #[inline]
313 fn xyyz(self) -> Vec4 {
314 Vec4::new(self.x, self.y, self.y, self.z)
315 }
316
317 #[inline]
318 fn xyzx(self) -> Vec4 {
319 Vec4::new(self.x, self.y, self.z, self.x)
320 }
321
322 #[inline]
323 fn xyzy(self) -> Vec4 {
324 Vec4::new(self.x, self.y, self.z, self.y)
325 }
326
327 #[inline]
328 fn xyzz(self) -> Vec4 {
329 Vec4::new(self.x, self.y, self.z, self.z)
330 }
331
332 #[inline]
333 fn xzxx(self) -> Vec4 {
334 Vec4::new(self.x, self.z, self.x, self.x)
335 }
336
337 #[inline]
338 fn xzxy(self) -> Vec4 {
339 Vec4::new(self.x, self.z, self.x, self.y)
340 }
341
342 #[inline]
343 fn xzxz(self) -> Vec4 {
344 Vec4::new(self.x, self.z, self.x, self.z)
345 }
346
347 #[inline]
348 fn xzyx(self) -> Vec4 {
349 Vec4::new(self.x, self.z, self.y, self.x)
350 }
351
352 #[inline]
353 fn xzyy(self) -> Vec4 {
354 Vec4::new(self.x, self.z, self.y, self.y)
355 }
356
357 #[inline]
358 fn xzyz(self) -> Vec4 {
359 Vec4::new(self.x, self.z, self.y, self.z)
360 }
361
362 #[inline]
363 fn xzzx(self) -> Vec4 {
364 Vec4::new(self.x, self.z, self.z, self.x)
365 }
366
367 #[inline]
368 fn xzzy(self) -> Vec4 {
369 Vec4::new(self.x, self.z, self.z, self.y)
370 }
371
372 #[inline]
373 fn xzzz(self) -> Vec4 {
374 Vec4::new(self.x, self.z, self.z, self.z)
375 }
376
377 #[inline]
378 fn yxxx(self) -> Vec4 {
379 Vec4::new(self.y, self.x, self.x, self.x)
380 }
381
382 #[inline]
383 fn yxxy(self) -> Vec4 {
384 Vec4::new(self.y, self.x, self.x, self.y)
385 }
386
387 #[inline]
388 fn yxxz(self) -> Vec4 {
389 Vec4::new(self.y, self.x, self.x, self.z)
390 }
391
392 #[inline]
393 fn yxyx(self) -> Vec4 {
394 Vec4::new(self.y, self.x, self.y, self.x)
395 }
396
397 #[inline]
398 fn yxyy(self) -> Vec4 {
399 Vec4::new(self.y, self.x, self.y, self.y)
400 }
401
402 #[inline]
403 fn yxyz(self) -> Vec4 {
404 Vec4::new(self.y, self.x, self.y, self.z)
405 }
406
407 #[inline]
408 fn yxzx(self) -> Vec4 {
409 Vec4::new(self.y, self.x, self.z, self.x)
410 }
411
412 #[inline]
413 fn yxzy(self) -> Vec4 {
414 Vec4::new(self.y, self.x, self.z, self.y)
415 }
416
417 #[inline]
418 fn yxzz(self) -> Vec4 {
419 Vec4::new(self.y, self.x, self.z, self.z)
420 }
421
422 #[inline]
423 fn yyxx(self) -> Vec4 {
424 Vec4::new(self.y, self.y, self.x, self.x)
425 }
426
427 #[inline]
428 fn yyxy(self) -> Vec4 {
429 Vec4::new(self.y, self.y, self.x, self.y)
430 }
431
432 #[inline]
433 fn yyxz(self) -> Vec4 {
434 Vec4::new(self.y, self.y, self.x, self.z)
435 }
436
437 #[inline]
438 fn yyyx(self) -> Vec4 {
439 Vec4::new(self.y, self.y, self.y, self.x)
440 }
441
442 #[inline]
443 fn yyyy(self) -> Vec4 {
444 Vec4::new(self.y, self.y, self.y, self.y)
445 }
446
447 #[inline]
448 fn yyyz(self) -> Vec4 {
449 Vec4::new(self.y, self.y, self.y, self.z)
450 }
451
452 #[inline]
453 fn yyzx(self) -> Vec4 {
454 Vec4::new(self.y, self.y, self.z, self.x)
455 }
456
457 #[inline]
458 fn yyzy(self) -> Vec4 {
459 Vec4::new(self.y, self.y, self.z, self.y)
460 }
461
462 #[inline]
463 fn yyzz(self) -> Vec4 {
464 Vec4::new(self.y, self.y, self.z, self.z)
465 }
466
467 #[inline]
468 fn yzxx(self) -> Vec4 {
469 Vec4::new(self.y, self.z, self.x, self.x)
470 }
471
472 #[inline]
473 fn yzxy(self) -> Vec4 {
474 Vec4::new(self.y, self.z, self.x, self.y)
475 }
476
477 #[inline]
478 fn yzxz(self) -> Vec4 {
479 Vec4::new(self.y, self.z, self.x, self.z)
480 }
481
482 #[inline]
483 fn yzyx(self) -> Vec4 {
484 Vec4::new(self.y, self.z, self.y, self.x)
485 }
486
487 #[inline]
488 fn yzyy(self) -> Vec4 {
489 Vec4::new(self.y, self.z, self.y, self.y)
490 }
491
492 #[inline]
493 fn yzyz(self) -> Vec4 {
494 Vec4::new(self.y, self.z, self.y, self.z)
495 }
496
497 #[inline]
498 fn yzzx(self) -> Vec4 {
499 Vec4::new(self.y, self.z, self.z, self.x)
500 }
501
502 #[inline]
503 fn yzzy(self) -> Vec4 {
504 Vec4::new(self.y, self.z, self.z, self.y)
505 }
506
507 #[inline]
508 fn yzzz(self) -> Vec4 {
509 Vec4::new(self.y, self.z, self.z, self.z)
510 }
511
512 #[inline]
513 fn zxxx(self) -> Vec4 {
514 Vec4::new(self.z, self.x, self.x, self.x)
515 }
516
517 #[inline]
518 fn zxxy(self) -> Vec4 {
519 Vec4::new(self.z, self.x, self.x, self.y)
520 }
521
522 #[inline]
523 fn zxxz(self) -> Vec4 {
524 Vec4::new(self.z, self.x, self.x, self.z)
525 }
526
527 #[inline]
528 fn zxyx(self) -> Vec4 {
529 Vec4::new(self.z, self.x, self.y, self.x)
530 }
531
532 #[inline]
533 fn zxyy(self) -> Vec4 {
534 Vec4::new(self.z, self.x, self.y, self.y)
535 }
536
537 #[inline]
538 fn zxyz(self) -> Vec4 {
539 Vec4::new(self.z, self.x, self.y, self.z)
540 }
541
542 #[inline]
543 fn zxzx(self) -> Vec4 {
544 Vec4::new(self.z, self.x, self.z, self.x)
545 }
546
547 #[inline]
548 fn zxzy(self) -> Vec4 {
549 Vec4::new(self.z, self.x, self.z, self.y)
550 }
551
552 #[inline]
553 fn zxzz(self) -> Vec4 {
554 Vec4::new(self.z, self.x, self.z, self.z)
555 }
556
557 #[inline]
558 fn zyxx(self) -> Vec4 {
559 Vec4::new(self.z, self.y, self.x, self.x)
560 }
561
562 #[inline]
563 fn zyxy(self) -> Vec4 {
564 Vec4::new(self.z, self.y, self.x, self.y)
565 }
566
567 #[inline]
568 fn zyxz(self) -> Vec4 {
569 Vec4::new(self.z, self.y, self.x, self.z)
570 }
571
572 #[inline]
573 fn zyyx(self) -> Vec4 {
574 Vec4::new(self.z, self.y, self.y, self.x)
575 }
576
577 #[inline]
578 fn zyyy(self) -> Vec4 {
579 Vec4::new(self.z, self.y, self.y, self.y)
580 }
581
582 #[inline]
583 fn zyyz(self) -> Vec4 {
584 Vec4::new(self.z, self.y, self.y, self.z)
585 }
586
587 #[inline]
588 fn zyzx(self) -> Vec4 {
589 Vec4::new(self.z, self.y, self.z, self.x)
590 }
591
592 #[inline]
593 fn zyzy(self) -> Vec4 {
594 Vec4::new(self.z, self.y, self.z, self.y)
595 }
596
597 #[inline]
598 fn zyzz(self) -> Vec4 {
599 Vec4::new(self.z, self.y, self.z, self.z)
600 }
601
602 #[inline]
603 fn zzxx(self) -> Vec4 {
604 Vec4::new(self.z, self.z, self.x, self.x)
605 }
606
607 #[inline]
608 fn zzxy(self) -> Vec4 {
609 Vec4::new(self.z, self.z, self.x, self.y)
610 }
611
612 #[inline]
613 fn zzxz(self) -> Vec4 {
614 Vec4::new(self.z, self.z, self.x, self.z)
615 }
616
617 #[inline]
618 fn zzyx(self) -> Vec4 {
619 Vec4::new(self.z, self.z, self.y, self.x)
620 }
621
622 #[inline]
623 fn zzyy(self) -> Vec4 {
624 Vec4::new(self.z, self.z, self.y, self.y)
625 }
626
627 #[inline]
628 fn zzyz(self) -> Vec4 {
629 Vec4::new(self.z, self.z, self.y, self.z)
630 }
631
632 #[inline]
633 fn zzzx(self) -> Vec4 {
634 Vec4::new(self.z, self.z, self.z, self.x)
635 }
636
637 #[inline]
638 fn zzzy(self) -> Vec4 {
639 Vec4::new(self.z, self.z, self.z, self.y)
640 }
641
642 #[inline]
643 fn zzzz(self) -> Vec4 {
644 Vec4::new(self.z, self.z, self.z, self.z)
645 }
646}