From 011b20253fe99608065008f3fadd799459397439 Mon Sep 17 00:00:00 2001 From: oakes Date: Sun, 19 Jan 2014 02:22:47 -0500 Subject: [PATCH] Move update functions to the listeners file --- src/play_clj/core_graphics.clj | 38 ------------------------------- src/play_clj/core_listeners.clj | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/src/play_clj/core_graphics.clj b/src/play_clj/core_graphics.clj index b99b9aa..7d8f1ce 100644 --- a/src/play_clj/core_graphics.clj +++ b/src/play_clj/core_graphics.clj @@ -1,43 +1,5 @@ (in-ns 'play-clj.core) -(defn ^:private update-stage! - [{:keys [^Stage renderer ui-listeners]} entities] - (doseq [^Actor a (.getActors renderer)] - (.remove a)) - (doseq [{:keys [object]} entities] - (when (isa? (type object) Actor) - (.addActor renderer object) - (doseq [listener ui-listeners] - (.addListener ^Actor object listener)))) - (remove-input! renderer) - (add-input! renderer)) - -(defn ^:private update-box-2d! - [{:keys [^World world]} entities] - (when-not (.isLocked world) - (let [arr (u/gdx-array [])] - ; remove bodies that no longer exist - (.getBodies world arr) - (doseq [body arr] - (when-not (some #(= body (:body %)) entities) - (.destroyBody world body))) - ; remove joints whose bodies no longer exist - (.getJoints world arr) - (doseq [^Joint joint arr] - (when (and (not (some #(= (.getBodyA joint) (:body %)) entities)) - (not (some #(= (.getBodyB joint) (:body %)) entities))) - (.destroyJoint world joint)))))) - -(defn ^:private update-screen! - ([{:keys [world g2dp-listener]}] - (when (isa? (type world) World) - (.setContactListener ^World world g2dp-listener))) - ([{:keys [renderer world] :as screen} entities] - (when (isa? (type renderer) Stage) - (update-stage! screen entities)) - (when (isa? (type world) World) - (update-box-2d! screen entities)))) - ; tiled maps (defn tiled-map* diff --git a/src/play_clj/core_listeners.clj b/src/play_clj/core_listeners.clj index b66d6dd..48533fc 100644 --- a/src/play_clj/core_listeners.clj +++ b/src/play_clj/core_listeners.clj @@ -173,3 +173,43 @@ (execute-fn! on-post-solve :contact c :impulse i)) (preSolve [this c m] (execute-fn! on-pre-solve :contact c :old-manifold m)))) + +; update functions + +(defn ^:private update-stage! + [{:keys [^Stage renderer ui-listeners]} entities] + (doseq [^Actor a (.getActors renderer)] + (.remove a)) + (doseq [{:keys [object]} entities] + (when (isa? (type object) Actor) + (.addActor renderer object) + (doseq [listener ui-listeners] + (.addListener ^Actor object listener)))) + (remove-input! renderer) + (add-input! renderer)) + +(defn ^:private update-box-2d! + [{:keys [^World world]} entities] + (when-not (.isLocked world) + (let [arr (u/gdx-array [])] + ; remove bodies that no longer exist + (.getBodies world arr) + (doseq [body arr] + (when-not (some #(= body (:body %)) entities) + (.destroyBody world body))) + ; remove joints whose bodies no longer exist + (.getJoints world arr) + (doseq [^Joint joint arr] + (when (and (not (some #(= (.getBodyA joint) (:body %)) entities)) + (not (some #(= (.getBodyB joint) (:body %)) entities))) + (.destroyJoint world joint)))))) + +(defn ^:private update-screen! + ([{:keys [world g2dp-listener]}] + (when (isa? (type world) World) + (.setContactListener ^World world g2dp-listener))) + ([{:keys [renderer world] :as screen} entities] + (when (isa? (type renderer) Stage) + (update-stage! screen entities)) + (when (isa? (type world) World) + (update-box-2d! screen entities))))