Undertale Yellow script viewer

← back to main script listing

gml_GlobalScript__effect_blend_script

(view raw script w/o annotations or w/e)
1
function _effect_blend() constructor
2
{
3
    g_Blend = 1;
4
    surf_blend = -1;
5
    surf_width = 1;
6
    surf_height = 1;
7
    clonedcam = -1;
8
    tempcam = -1;
9
    
10
    CloneCurrCam = function()
11
    {
12
        if (clonedcam == -1)
13
            clonedcam = camera_create();
14
        var currcam = camera_get_active();
15
        camera_copy_transforms(clonedcam, currcam);
16
    };
17
    
18
    cleanup = function()
19
    {
20
        if (surface_exists(surf_blend))
21
        {
22
            surface_free(surf_blend);
23
            surf_blend = -1;
24
        }
25
        if (tempcam != -1)
26
        {
27
            camera_destroy(tempcam);
28
            tempcam = -1;
29
        }
30
        if (clonedcam != -1)
31
        {
32
            camera_destroy(clonedcam);
33
            clonedcam = -1;
34
        }
35
    };
36
    
37
    room_end = function()
38
    {
39
        cleanup();
40
    };
41
    
42
    layer_begin = function()
43
    {
44
        if (event_type != ev_draw || event_number != 0)
45
            exit;
46
        if (!gmAffectsSingleLayerOnly)
47
            exit;
48
        var _draw_surface = surface_get_target();
49
        var _draw_width = surface_get_width(_draw_surface);
50
        var _draw_height = surface_get_height(_draw_surface);
51
        if (!surface_exists(surf_blend))
52
            surf_blend = surface_create(_draw_width, _draw_height);
53
        else if (surf_width != _draw_width || surf_height != _draw_height)
54
            surface_resize(surf_blend, _draw_width, _draw_height);
55
        surf_width = _draw_width;
56
        surf_height = _draw_height;
57
        CloneCurrCam();
58
        surface_set_target(surf_blend);
59
        draw_clear_alpha(c_black, 0);
60
        camera_apply(clonedcam);
61
    };
62
    
63
    layer_end = function()
64
    {
65
        if (event_type != ev_draw || event_number != 0)
66
            exit;
67
        if (!gmAffectsSingleLayerOnly)
68
            exit;
69
        surface_reset_target();
70
        if (tempcam == -1)
71
            tempcam = camera_create_view(0, 0, surf_width, surf_height);
72
        else
73
            camera_set_view_size(tempcam, surf_width, surf_height);
74
        camera_apply(tempcam);
75
        gpu_push_state();
76
        gpu_set_blendmode(g_Blend);
77
        draw_surface(surf_blend, 0, 0);
78
        gpu_pop_state();
79
        camera_apply(clonedcam);
80
    };
81
}