diff --git a/core/src/mindustry/core/Renderer.java b/core/src/mindustry/core/Renderer.java index fc666a4197..3cbe634081 100644 --- a/core/src/mindustry/core/Renderer.java +++ b/core/src/mindustry/core/Renderer.java @@ -158,7 +158,13 @@ public class Renderer implements ApplicationListener{ public void update(){ Color.white.set(1f, 1f, 1f, 1f); - float dest = Mathf.clamp(Mathf.round(targetscale, 0.5f), minScale(), maxScale()); + float baseTarget = targetscale; + + if(control.input.logicCutscene){ + baseTarget = Mathf.lerp(minZoom, maxZoom, control.input.logicCutsceneZoom); + } + + float dest = Mathf.clamp(Mathf.round(baseTarget, 0.5f), minScale(), maxScale()); camerascale = Mathf.lerpDelta(camerascale, dest, 0.1f); if(Mathf.equal(camerascale, dest, 0.001f)) camerascale = dest; laserOpacity = settings.getInt("lasersopacity") / 100f; diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 281f4ef2d5..47f0be901b 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -57,6 +57,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public boolean logicCutscene; public Vec2 logicCamPan = new Vec2(); public float logicCamSpeed = 0.1f; + public float logicCutsceneZoom = -1f; /** If any of these functions return true, input is locked. */ public Seq inputLocks = Seq.with(() -> renderer.isCutscene(), () -> logicCutscene); @@ -583,6 +584,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public void update(){ if(logicCutscene && !renderer.isCutscene()){ Core.camera.position.lerpDelta(logicCamPan, logicCamSpeed); + }else{ + logicCutsceneZoom = -1f; } playerPlanTree.clear(); diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index ee4afec401..30d2a4c793 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -1145,7 +1145,7 @@ public class LExecutor{ } case zoom -> { control.input.logicCutscene = true; - renderer.setScale(Mathf.lerp(renderer.minZoom, renderer.maxZoom, Mathf.clamp(exec.numf(p1)))); + control.input.logicCutsceneZoom = Mathf.clamp(exec.numf(p1)); } case stop -> { control.input.logicCutscene = false;