git.lucas.co / hou-control
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 }