Add AxisHelper to orx-camera

* Rename Debug3D to GridHelper
This commit is contained in:
Ricardo Matias
2019-11-27 11:39:24 +01:00
parent 6c9c0d622d
commit 03519ff9e3
2 changed files with 89 additions and 1 deletions

View File

@@ -0,0 +1,56 @@
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.Vector3
@Suppress("unused")
class GridHelper(val size: Int = 10, val divisions: Int = 10) : Extension {
override var enabled: Boolean = true
private val step = size / divisions.toDouble()
private val grid = vertexBuffer(
vertexFormat {
position(3)
}
, 4 * (size * divisions + 1)).apply {
put {
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) {
draw(drawer)
}
fun draw(drawer: Drawer) {
drawer.isolated {
drawer.fill = ColorRGBa.WHITE
drawer.stroke = ColorRGBa.WHITE
drawer.vertexBuffer(grid, DrawPrimitive.LINES)
// 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))
}
}
}