Deltarune (Chapter 3) script viewer

← back to main script listing

gml_GlobalScript_scr_custom_pal_swapper

(view raw script w/o annotations or w/e)
1
function pal_swap_ext_init(arg0, arg1, arg2)
2
{
3
    var _swapper = 
4
    {
5
        shader: -4,
6
        html5: false,
7
        html5_sprite: -4,
8
        html5_surface: -4,
9
        texel_size: [0],
10
        uvs: [0],
11
        index: [0],
12
        texture: [0],
13
        layer_priority: 0,
14
        layer_temp_priority: 0,
15
        layer_map: 0,
16
        
17
        cleanup: function()
18
        {
19
            ds_priority_destroy(layer_priority);
20
            ds_priority_destroy(layer_temp_priority);
21
            ds_map_destroy(layer_map);
22
        }
23
    };
24
    _swapper.html5 = false;
25
    if (!_swapper.html5)
26
    {
27
        _swapper.shader = arg0;
28
        _swapper.texel_size[0] = shader_get_uniform(arg0, "u_pixelSize");
29
        _swapper.uvs[0] = shader_get_uniform(arg0, "u_Uvs");
30
        _swapper.index[0] = shader_get_uniform(arg0, "u_paletteId");
31
        _swapper.texture[0] = shader_get_sampler_index(arg0, "u_palTexture");
32
    }
33
    else
34
    {
35
        if (arg1 == undefined || arg2 == undefined)
36
        {
37
            show_message("Must provide pal_swap_init_system() with 2 additional arguments for HTML5 Compatible Sprite and Surface Shaders");
38
            game_end();
39
        }
40
        _swapper.html5_sprite = arg1;
41
        _swapper.html5_surface = arg2;
42
        _swapper.texel_size[1] = shader_get_uniform(arg1, "u_pixelSize");
43
        _swapper.uvs[1] = shader_get_uniform(arg1, "u_Uvs");
44
        _swapper.index[1] = shader_get_uniform(arg1, "u_paletteId");
45
        _swapper.texture[1] = shader_get_sampler_index(arg1, "u_palTexture");
46
        _swapper.texel_size[2] = shader_get_uniform(arg2, "u_pixelSize");
47
        _swapper.uvs[2] = shader_get_uniform(arg2, "u_Uvs");
48
        _swapper.index[2] = shader_get_uniform(arg2, "u_paletteId");
49
        _swapper.texture[2] = shader_get_sampler_index(arg2, "u_palTexture");
50
    }
51
    return _swapper;
52
}
53
54
function pal_swap_set_ext(arg0, arg1, arg2, arg3)
55
{
56
    if (arg1 == 0)
57
        exit;
58
    shader_set(arg2.shader);
59
    var _tex = sprite_get_texture(arg0, 0);
60
    var _UVs = sprite_get_uvs(arg0, 0);
61
    texture_set_stage(arg2.texture[0], _tex);
62
    var _texel_x = texture_get_texel_width(_tex);
63
    var _texel_y = texture_get_texel_height(_tex);
64
    var _texel_hx = _texel_x * 0.5;
65
    var _texel_hy = _texel_y * 0.5;
66
    shader_set_uniform_f(arg2.texel_size[0], _texel_x, _texel_y);
67
    shader_set_uniform_f(arg2.uvs[0], _UVs[0] + _texel_hx, _UVs[1] + _texel_hy, _UVs[2], _UVs[3]);
68
    shader_set_uniform_f(arg2.index[0], arg1);
69
}
70
71
function pal_swap_set_custom(arg0, arg1, arg2, arg3)
72
{
73
    if (arg1 == 0)
74
        exit;
75
    shader_set(arg2);
76
    var _tex = sprite_get_texture(arg0, 0);
77
    var _UVs = sprite_get_uvs(arg0, 0);
78
    var sampler_index = shader_get_sampler_index(arg2, "u_palTexture");
79
    texture_set_stage(sampler_index, _tex);
80
    var _texel_x = texture_get_texel_width(_tex);
81
    var _texel_y = texture_get_texel_height(_tex);
82
    var _texel_hx = _texel_x * 0.5;
83
    var _texel_hy = _texel_y * 0.5;
84
    shader_set_uniform_f(shader_get_uniform(arg2, "u_pixelSize"), _texel_x, _texel_y);
85
    shader_set_uniform_f(shader_get_uniform(arg2, "u_Uvs"), _UVs[0] + _texel_hx, _UVs[1] + _texel_hy, _UVs[2], _UVs[3]);
86
    shader_set_uniform_f(shader_get_uniform(arg2, "u_paletteId"), arg1);
87
}
88
89
function pal_swap_reset_custom()
90
{
91
    if (shader_current() != -1)
92
        shader_reset();
93
}