Automatically add box2d contact listener

This commit is contained in:
oakes
2014-01-17 14:17:47 -05:00
parent 7d9ceaa752
commit 6f9c8a4ebd
4 changed files with 53 additions and 36 deletions

View File

@@ -1,5 +1,21 @@
(in-ns 'play-clj.core)
(defn ^:private update-screen!
([{:keys [world g2dp-listener]}]
(when (isa? (type world) World)
(.setContactListener ^World world g2dp-listener)))
([{:keys [renderer ui-listeners]} entities]
(when (isa? (type renderer) Stage)
(doseq [^Actor a (.getActors ^Stage renderer)]
(.remove a))
(doseq [{:keys [object]} entities]
(when (isa? (type object) Actor)
(.addActor ^Stage renderer object)
(doseq [listener ui-listeners]
(.addListener ^Actor object listener))))
(remove-input! renderer)
(add-input! renderer))))
; tiled maps
(defn tiled-map*
@@ -197,19 +213,6 @@
(render! screen)
(draw! screen entities)))
(defn ^:private refresh-renderer!
[{:keys [renderer ui-listeners]} entities]
(when (isa? (type renderer) Stage)
(doseq [^Actor a (.getActors ^Stage renderer)]
(.remove a))
(doseq [{:keys [object]} entities]
(when (isa? (type object) Actor)
(.addActor ^Stage renderer object)
(doseq [listener ui-listeners]
(.addListener ^Actor object listener))))
(remove-input! renderer)
(add-input! renderer)))
; cameras
(defn orthographic*