ASMR/src/main/kotlin/net/shadowfacts/asmr/ui/ProgramCanvasView.kt

45 lines
1.1 KiB
Kotlin

package net.shadowfacts.asmr.ui
import net.shadowfacts.asmr.program.Program
import net.shadowfacts.asmr.program.ProgramBlock
import net.shadowfacts.cacao.geometry.Point
import net.shadowfacts.cacao.util.Color
import net.shadowfacts.cacao.util.RenderHelper
import net.shadowfacts.cacao.view.View
/**
* @author shadowfacts
*/
class ProgramCanvasView(val program: Program): View() {
lateinit var blocks: Map<ProgramBlock, ProgramBlockView>
override fun wasAdded() {
super.wasAdded()
zIndex = 5.0
blocks = program.blocks.associateWith { ProgramBlockView(it) }
blocks.values.forEach {
addSubview(it)
}
}
override fun drawContent(mouse: Point, delta: Float) {
super.drawContent(mouse, delta)
blocks.keys.forEach { block ->
block.inputs
.filter { it.source != null }
.forEach { input ->
val start = block.position
val source = input.source!!
val sourcePosition = source.block.position
val end = Point(sourcePosition.x + blocks[source.block]!!.bounds.width, sourcePosition.y)
RenderHelper.drawLine(start, end, zIndex, 5f, Color.WHITE)
}
}
}
}