Deltarune (Chapter 4) script viewer

← back to main script listing

gml_GlobalScript_scr_cameraideal

(view raw script w/o annotations or w/e)
1
function 
scr_cameraideal
scr_cameraideal

function
scr_cameraideal(arg0 = obj_mainchara.x, arg1 = obj_mainchara.y)
{ if (!instance_exists(obj_mainchara)) return [0, 0, 0]; var camx = camerax(); var camy = cameray(); var idealcamx, idealcamy; with (obj_mainchara) { var roomw = room_width; var roomh = room_height; var vieww = view_wport[0]; var viewh = view_hport[0]; var nudger = instance_place(arg0, arg1, obj_camera_nudger); if (i_ex(nudger)) { if (nudger.lerpstrength != -4) nudgelerp = nudger.lerpstrength; var _yoff = -2; if (nudger.yamt > 0) _yoff = 2; var _xoff = -2; if (nudger.xamt > 0) _xoff = 2; nudgex = lerp(nudgex, nudger.xamt + _yoff, nudgelerp); nudgey = lerp(nudgey, nudger.yamt + _yoff, nudgelerp); nudgex = clamp(nudgex, abs(nudger.xamt) * -1, abs(nudger.xamt)); nudgey = clamp(nudgey, abs(nudger.yamt) * -1, abs(nudger.yamt)); } else { var _yoff = -2; if (nudgey < 0) _yoff = 2; var _xoff = -2; if (nudgex < 0) _xoff = 2; if (abs(0 - nudgex) > 1) nudgex = lerp(nudgex, 0 + _xoff, nudgelerp); else nudgex = 0; if (abs(0 - nudgey) > 1) nudgey = lerp(nudgey, 0 + _yoff, nudgelerp); else nudgey = 0; } idealcamx = clamp((arg0 - floor((vieww / 2) - (initwd / 2))) + nudgex, 0, roomw - vieww); idealcamy = clamp((arg1 - floor((viewh / 2) - (initht / 2))) + nudgey, 0, roomh - viewh); var clamper = instance_place(x, y, obj_camera_clamper); if (i_ex(clamper)) { var lclamp = 0; var rclamp = roomw - vieww; var uclamp = 0; var dclamp = roomh - viewh; if (clamper.xmin != -4) lclamp = clamper.xmin; if (clamper.xmax != -4) rclamp = clamper.xmax; if (clamper.ymin != -4) uclamp = clamper.ymin; if (clamper.ymax != -4) dclamp = clamper.ymax; idealcamx = clamp(idealcamx, lclamp, rclamp); idealcamy = clamp(idealcamy, uclamp, dclamp); } } return [round(idealcamx), round(idealcamy), point_distance(camx, camy, idealcamx, idealcamy)]; }
(arg0 = obj_mainchara.x, arg1 = obj_mainchara.y)
2
{
3
    if (!instance_exists(obj_mainchara))
4
        return [0, 0, 0];
5
    var camx = camerax();
6
    var camy = cameray();
7
    var idealcamx, idealcamy;
8
    with (obj_mainchara)
9
    {
10
        var roomw = room_width;
11
        var roomh = room_height;
12
        var vieww = view_wport[0];
13
        var viewh = view_hport[0];
14
        var nudger = instance_place(arg0, arg1, obj_camera_nudger);
15
        if (i_ex(nudger))
16
        {
17
            if (nudger.lerpstrength != -4)
18
                nudgelerp = nudger.lerpstrength;
19
            var _yoff = -2;
20
            if (nudger.yamt > 0)
21
                _yoff = 2;
22
            var _xoff = -2;
23
            if (nudger.xamt > 0)
24
                _xoff = 2;
25
            nudgex = lerp(nudgex, nudger.xamt + _yoff, nudgelerp);
26
            nudgey = lerp(nudgey, nudger.yamt + _yoff, nudgelerp);
27
            nudgex = clamp(nudgex, abs(nudger.xamt) * -1, abs(nudger.xamt));
28
            nudgey = clamp(nudgey, abs(nudger.yamt) * -1, abs(nudger.yamt));
29
        }
30
        else
31
        {
32
            var _yoff = -2;
33
            if (nudgey < 0)
34
                _yoff = 2;
35
            var _xoff = -2;
36
            if (nudgex < 0)
37
                _xoff = 2;
38
            if (abs(0 - nudgex) > 1)
39
                nudgex = lerp(nudgex, 0 + _xoff, nudgelerp);
40
            else
41
                nudgex = 0;
42
            if (abs(0 - nudgey) > 1)
43
                nudgey = lerp(nudgey, 0 + _yoff, nudgelerp);
44
            else
45
                nudgey = 0;
46
        }
47
        idealcamx = clamp((arg0 - floor((vieww / 2) - (initwd / 2))) + nudgex, 0, roomw - vieww);
48
        idealcamy = clamp((arg1 - floor((viewh / 2) - (initht / 2))) + nudgey, 0, roomh - viewh);
49
        var clamper = instance_place(x, y, obj_camera_clamper);
50
        if (i_ex(clamper))
51
        {
52
            var lclamp = 0;
53
            var rclamp = roomw - vieww;
54
            var uclamp = 0;
55
            var dclamp = roomh - viewh;
56
            if (clamper.xmin != -4)
57
                lclamp = clamper.xmin;
58
            if (clamper.xmax != -4)
59
                rclamp = clamper.xmax;
60
            if (clamper.ymin != -4)
61
                uclamp = clamper.ymin;
62
            if (clamper.ymax != -4)
63
                dclamp = clamper.ymax;
64
            idealcamx = clamp(idealcamx, lclamp, rclamp);
65
            idealcamy = clamp(idealcamy, uclamp, dclamp);
66
        }
67
    }
68
    return [round(idealcamx), round(idealcamy), point_distance(camx, camy, idealcamx, idealcamy)];
69
}