36 lines
938 B
Kotlin
36 lines
938 B
Kotlin
package org.openrndr.extras.camera
|
|
|
|
import org.openrndr.Extension
|
|
import org.openrndr.Program
|
|
import org.openrndr.draw.Drawer
|
|
import org.openrndr.math.Vector3
|
|
|
|
/**
|
|
* Extension that provides orbital camera view and controls.
|
|
*/
|
|
class Orbital : Extension {
|
|
override var enabled: Boolean = true
|
|
|
|
var eye = Vector3.UNIT_Z * 10.0
|
|
var lookAt = Vector3.ZERO
|
|
var near = 0.1
|
|
var far = 1000.0
|
|
var fov = 90.0
|
|
var userInteraction = true
|
|
var keySpeed = 1.0
|
|
|
|
val camera by lazy { OrbitalCamera(eye, lookAt, fov, near, far) }
|
|
val controls by lazy { OrbitalControls(camera, userInteraction, keySpeed) }
|
|
|
|
override fun setup(program: Program) {
|
|
controls.setup(program)
|
|
}
|
|
|
|
override fun beforeDraw(drawer: Drawer, program: Program) {
|
|
camera.beforeDraw(drawer, program)
|
|
}
|
|
|
|
override fun afterDraw(drawer: Drawer, program: Program) {
|
|
camera.afterDraw(drawer, program)
|
|
}
|
|
} |