From bd875011992e4d5b33c20f14c8895811615398e4 Mon Sep 17 00:00:00 2001 From: Ricardo Matias Date: Thu, 21 Nov 2019 13:54:09 +0100 Subject: [PATCH] Remove camera handling logic from Debug3D --- orx-camera/src/main/kotlin/Debug3D.kt | 79 ++++++++++----------------- 1 file changed, 28 insertions(+), 51 deletions(-) diff --git a/orx-camera/src/main/kotlin/Debug3D.kt b/orx-camera/src/main/kotlin/Debug3D.kt index 5ec2a320..0513a7ad 100644 --- a/orx-camera/src/main/kotlin/Debug3D.kt +++ b/orx-camera/src/main/kotlin/Debug3D.kt @@ -1,74 +1,51 @@ package org.openrndr.extras.camera import org.openrndr.Extension -import org.openrndr.Program import org.openrndr.color.ColorRGBa import org.openrndr.draw.* -import org.openrndr.math.Matrix44 import org.openrndr.math.Vector3 @Suppress("unused") -class Debug3D(eye: Vector3 = Vector3(0.0, 0.0, 10.0), lookAt: Vector3 = Vector3.ZERO, fov:Double = 90.0, userInteraction:Boolean = true) : Extension { - +class Debug3D(val size: Int = 10, val divisions: Int = 10) : Extension { override var enabled: Boolean = true - var showGrid = false - val orbitalCamera = OrbitalCamera(eye, lookAt, fov) - private val orbitalControls = OrbitalControls(orbitalCamera, userInteraction) - private var lastSeconds: Double = -1.0 + private val step = size / divisions.toDouble() private val grid = vertexBuffer( vertexFormat { position(3) } - , 4 * 21).apply { + , 4 * (size * divisions + 1)).apply { put { - for (x in -10..10) { - write(Vector3(x.toDouble(), 0.0, -10.0)) - write(Vector3(x.toDouble(), 0.0, 10.0)) - write(Vector3(-10.0, 0.0, x.toDouble())) - write(Vector3(10.0, 0.0, x.toDouble())) + val halfSize = size / 2.0 + var k = -halfSize + + for(i in 0 until divisions + 1) { + write(Vector3(-halfSize, 0.0, k)) + write(Vector3(halfSize, 0.0, k)) + + write(Vector3(k, 0.0, -halfSize)) + write(Vector3(k, 0.0, halfSize)) + + k += step } } } - override fun beforeDraw(drawer: Drawer, program: Program) { - if (lastSeconds == -1.0) lastSeconds = program.seconds - - val delta = program.seconds - lastSeconds - lastSeconds = program.seconds - orbitalCamera.update(delta) - - drawer.background(ColorRGBa.BLACK) - drawer.perspective(orbitalCamera.fov, program.window.size.x / program.window.size.y, 0.1, 1000.0) - drawer.view = orbitalCamera.viewMatrix() - - if (showGrid) { - drawer.isolated { - drawer.fill = ColorRGBa.WHITE - drawer.stroke = ColorRGBa.WHITE - drawer.vertexBuffer(grid, DrawPrimitive.LINES) - - // Axis cross - drawer.fill = ColorRGBa.RED - drawer.lineSegment(Vector3.ZERO, Vector3.UNIT_X) - - drawer.fill = ColorRGBa.GREEN - drawer.lineSegment(Vector3.ZERO, Vector3.UNIT_Y) - - drawer.fill = ColorRGBa.BLUE - drawer.lineSegment(Vector3.ZERO, Vector3.UNIT_Z) - } - } - } - - override fun afterDraw(drawer: Drawer, program: Program) { + fun draw(drawer: Drawer) { drawer.isolated { - drawer.view = Matrix44.IDENTITY - drawer.ortho() - } - } + drawer.fill = ColorRGBa.WHITE + drawer.stroke = ColorRGBa.WHITE + drawer.vertexBuffer(grid, DrawPrimitive.LINES) - override fun setup(program: Program) { - orbitalControls.setup(program) + // Axis cross + drawer.stroke = ColorRGBa.RED + drawer.lineSegment(Vector3.ZERO, Vector3(step, 0.0, 0.0)) + + drawer.stroke = ColorRGBa.GREEN + drawer.lineSegment(Vector3.ZERO, Vector3(0.0, step, 0.0)) + + drawer.stroke = ColorRGBa.BLUE + drawer.lineSegment(Vector3.ZERO, Vector3(0.0, 0.0, step)) + } } } \ No newline at end of file