Add AxisHelper to orx-camera
* Rename Debug3D to GridHelper
This commit is contained in:
56
orx-camera/src/main/kotlin/GridHelper.kt
Normal file
56
orx-camera/src/main/kotlin/GridHelper.kt
Normal 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))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user