 (def world-height 800)
 (def update-interval-ms 15)
 (def swipe-damping-factor 1)
+(def min-slide-speed-sq 16)
 
 ;; SVG setup
 

            (.generateWithRelativeTime rx-observable
              {:dx (* update-interval-ms (or vx 0)), :dy (* update-interval-ms (or vy 0))}
              (fn [d] 
                (> (dist-sq (:dx d) (:dy d)) 10))
              (fn [d] (let [[x y] (apply dampen (map d [:dx :dy]))] {:dx x :dy y}))
              identity
              (constantly update-interval-ms))))))))


(defn move-camera-on-swipe! [manager current-state]
  (.subscribe
    (swipe-displacements-observable manager (:svg @current-state))
    (fn [d] 
      (let [{:keys [dx dy]} d] (move-camera! current-state dx dy)))))

;; Exported function to do magic


    (.add manager (js/Hammer.Pan.))
    (-> manager (.add (js/Hammer.Swipe.))
        (.recognizeWith (.get manager "pan")))
    (-> manager (.add (js/Hammer.Pinch.))
        (.recognizeWith (.get manager "pan")))
    manager))

(defn gesture-observable [manager svg gesture]
