Is there a way to hot reload code from outside the oliveProgram block?

Is there a way to hot reload code from outside the oliveProgram block? For instance, hot reload a class in another file whenever I make changes to it.

I think @ricardo has more experience with olive. Was it possible to reload classes? I vaguely remember currently it’s not.

Okay, thanks for the info

Unfortunately it’s not possible to reload external classes via Olive.

Ok. Have a nice Christmas.

I haven’t tested with Olive, but in a normal OPENRNDR program the HotSwap option works for reloading classes without stopping the program.

I don’t know if these settings are required because I haven’t changed them in a very long time.

This is my main program:

package apps2.simpleTests

import org.openrndr.application
import org.openrndr.math.Polar

fun main() = application {
    program {

        val c = SimpleDrawingClass(drawer)
        var angle = 0.0

        extend {
            angle += 1.0
            drawer.run {
                drawer.translate(
                    drawer.bounds.center +
                            Polar(angle, 200.0).cartesian
                )
                c.draw()
            }
        }
    }
}

And this is the class I reload:

package apps2.simpleTests

import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer

class SimpleDrawingClass(val drawer: Drawer) {
    fun draw() {
        with(drawer) {
            strokeWeight = 8.0
            stroke = ColorRGBa.GREEN
            circle(0.0, 0.0, 100.0)
        }
    }
}

Then I Debug the main program, I make changes to SimpleDrawingClass and click the hammer icon on the top bar.

2020-12-26-125342_237x39_scrot
The circle does not suddenly jump, so the main class is not reloaded. But the strokeWeight or the stroke do change after clicking the hammer.