Undertale Yellow script viewer

← back to main script listing

gml_GlobalScript_draw_sprite_clip_ext

(view raw script w/o annotations or w/e)
1
function draw_sprite_clip_ext(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11)
2
{
3
    var s = arg0;
4
    var sw = sprite_get_width(s);
5
    var sh = sprite_get_height(s);
6
    var sx = sprite_get_xoffset(s);
7
    var sy = sprite_get_yoffset(s);
8
    var si = arg1;
9
    var _x = arg2;
10
    var _y = arg3;
11
    var mx = arg4;
12
    var my = arg5;
13
    var sc = arg6;
14
    var sa = arg7;
15
    var cx1 = arg8;
16
    var cy1 = arg9;
17
    var cx2 = cx1 + arg10;
18
    var cy2 = cy1 + arg11;
19
    var bx1 = _x - (sprite_get_xoffset(s) * mx);
20
    var by1 = _y - (sprite_get_yoffset(s) * my);
21
    var bx2 = bx1 + (sprite_get_width(s) * mx);
22
    var by2 = by1 + (sprite_get_height(s) * my);
23
    switch (rectangle_in_rectangle(bx1, by1, bx2, by2, cx1, cy1, cx2, cy2))
24
    {
25
        case 1:
26
            draw_sprite_ext(s, si, _x, _y, mx, my, 0, sc, sa);
27
            return true;
28
        case 2:
29
            if (mx == 0 || my == 0)
30
                return true;
31
            var lx1 = max(0, cx1 - bx1) / mx;
32
            var ly1 = max(0, cy1 - by1) / my;
33
            var lx2 = sw + (min(0, cx2 - bx2) / mx);
34
            var ly2 = sh + (min(0, cy2 - by2) / my);
35
            draw_sprite_part_ext(s, si, lx1, ly1, lx2 - lx1, ly2 - ly1, _x + ((lx1 - sx) * mx), _y + ((ly1 - sy) * my), mx, my, sc, sa);
36
            return true;
37
    }
38
    return false;
39
}