Deltarune (Chapter 2) script viewer

← back to main script listing

gml_Object_obj_camera_advanced_Other_12

(view raw script w/o annotations or w/e)
1
if (i_ex(targetObject[cV]))
2
{
3
    if (specialCamera[cV])
4
    {
5
        if (specialCameraInit == 0)
6
        {
7
            remObjectX = targetObject[cV].x;
8
            remObjectY = targetObject[cV].y;
9
            specialCameraInit = 1;
10
            pullXTimer = 0;
11
            pullYTimer = 0;
12
            relXLerpAmt = 0;
13
            relYLerpAmt = 0;
14
        }
15
        else
16
        {
17
            movedX = targetObject[cV].x - remObjectX;
18
            movedY = targetObject[cV].y - remObjectY;
19
            specialCameraBorderMax[cV] = 240;
20
            idealRelX = 0;
21
            idealRelY = 0;
22
            relXLerpAmt = 0.1;
23
            relYLerpAmt = 0.1;
24
            if (abs(movedX) > (8 / (global.darkzone + 1)))
25
            {
26
                pullXTimer++;
27
                if (pullXTimer > 30)
28
                {
29
                    idealRelX = clamp(movedX * 16, -specialCameraBorderMax[cV], specialCameraBorderMax[cV]);
30
                    relXLerpAmt = 0.02;
31
                }
32
            }
33
            else
34
            {
35
                pullXTimer = 0;
36
            }
37
            if (abs(movedY) > (8 / (global.darkzone + 1)))
38
            {
39
                pullYTimer++;
40
                if (pullYTimer > 30)
41
                    idealRelY = clamp(movedY * 16, -round(specialCameraBorderMax[cV] * 0.7), round(specialCameraBorderMax[cV] * 0.7));
42
            }
43
            else
44
            {
45
                pullYTimer = 0;
46
            }
47
            if (abs(idealRelX) < 2)
48
                idealRelX = 0;
49
            if (abs(idealRelY) < 2)
50
                idealRelY = 0;
51
            targetXRelative[cV] = lerp(targetXRelative[cV], idealRelX, relXLerpAmt);
52
            targetYRelative[cV] = lerp(targetYRelative[cV], idealRelY, relYLerpAmt);
53
            remObjectX = targetObject[cV].x;
54
            remObjectY = targetObject[cV].y;
55
        }
56
    }
57
    finalX = (targetObject[cV].x + targetXRelative[cV]) - (camerawidth() / 2);
58
    finalY = (targetObject[cV].y + targetYRelative[cV]) - (cameraheight() / 2);
59
    if (targetObjectCenter[cV] == 1)
60
    {
61
        finalX += (targetObject[cV].sprite_width / 2);
62
        finalY += (targetObject[cV].sprite_height / 2);
63
    }
64
    if (ignoreTargetObjectX[cV])
65
        finalX = targetX[cV];
66
    if (ignoreTargetObjectY[cV])
67
        finalY = targetY[cV];
68
}
69
else if (targetObject[cV] == -4)
70
{
71
    finalX = targetX[cV];
72
    finalY = targetY[cV];
73
}
74
finalX = clamp(finalX, panLimitLeft[cV], panLimitRight[cV]);
75
finalY = clamp(finalY, panLimitTop[cV], panLimitBottom[cV]);