did a proper solution, because elements were never removed.

This commit is contained in:
Bryce Covert
2015-07-25 16:56:30 -07:00
parent 578a566207
commit 71799fef35

View File

@@ -191,17 +191,19 @@ in the `screen`."
(.setCamera camera) (.setCamera camera)
(.setWorldSize (. camera viewportWidth) (. camera viewportHeight))))) (.setWorldSize (. camera viewportWidth) (. camera viewportHeight)))))
([{:keys [^Stage renderer ui-listeners]} [entities]] ([{:keys [^Stage renderer ui-listeners]} [entities]]
(doseq [^Actor a (.getActors renderer)] (let [actor-set (->> entities
#_(.remove a)) vals
(doseq [e (vals entities) ] (map :object)
(let [object (:object e)] (filter #(isa? (type %) Actor))
(when (isa? (type object) Actor) set)]
(when-not (.hasParent object) (doseq [^Actor a (clojure.set/difference (set (.getActors renderer)) actor-set )]
(.addActor renderer object)) (.remove a))
(doseq [object (clojure.set/difference actor-set (set (.getActors renderer)) ) ]
(.addActor renderer object)
(doseq [[_ listener] ui-listeners] (doseq [[_ listener] ui-listeners]
(.addListener ^Actor object listener))))) (.addListener ^Actor object listener)))
(remove-input! renderer) (remove-input! renderer)
(add-input! renderer))) (add-input! renderer))))
(defmulti update-physics! (defmulti update-physics!
(fn [screen & [entities]] (some-> screen :world class .getName)) (fn [screen & [entities]] (some-> screen :world class .getName))