git clone https://git.lucas.co/hou-control.git
vex/include/VAT_utilitiesx.h (3.1K)
1 function vector coord_swizzle_vector(vector coord; int coord_swizzle, coord_flip, inv;)
2 {
3 vector result;
4 vector swizzle;
5 if (coord_swizzle == 0) swizzle = set(0, 1, 2);
6 else if (coord_swizzle == 1) swizzle = set(0, 2, 1);
7 else if (coord_swizzle == 2) swizzle = set(1, 0, 2);
8 else if (coord_swizzle == 3) swizzle = set(1, 2, 0);
9 else if (coord_swizzle == 4) swizzle = set(2, 0, 1);
10 else if (coord_swizzle == 5) swizzle = set(2, 1, 0);
11
12 vector flip;
13 if (coord_flip == 0) flip = set(1,1,1);
14 else if (coord_flip == 1) flip = set(-1,1,1);
15 else if (coord_flip == 2) flip = set(1,-1,1);
16 else if (coord_flip == 3) flip = set(1,1,-1);
17 else if (coord_flip == 4) flip = set(-1,-1,1);
18 else if (coord_flip == 5) flip = set(-1,1,-1);
19 else if (coord_flip == 6) flip = set(-1,-1,-1);
20 else if (coord_flip == 7) flip = set(1,-1,-1);
21
22 result = swizzle(coord, swizzle.x, swizzle.y, swizzle.z) * flip;
23
24 return result;
25 }
26
27 function vector4 coord_swizzle_vector(vector4 coord; int coord_swizzle, coord_flip, inv;)
28 {
29 vector4 result;
30 vector swizzle;
31 if (coord_swizzle == 0) swizzle = set(0, 1, 2);
32 else if (coord_swizzle == 1) swizzle = set(0, 2, 1);
33 else if (coord_swizzle == 2) swizzle = set(1, 0, 2);
34 else if (coord_swizzle == 3) swizzle = set(1, 2, 0);
35 else if (coord_swizzle == 4) swizzle = set(2, 0, 1);
36 else if (coord_swizzle == 5) swizzle = set(2, 1, 0);
37
38 vector flip;
39 if (coord_flip == 0) flip = set(1,1,1);
40 else if (coord_flip == 1) flip = set(-1,1,1);
41 else if (coord_flip == 2) flip = set(1,-1,1);
42 else if (coord_flip == 3) flip = set(1,1,-1);
43 else if (coord_flip == 4) flip = set(-1,-1,1);
44 else if (coord_flip == 5) flip = set(-1,1,-1);
45 else if (coord_flip == 6) flip = set(-1,-1,-1);
46 else if (coord_flip == 7) flip = set(1,-1,-1);
47
48 result = swizzle(coord, swizzle.x, swizzle.y, swizzle.z) * flip;
49 result.w = coord.w;
50
51 return result;
52 }
53
54 function vector4 coord_swizzle_quaternion(vector4 src; int quaternion_flip;)
55 {
56 vector4 result;
57 vector4 flip;
58 if (quaternion_flip == 0) flip = set(1,1,1,1);
59 else if (quaternion_flip == 1) flip = set(-1,1,1,1);
60 else if (quaternion_flip == 2) flip = set(1,-1,1,1);
61 else if (quaternion_flip == 3) flip = set(1,1,-1,1);
62 else if (quaternion_flip == 4) flip = set(1,1,1,-1);
63 else if (quaternion_flip == 5) flip = set(-1,-1,1,1);
64 else if (quaternion_flip == 6) flip = set(-1,1,-1,1);
65 else if (quaternion_flip == 7) flip = set(-1,1,1,-1);
66 else if (quaternion_flip == 8) flip = set(-1,-1,-1,1);
67 else if (quaternion_flip == 9) flip = set(-1,-1,1,-1);
68 else if (quaternion_flip == 10) flip = set(-1,-1,-1,-1);
69 else if (quaternion_flip == 11) flip = set(1,-1,-1,1);
70 else if (quaternion_flip == 12) flip = set(1,1,-1,-1);
71 else if (quaternion_flip == 13) flip = set(1,-1,-1,-1);
72 else if (quaternion_flip == 14) flip = set(1,1,-1,-1);
73
74 result = src * flip;
75
76 return result;
77 }