Undertale Yellow script viewer

← back to main script listing

gml_GlobalScript_d3d_set_perspective

(view raw script w/o annotations or w/e)
1
function d3d_set_perspective(arg0)
2
{
3
    var __persp = arg0;
4
    if (global.__d3d == false)
5
        __persp = false;
6
    var __mat = camera_get_proj_mat(camera_get_default());
7
    if (__persp)
8
        __mat[11] = 1;
9
    else
10
        __mat[11] = 0;
11
    camera_set_proj_mat(camera_get_default(), __mat);
12
    var __numcams = 0;
13
    var __cams = [];
14
    for (var __i = 0; __i < 8; __i++)
15
    {
16
        if (view_camera[__i] != -1)
17
        {
18
            __cams[__numcams * 3] = view_camera[__i];
19
            __cams[(__numcams * 3) + 1] = view_camera[__i];
20
            __cams[(__numcams * 3) + 2] = view_camera[__i];
21
            __numcams++;
22
        }
23
    }
24
    var __currroom = room_first;
25
    while (__currroom != -1)
26
    {
27
        for (var __i = 0; __i < 8; __i++)
28
        {
29
            var __cam = room_get_camera(__currroom, __i);
30
            if (__cam != -1)
31
            {
32
                __cams[__numcams] = __cam;
33
                __numcams++;
34
            }
35
        }
36
        __currroom = room_next(__currroom);
37
    }
38
    for (var __i = 0; __i < __numcams; __i++)
39
    {
40
        var __cam = __cams[__i];
41
        __mat = camera_get_proj_mat(__cam);
42
        var __ispersp = (__mat[11] != 0) ? true : false;
43
        if (__ispersp != __persp)
44
        {
45
            if (camera_get_view_width(__cam) > 0)
46
            {
47
                var __width = camera_get_view_width(__cam);
48
                var __height = camera_get_view_height(__cam);
49
                if (__persp)
50
                {
51
                    var __projmat = matrix_build_projection_perspective(1, -(__height / __width), 1, 32000);
52
                    camera_set_proj_mat(__cam, __projmat);
53
                }
54
                else
55
                {
56
                    var __projmat = matrix_build_projection_ortho(__width, __height, -16000, 16000);
57
                    camera_set_proj_mat(__cam, __projmat);
58
                }
59
            }
60
        }
61
    }
62
}