Fix Camera Zoom Event

Please let me know if this breaks anything and I will fix it as soon as I can :0
This commit is contained in:
SenDoesStuff
2025-05-04 12:18:05 -04:00
parent f17d8bf072
commit 22f78da8fb
4 changed files with 21 additions and 9 deletions
+2 -1
View File
@@ -52,7 +52,8 @@ class EventsData {
type: TDropDown(['In', 'Out', 'InOut']),
defValue: "In"
},
{name: "Multiplicative?", type: TBool, defValue: false}
{name: "Multiplicative?", type: TBool, defValue: true},
{name: "Mode", type: TDropDown(['stage', 'direct']), defValue: "stage"}
],
"Camera Modulo Change" => [
{name: "Modulo Interval (Beats)", type: TInt(1, 9999999, 1), defValue: 4},
+1 -1
View File
@@ -152,7 +152,7 @@ class VSliceParser {
result.events.push({
time: event.t,
name: "Camera Zoom", // we dont support the direct mode since welp, its kind of useless here - Nex
params: [values.ease != "INSTANT", values.zoom == null ? 1 : values.zoom, "camGame", values.duration == null ? 4 : values.duration, cneEase[0], cneEase[1], false]
params: [values.ease != "INSTANT", values.zoom == null ? 1 : values.zoom, "camGame", values.duration == null ? 4 : values.duration, cneEase[0], cneEase[1], false, values.mode]
});
}
}
+4 -2
View File
@@ -1488,8 +1488,10 @@ class PlayState extends MusicBeatState
var name = (event.params[2] == "camHUD" ? "camHUD" : "camGame") + ".zoom"; // avoiding having different values from these 2 - Nex
var tween = eventsTween.get(name);
if (tween != null) tween.cancel();
var ease = CoolUtil.flxeaseFromString(event.params[4], event.params[5]);
var direct = event.params[7] == 'direct';
var finalZoom:Float = event.params[1];
var finalZoom:Float = event.params[1] * (direct ? FlxCamera.defaultZoom : stage.defaultZoom);
if (event.params[6] == true) finalZoom *= cam.zoom;
if (event.params[0] == false) {
@@ -1497,7 +1499,7 @@ class PlayState extends MusicBeatState
if (cam == camHUD) defaultHudZoom = finalZoom;
else defaultCamZoom = finalZoom;
} else
eventsTween.set(name, FlxTween.tween(cam, {zoom: finalZoom}, (Conductor.stepCrochet / 1000) * event.params[3], {ease: CoolUtil.flxeaseFromString(event.params[4], event.params[5]), onUpdate: function(_) {
eventsTween.set(name, FlxTween.tween(cam, {zoom: finalZoom}, (Conductor.stepCrochet / 1000) * event.params[3], {ease: ease, onUpdate: function(_) {
if (cam == camHUD) defaultHudZoom = cam.zoom;
else defaultCamZoom = cam.zoom;
}}));
+14 -5
View File
@@ -27,6 +27,9 @@ class Stage extends FlxBasic implements IBeatReceiver {
public var characterPoses:Map<String, StageCharPos> = [];
public var xmlImportedScripts:Array<XMLImportedScriptInfo> = [];
public var defaultZoom:Float = 1.05;
public var startCam = new FlxPoint();
private var spritesParentFolder = "";
/**
@@ -63,14 +66,19 @@ class Stage extends FlxBasic implements IBeatReceiver {
var event = null;
if (stageXML != null) {
var parsed:Null<Float>;
if((parsed = Std.parseFloat(stageXML.getAtt("startCamPosX"))).isNotNull()) startCam.x = parsed;
if((parsed = Std.parseFloat(stageXML.getAtt("startCamPosY"))).isNotNull()) startCam.y = parsed;
if((parsed = Std.parseFloat(stageXML.getAtt("zoom"))).isNotNull()) defaultZoom = parsed;
stageName = stageXML.getAtt("name").getDefault(stage);
if (PlayState.instance != null) {
var parsed:Null<Float>;
if(stageXML.has.startCamPosX && (parsed = Std.parseFloat(stageXML.att.startCamPosX)) != null) PlayState.instance.camFollow.x = parsed;
if(stageXML.has.startCamPosY && (parsed = Std.parseFloat(stageXML.att.startCamPosY)) != null) PlayState.instance.camFollow.y = parsed;
if(stageXML.has.zoom && (parsed = Std.parseFloat(stageXML.att.zoom)) != null) PlayState.instance.defaultCamZoom = parsed;
if (PlayState.instance == state) {
if(stageXML.has.startCamPosX) PlayState.instance.camFollow.x = startCam.x;
if(stageXML.has.startCamPosY) PlayState.instance.camFollow.y = startCam.y;
if(stageXML.has.zoom) PlayState.instance.defaultCamZoom = defaultZoom;
}
if (stageXML.has.folder) {
spritesParentFolder = stageXML.att.folder;
if (!spritesParentFolder.endsWith("/")) spritesParentFolder += "/";
@@ -333,6 +341,7 @@ class StageCharPos extends FlxObject {
public override function destroy() {
scale.put();
startCam.put();
super.destroy();
}