Deltarune (Chapter 5) script viewer

← back to main script listing

gml_Object_obj_anchorpoint_Step_2

(view raw script w/o annotations or w/e)
1
if (target_count == 0)
2
    exit;
3
var _size_average = 0;
4
var _size = [];
5
var _pos = [];
6
var _depth = [];
7
var _sprite_point = new Vector2();
8
var _sprite_size = new Vector2();
9
_size[0] = new Vector2(0, 0);
10
_pos[0] = new Vector2(0, 0);
11
_size[1] = new Vector2(0, 0);
12
_pos[1] = new Vector2(0, 0);
13
_depth[0] = 0;
14
_depth[1] = 0;
15
for (var i = 0; i < target_count; i++)
16
{
17
    _sprite_point.x = 0;
18
    _sprite_point.y = 0;
19
    if (!i_ex(targets[i]))
20
    {
21
        array_delete(targets, i, 1);
22
        array_delete(target_offset, i, 1);
23
        array_delete(target_size, i, 1);
24
        i--;
25
        target_count--;
26
        continue;
27
    }
28
    else
29
    {
30
        with (targets[i])
31
        {
32
            if (other.auto_update || other.update)
33
            {
34
                other.target_offset[i] = 
scr_getspritepoint_relative
scr_getspritepoint_relative

function
scr_getspritepoint_relative(arg0, arg1 = 0.5, arg2 = 0.5, arg3 = true)
{ var _obj = arg0; if (!i_ex(_obj)) exit; var _x = 0; var _y = 0; with (_obj) { _x = round(sprite_width * arg1) - sprite_xoffset; _y = round(sprite_height * arg2) - sprite_yoffset; } return new Vector2(_x, _y); }
(id, 0.5, 1);
35
                other.target_size[i] = new Vector2(sprite_width, sprite_height);
36
            }
37
            _sprite_point.x = x + other.target_offset[i].x;
38
            _sprite_point.y = y + other.target_offset[i].y;
39
            _sprite_size = other.target_size[i];
40
            if (other.average || other.target_count <= 2)
41
            {
42
                _size[0].x += _sprite_size.x;
43
                _size[0].y += _sprite_size.y;
44
                _pos[0].add(_sprite_point);
45
                _depth[0] += depth;
46
            }
47
            else if (i == 0)
48
            {
49
                _size[0].x = _sprite_size.x;
50
                _size[0].y = _sprite_size.y;
51
                _size[1].x = _sprite_size.x;
52
                _size[1].y = _sprite_size.y;
53
                _pos[0].add(_sprite_point);
54
                _pos[1].add(_sprite_point);
55
                _depth[0] = depth;
56
                _depth[1] = depth;
57
            }
58
            else
59
            {
60
                _size[0].x = min(_size[0].x, _sprite_size.x);
61
                _size[1].x = max(_size[1].x, _sprite_size.x);
62
                _size[0].y = min(_size[0].y, _sprite_size.y);
63
                _size[1].y = max(_size[1].y, _sprite_size.y);
64
                _pos[0].x = min(_pos[0].x, _sprite_point.x);
65
                _pos[1].x = max(_pos[1].x, _sprite_point.x);
66
                _pos[0].y = min(_pos[0].y, _sprite_point.y);
67
                _pos[1].y = max(_pos[1].y, _sprite_point.y);
68
                _depth[0] = min(_depth[0], depth);
69
                _depth[1] = max(_depth[1], depth);
70
            }
71
        }
72
    }
73
}
74
update = false;
75
if (target_count == 0)
76
    exit;
77
if (average || target_count <= 2)
78
{
79
    x = _pos[0].x / target_count;
80
    y = _pos[0].y / target_count;
81
    depth = _depth[0] / target_count;
82
    image_xscale = _size[0].x / target_count / 10;
83
    image_yscale = _size[0].y / target_count / 10;
84
}
85
else
86
{
87
    x = (_pos[0].x + _pos[1].x) / 2;
88
    y = (_pos[0].y + _pos[1].y) / 2;
89
    depth = (_depth[0] + _depth[1]) / 2;
90
    image_xscale = (_size[0].x + _size[1].x) / 20;
91
    image_yscale = (_size[0].y + _size[1].y) / 20;
92
}