[orx-camera] Add ChangeEvents interface

This commit is contained in:
Edwin Jakobs
2022-12-21 22:09:47 +01:00
parent d10ddb7dcb
commit 58359b9bab
5 changed files with 97 additions and 13 deletions

View File

@@ -3,14 +3,22 @@ package org.openrndr.extra.camera
import org.openrndr.Extension
import org.openrndr.Program
import org.openrndr.draw.Drawer
import org.openrndr.events.Event
import org.openrndr.math.Vector3
/**
* Extension that provides orbital camera view and controls.
*/
class Orbital : Extension {
class Orbital : Extension, ChangeEvents {
override var enabled: Boolean = true
override val changed = Event<Unit>()
override val hasChanged: Boolean
get() {
return camera.hasChanged
}
var eye = Vector3.UNIT_Z * 10.0
var lookAt = Vector3.ZERO
var near = 0.1
@@ -28,6 +36,7 @@ class Orbital : Extension {
val camera by lazy {
OrbitalCamera(eye, lookAt, fov, near, far, projectionType).apply {
dampingFactor = this@Orbital.dampingFactor
this.changed.listen(this@Orbital.changed)
}
}
val controls by lazy { OrbitalControls(camera, userInteraction, keySpeed) }