![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.ru.casperix.math.camera.OrthographicCamera2f.kt Maven / Gradle / Ivy
package ru.casperix.math.camera
import ru.casperix.math.axis_aligned.int32.Dimension2i
import ru.casperix.math.quad_matrix.float32.Matrix3f
import ru.casperix.math.vector.float32.Vector2f
class OrthographicCamera2f(initialZoom: Float, initialPosition:Vector2f, initialViewport:Dimension2i) {
var transform: CameraTransform2f = calculate(initialViewport, initialZoom, initialPosition); private set
var zoom = initialZoom
set(value) {
if (field == value) return
field = value
invalidate()
}
var position = initialPosition
set(value) {
if (field == value) return
field = value
invalidate()
}
var viewport = initialViewport
set(value) {
if (field == value) return
field = value
invalidate()
}
private fun invalidate() {
transform = calculate(viewport, zoom, position)
}
companion object {
fun calculate(
viewport: Dimension2i,
zoom: Float,
position: Vector2f
): CameraTransform2f {
val projection = Matrix3f.orthographic(
-viewport.width / 2f * zoom,
viewport.width / 2f * zoom,
-viewport.height / 2f * zoom,
viewport.height / 2f * zoom,
)
val view = Matrix3f.translate(-position)
return CameraTransform2f(projection, view, viewport)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy