Undertale Yellow script viewer

← back to main script listing

gml_Object_obj_verlet_integration_Step_0

(view raw script w/o annotations or w/e)
1
if (mouse_check_button(mb_left))
2
{
3
    points[0][0] = mouse_x;
4
    points[0][1] = mouse_y;
5
}
6
scr_verlet_updatepoints
scr_verlet_updatepoints

function scr_verlet_updatepoints(arg0, arg1, arg2) { for (var i = 0; i < array_length(arg0); i++) { var p = array_get(arg0, i); if (!array_get(p, 4)) { var vx = (array_get(p, 0) - array_get(p, 2)) * arg1; var vy = (array_get(p, 1) - array_get(p, 3)) * arg1; array_set(p, 2, array_get(p, 0)); array_set(p, 3, array_get(p, 1)); array_set(p, 0, array_get(p, 0) + vx); array_set(p, 1, array_get(p, 1) + vy); array_set(p, 1, array_get(p, 1) + arg2); } } }
(points, p_friction, p_gravity);
7
for (var i = 0; i < precision; i++)
8
{
9
    scr_verlet_updatesticks
scr_verlet_updatesticks

function scr_verlet_updatesticks(arg0) { for (var i = 0; i < array_length(arg0); i++) { var s = array_get(arg0, i); var dx = array_get(array_get(s, 1), 0) - array_get(array_get(s, 0), 0); var dy = array_get(array_get(s, 1), 1) - array_get(array_get(s, 0), 1); var distance = sqrt((dx * dx) + (dy * dy)); var difference = array_get(s, 2) - distance; var percent = difference / distance / 2; var offsetX = dx * percent; var offsetY = dy * percent; if (!array_get(array_get(s, 0), 4)) { array_set(array_get(s, 0), 0, array_get(array_get(s, 0), 0) - offsetX); array_set(array_get(s, 0), 1, array_get(array_get(s, 0), 1) - offsetY); } if (!array_get(array_get(s, 1), 4)) { array_set(array_get(s, 1), 0, array_get(array_get(s, 1), 0) + offsetX); array_set(array_get(s, 1), 1, array_get(array_get(s, 1), 1) + offsetY); } } }
(sticks);
10
    scr_verlet_constrainpoints
scr_verlet_constrainpoints

function scr_verlet_constrainpoints(arg0, arg1, arg2) { for (var i = 0; i < array_length(arg0); i++) { var p = arg0[i]; if (!p[4]) { var vx = (p[0] - p[2]) * arg1; var vy = (p[1] - p[3]) * arg1; if (p[0] > room_width) { p[0] = room_width; p[2] = p[0] + (vx * arg2); } else if (p[0] < 0) { p[0] = 0; p[2] = p[0] + (vx * arg2); } if (p[1] > room_height) { p[1] = room_height; p[3] = p[1] + (vy * arg2); } else if (p[1] < 0) { p[1] = 0; p[3] = p[1] + (vy * arg2); } } } }
(points, p_friction, bounce);
11
}