Undertale Yellow script viewer

← back to main script listing

gml_GlobalScript_d3d_transform_set_rotation_axis

(view raw script w/o annotations or w/e)
1
function d3d_transform_set_rotation_axis(arg0, arg1, arg2, arg3)
2
{
3
    var c = dcos(-arg3);
4
    var s = dsin(-arg3);
5
    var omc = 1 - c;
6
    var xx = arg0;
7
    var yy = arg1;
8
    var zz = arg2;
9
    var length2 = sqr(xx) + sqr(yy) + sqr(zz);
10
    var length = sqrt(length2);
11
    xx /= length;
12
    yy /= length;
13
    zz /= length;
14
    var m;
15
    m[0] = (omc * xx * xx) + c;
16
    m[1] = (omc * xx * yy) + (s * zz);
17
    m[2] = (omc * xx * zz) - (s * yy);
18
    m[3] = 0;
19
    m[4] = (omc * xx * yy) - (s * zz);
20
    m[5] = (omc * yy * yy) + c;
21
    m[6] = (omc * yy * zz) + (s * xx);
22
    m[7] = 0;
23
    m[8] = (omc * xx * zz) + (s * yy);
24
    m[9] = (omc * yy * zz) - (s * xx);
25
    m[10] = (omc * zz * zz) + c;
26
    m[11] = 0;
27
    m[12] = 0;
28
    m[13] = 0;
29
    m[14] = 0;
30
    m[15] = 1;
31
    matrix_set(2, m);
32
}