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]); |