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 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) } } } }