Add orx-view-box, adjust for api changes in OPENRNDR
This commit is contained in:
@@ -4,6 +4,7 @@ import org.openrndr.Extension
|
||||
import org.openrndr.MouseEvents
|
||||
import org.openrndr.Program
|
||||
import org.openrndr.draw.Drawer
|
||||
import org.openrndr.draw.RenderTarget
|
||||
import org.openrndr.math.Matrix44
|
||||
import org.openrndr.math.transforms.buildTransform
|
||||
|
||||
@@ -36,6 +37,14 @@ class Camera2D : Extension {
|
||||
}
|
||||
|
||||
override fun beforeDraw(drawer: Drawer, program: Program) {
|
||||
drawer.pushTransforms()
|
||||
drawer.ortho(RenderTarget.active)
|
||||
drawer.view = view
|
||||
}
|
||||
}
|
||||
|
||||
override fun afterDraw(drawer: Drawer, program: Program) {
|
||||
drawer.popTransforms()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -168,6 +168,9 @@ class OrbitalCamera(eye: Vector3 = Vector3.ZERO, lookAt: Vector3 = Vector3.UNIT_
|
||||
override var enabled: Boolean = true
|
||||
|
||||
override fun beforeDraw(drawer: Drawer, program: Program) {
|
||||
|
||||
drawer.pushTransforms()
|
||||
|
||||
if (lastSeconds == -1.0) lastSeconds = program.seconds
|
||||
|
||||
val delta = program.seconds - lastSeconds
|
||||
@@ -178,8 +181,7 @@ class OrbitalCamera(eye: Vector3 = Vector3.ZERO, lookAt: Vector3 = Vector3.UNIT_
|
||||
}
|
||||
|
||||
override fun afterDraw(drawer: Drawer, program: Program) {
|
||||
drawer.view = Matrix44.IDENTITY
|
||||
drawer.ortho()
|
||||
drawer.popTransforms()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +208,6 @@ fun OrbitalCamera.isolated(drawer: Drawer, function: Drawer.() -> Unit) {
|
||||
* if you don't need to revert back to the orthographic projection.
|
||||
*/
|
||||
fun OrbitalCamera.applyTo(drawer: Drawer) {
|
||||
|
||||
if (projectionType == ProjectionType.PERSPECTIVE) {
|
||||
drawer.perspective(fov, drawer.width.toDouble() / drawer.height, near, far)
|
||||
} else {
|
||||
|
||||
@@ -57,14 +57,14 @@ class OrbitalControls(
|
||||
|
||||
// half of the fov is center to top of screen
|
||||
val targetDistance = offset.length * tan(fov.asRadians / 2)
|
||||
val panX = (2 * delta.x * targetDistance / program.window.size.x)
|
||||
val panY = (2 * delta.y * targetDistance / program.window.size.y)
|
||||
val panX = (2 * delta.x * targetDistance / program.width)
|
||||
val panY = (2 * delta.y * targetDistance / program.height)
|
||||
|
||||
orbitalCamera.pan(panX, -panY, 0.0)
|
||||
|
||||
} else {
|
||||
val rotX = 360.0 * delta.x / program.window.size.x
|
||||
val rotY = 360.0 * delta.y / program.window.size.y
|
||||
val rotX = 360.0 * delta.x / program.width
|
||||
val rotY = 360.0 * delta.y / program.height
|
||||
orbitalCamera.rotate(rotX, rotY)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user