                         [kill [int] void]])
   (:require [afterglow.max.core :as core]
             [afterglow.controllers :as controllers]
+            [afterglow.effects.cues :as cues]
             [afterglow.show :as show]
             [afterglow.show-context :refer [*show*]]
             [taoensso.timbre :as timbre])


  The first outlet sends messages that provide status updates about
  the cue, `started`, `ending`, or `ended`, each followed by the
  numeric ID of the effect associated with that run of the cue. These
  messages will be sent regardless of whether the cue was started by
  this object.

  The remaining inlets and outlets allow the variables bound to the
  cue to be adjusted and monitored. They will be documented once
  implemented."
  {:doc/format :markdown}
  (:gen-class :extends com.cycling74.max.MaxObject
              :constructors {[int int] []}

(defn watch-cue-local-variables
  "After we start a cue, this function looks for any variable bindings
  which are cue-local, and registers callback functions to send
  updates if their values change."
  [this]
  (unwatch-cue-local-variables this)  ; Should be unnecessary, but clean up just in case
  (let [{:keys [x y]} @(.state this)
