Skip to content

Instantly share code, notes, and snippets.

@nasser
Created July 9, 2014 15:45
Show Gist options
  • Save nasser/e2644c4fa81e77d24cbf to your computer and use it in GitHub Desktop.
Save nasser/e2644c4fa81e77d24cbf to your computer and use it in GitHub Desktop.
(defn PathFollower-Update [^UnityEngine.Component self]
(let [t (long (Time/get_time))
tf (float (Time/get_time))
^objects ary (.state self)
^object current-pos (aget ary t)
^object next-pos (aget ary (+ 1 t))
;; generates fast code because it knows the type of self and trt
^System.Type trt UnityEngine.Transform
^UnityEngine.Transform transform (.GetComponent self trt)] ;
(.set_localPosition transform
(Vector3/Lerp
current-pos
next-pos
(- tf t)))))
(defn PathFollower-Update [^UnityEngine.Component self]
(let [t (long (Time/get_time))
tf (float (Time/get_time))
^objects ary (.state self)
^object current-pos (aget ary t)
^object next-pos (aget ary (+ 1 t))
;; generates SLOW reflection code because it DOES NOT know the type of the 2nd parameter, despite the hint
^UnityEngine.Transform transform (.GetComponent self ^System.Type UnityEngine.Transform)]
(.set_localPosition transform
(Vector3/Lerp
current-pos
next-pos
(- tf t)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment