aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin')
-rw-r--r--src/main/kotlin/CameraController.kt17
-rw-r--r--src/main/kotlin/Raycaster.kt2
-rw-r--r--src/main/kotlin/main.kt8
3 files changed, 24 insertions, 3 deletions
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
diff --git a/src/main/kotlin/Raycaster.kt b/src/main/kotlin/Raycaster.kt
index f012ba8..53c6dc6 100644
--- a/src/main/kotlin/Raycaster.kt
+++ b/src/main/kotlin/Raycaster.kt
@@ -27,8 +27,6 @@ class Raycaster {
do {
rayX += raySweepAngle.cosine() / options.stepPrecision
rayY += raySweepAngle.sine() / options.stepPrecision
-
- // TODO bounds checking
objectTypeHit = map.data[rayY.toFlooredInt()][rayX.toFlooredInt()]
} while (objectTypeHit == 0)
diff --git a/src/main/kotlin/main.kt b/src/main/kotlin/main.kt
index c29374d..0d0d600 100644
--- a/src/main/kotlin/main.kt
+++ b/src/main/kotlin/main.kt
@@ -18,7 +18,13 @@ fun main() {
val raycaster = Raycaster()
- CameraController(camera, moveSpeed = 1.0, rotateSpeed = 15) {
+ CameraController(
+ camera,
+ moveSpeed = 1.0,
+ rotateSpeed = 15,
+ xMax = map.width - 1,
+ yMax = map.height - 1
+ ) {
paint(raycaster, context)
}