package org.openrndr.extra.olive import org.openrndr.Extension import org.openrndr.Program import org.openrndr.draw.Session import org.operndr.extras.filewatcher.watchFile import java.io.File class Olive
: Extension { override var enabled: Boolean = true var session: Session? = null var script = "src/main/kotlin/live.kts" override fun setup(program: Program) { System.setProperty("idea.io.use.fallback", "true") System.setProperty("org.openrndr.ignoreShadeStyleErrors", "true") val f = File(script) if (!f.exists()) { f.parentFile.mkdirs() var className = program.javaClass.name if (className.contains("$")) className = "Program" f.writeText(""" @file:Suppress("UNUSED_LAMBDA_EXPRESSION") import org.openrndr.Program import org.openrndr.draw.* { program: $className -> program.apply { extend { } } } """.trimIndent()) } program.watchFile(File(script)) { try { val script = it.readText() val func = KtsObjectLoader().load