From 73223d3fe0cf0ea56e30c14ecdb48a78dc512597 Mon Sep 17 00:00:00 2001 From: ADA-Funni Date: Sat, 2 May 2026 14:51:59 +0100 Subject: [PATCH] Add camera offsets to the "Camera Movement" event. --- source/funkin/backend/chart/EventsData.hx | 4 +++- source/funkin/game/PlayState.hx | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/source/funkin/backend/chart/EventsData.hx b/source/funkin/backend/chart/EventsData.hx index f5ea6a7682..cace99d6ba 100644 --- a/source/funkin/backend/chart/EventsData.hx +++ b/source/funkin/backend/chart/EventsData.hx @@ -31,7 +31,9 @@ class EventsData { type: TDropDown(['In', 'Out', 'InOut']), defValue: "In", saveIfDefault: false - } + }, + {name: "Offset X", type: TFloat(null, null, 10, 3), defValue: 0}, + {name: "Offset Y", type: TFloat(null, null, 10, 3), defValue: 0}, ], "Camera Position" => [ {name: "X", type: TFloat(null, null, 10, 3), defValue: 0}, diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 59bd545694..f3add5b608 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -193,6 +193,12 @@ class PlayState extends MusicBeatState */ public var camFollow:FlxObject; + /** + * Point defining the camera follow offset. + * Used for the "Camera Movement" event. + */ + public var cameraFocusOffset:FlxPoint; + /** * Previous cam follow. */ @@ -712,6 +718,8 @@ class PlayState extends MusicBeatState camFollow = new FlxObject(0, 0, 2, 2); add(camFollow); + cameraFocusOffset = FlxPoint.get(); + if (SONG.stage == null || SONG.stage.trim() == "") SONG.stage = Flags.DEFAULT_STAGE; add(stage = new Stage(SONG.stage)); @@ -1094,6 +1102,8 @@ class PlayState extends MusicBeatState remove(stage, true); } + cameraFocusOffset.put(); + scripts = FlxDestroyUtil.destroy(scripts); super.destroy(); @@ -1481,6 +1491,8 @@ class PlayState extends MusicBeatState public function moveCamera() if (strumLines.members[curCameraTarget] != null) { var data:CamPosData = getStrumlineCamPos(curCameraTarget); + data.pos.add(cameraFocusOffset.x, cameraFocusOffset.y); + if (data.amount > 0) { var event = gameAndCharsEvent("onCameraMove", EventManager.get(CamMoveEvent).recycle(data.pos, strumLines.members[curCameraTarget], data.amount)); if (!event.cancelled) @@ -1564,6 +1576,9 @@ class PlayState extends MusicBeatState } curCameraTarget = event.params[0]; + + cameraFocusOffset.set(event.params[5], event.params[6]); + moveCamera(); if (strumLines.members[curCameraTarget] != null) {