From 8e6f57c78d8c984b63d0519156b9b34a501d539a Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 2 Aug 2022 13:49:23 +0000 Subject: [PATCH] theoretically should lower bound the zoom by scroll bounds --- projects/kiss-flixel/src/kiss_flixel/CameraTools.kiss | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/projects/kiss-flixel/src/kiss_flixel/CameraTools.kiss b/projects/kiss-flixel/src/kiss_flixel/CameraTools.kiss index 6673d4eb..a22b4694 100644 --- a/projects/kiss-flixel/src/kiss_flixel/CameraTools.kiss +++ b/projects/kiss-flixel/src/kiss_flixel/CameraTools.kiss @@ -88,10 +88,11 @@ (let [newMouseWorldPosition (FlxG.mouse.getWorldPosition camera) deltaMousePosition (newMouseWorldPosition.subtractPoint mouseWorldPosition)] (camera.scroll.subtractPoint deltaMousePosition)) - // Undo any scrolling that expands the viewport past its bounds - **(unless (.containsPoint (getScrollBounds camera) camera.scroll) - (-= camera.zoom deltaZoom) - (set camera.scroll scrollPosition)))) + // Undo any zooming out that expands the viewport past its bounds + (when (> 0 deltaZoom) + (unless (.containsPoint (getScrollBounds camera) camera.scroll) + (-= camera.zoom deltaZoom) + (set camera.scroll scrollPosition))))) (otherwise null))) (function getScrollBounds [:FlxCamera camera] @@ -100,7 +101,7 @@ // GOTCHA: if you change FlxG.camera to a moving camera, you MUST provide a default camera for FlxG.mouse.getScreenPosition() (function calculateScrollBounds <>[:FlxSprite T] [:FlxCamera camera :FlxTypedGroup group &opt :FlxCamera screenCamera :Float margin] (let [r (GroupTools.calculateScreenBounds group screenCamera margin)] - (camera.setScrollBoundsRect r.x r.y ~r.width ~r.height))) + (camera.setScrollBoundsRect r.x r.y r.width r.height))) // GOTCHA: if you change FlxG.camera to a moving camera, you MUST provide a default camera for FlxG.mouse.getScreenPosition() (function extendScrollBounds [:FlxCamera camera :FlxSprite sprite &opt :FlxCamera screenCamera :Float margin]