Interaction with Mouse

using Makie
 using LinearAlgebra

 scene = Scene(raw = true, camera = cam2d!, resolution = (500, 500))
 r = LinRange(0, 3, 4)
 the_time = Node(time())
 last_open = false
 @async while true
     global last_open
     the_time[] = time()
     # this is a bit awkward, since the isopen(scene) is false
     # as long as the scene isn't displayed
     last_open && !isopen(scene) && break
     last_open = isopen(scene)
     sleep(1/30)
 end
 pos = lift(scene.events.mouseposition, the_time) do mpos, t
     map(LinRange(0, 2pi, 60)) do i
         circle = Point2f0(sin(i), cos(i))
         mouse = to_world(scene, Point2f0(mpos))
         secondary = (sin((i * 10f0) + t) * 0.09) * normalize(circle)
         (secondary .+ circle) .+ mouse
     end
 end
 lines!(scene, pos)
 p1 = scene[end]
 p2 = scatter!(
     scene,
     pos, markersize = 0.1f0,
     marker = :star5,
     color = p1.color,
 )[end]
 center!(scene)
 t = Theme(raw = true, camera = campixel!)
 b1 = button(t, "color")
 b2 = button(t, "marker")
 msize = slider(t, 0.1:0.01:0.5)
 on(b1[end][:clicks]) do c
     p1.color = rand(RGBAf0)
 end
 markers = ('π', '😹', '⚃', '◑', '▼')
 on(b2[end][:clicks]) do c
     p2.marker = markers[rand(1:5)]
 end
 on(msize[end][:value]) do val
     p2.markersize = val
 end
 RecordEvents(hbox(
     vbox(b1, b2, msize),
     scene
 ), "output")