From 58ff14f5c31b933a1d2f91d6cae7280366d3ffb9 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Thu, 31 Dec 2020 15:48:37 +0000 Subject: Keep camera in map boundary --- src/main/kotlin/CameraController.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main/kotlin/CameraController.kt') diff --git a/src/main/kotlin/CameraController.kt b/src/main/kotlin/CameraController.kt index 510f1a0..c2885de 100644 --- a/src/main/kotlin/CameraController.kt +++ b/src/main/kotlin/CameraController.kt @@ -5,6 +5,8 @@ class CameraController( private val camera: Camera, private val moveSpeed: Double, private val rotateSpeed: Int, + private val xMax: Int, + private val yMax: Int, private val afterInput: () -> Unit ) { @@ -30,6 +32,7 @@ class CameraController( val cameraSin = camera.rotation.sine() * moveSpeed camera.xPos += cameraCos camera.yPos += cameraSin + boundsCheck(camera) afterInput() } @@ -38,6 +41,7 @@ class CameraController( val cameraSin = camera.rotation.sine() * moveSpeed camera.xPos -= cameraCos camera.yPos -= cameraSin + boundsCheck(camera) afterInput() } @@ -51,4 +55,17 @@ class CameraController( afterInput() } + private fun boundsCheck(camera: Camera) { + camera.xPos = clamp(camera.xPos, xMax) + camera.yPos = clamp(camera.yPos, yMax) + } + + private fun clamp(position: Double, max: Int): Double { + return when { + position < 1 -> 1.0 + position > max -> max.toDouble() + else -> position + } + } + } \ No newline at end of file -- cgit v1.2.3