From d78104f1f27f2f52e6a48b2ca49749c59e287cc6 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Tue, 28 Jun 2022 04:52:04 +0000 Subject: [PATCH] CameraTools.calculateScrollBounds --- src/kiss_flixel/CameraTools.hx | 3 +++ src/kiss_flixel/CameraTools.kiss | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/kiss_flixel/CameraTools.hx b/src/kiss_flixel/CameraTools.hx index 2507ea2..b7c140f 100644 --- a/src/kiss_flixel/CameraTools.hx +++ b/src/kiss_flixel/CameraTools.hx @@ -10,6 +10,9 @@ import flixel.math.FlxPoint; import flixel.FlxSprite; import flixel.FlxG; import flixel.util.FlxColor; +import flixel.FlxObject; +import flixel.group.FlxGroup; +import kiss_flixel.GroupTools; using Lambda; diff --git a/src/kiss_flixel/CameraTools.kiss b/src/kiss_flixel/CameraTools.kiss index da1e00d..0ff54bc 100644 --- a/src/kiss_flixel/CameraTools.kiss +++ b/src/kiss_flixel/CameraTools.kiss @@ -80,4 +80,16 @@ if (FlxG.mouse.wheel != 0) { camera.zoom += (FlxG.mouse.wheel * elapsed * speed); } - }#) \ No newline at end of file + }#) + +(function calculateScrollBounds <>[:FlxObject T] [:FlxCamera camera :FlxTypedGroup group &opt :Float margin] + (let [r (GroupTools.calculateBounds group margin)] + (camera.setScrollBoundsRect r.x r.y r.width r.height))) + +(function extendScrollBounds [:FlxCamera camera :FlxObject object &opt :Float margin] + // if the given object is out of bounds, extend the bounds + (let [r (object.getRotatedBounds)] + (setMin camera.minScrollX (- r.left margin)) + (setMin camera.minScrollY (- r.top margin)) + (setMax camera.maxScrollX (+ r.right margin)) + (setMax camera.maxScrollY (+ r.bottom margin)))) \ No newline at end of file