Remove joints whose bodies no longer exist
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
IsometricStaggeredTiledMapRenderer
|
IsometricStaggeredTiledMapRenderer
|
||||||
IsometricTiledMapRenderer
|
IsometricTiledMapRenderer
|
||||||
OrthogonalTiledMapRenderer]
|
OrthogonalTiledMapRenderer]
|
||||||
[com.badlogic.gdx.physics.box2d World]
|
[com.badlogic.gdx.physics.box2d Joint World]
|
||||||
[com.badlogic.gdx.scenes.scene2d Actor Stage]))
|
[com.badlogic.gdx.scenes.scene2d Actor Stage]))
|
||||||
|
|
||||||
(load "core_global")
|
(load "core_global")
|
||||||
|
|||||||
@@ -15,11 +15,18 @@
|
|||||||
(defn ^:private update-box-2d!
|
(defn ^:private update-box-2d!
|
||||||
[{:keys [^World world]} entities]
|
[{:keys [^World world]} entities]
|
||||||
(when-not (.isLocked world)
|
(when-not (.isLocked world)
|
||||||
(let [bodies (u/gdx-array [])]
|
(let [arr (u/gdx-array [])]
|
||||||
(.getBodies world bodies)
|
; remove bodies that no longer exist
|
||||||
(doseq [body bodies]
|
(.getBodies world arr)
|
||||||
|
(doseq [body arr]
|
||||||
(when-not (some #(= body (:body %)) entities)
|
(when-not (some #(= body (:body %)) entities)
|
||||||
(.destroyBody world body))))))
|
(.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!
|
(defn ^:private update-screen!
|
||||||
([{:keys [world g2dp-listener]}]
|
([{:keys [world g2dp-listener]}]
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
(defn create-field-setters
|
(defn create-field-setters
|
||||||
[obj {:keys [] :as args}]
|
[obj {:keys [] :as args}]
|
||||||
(map (fn [[k v]]
|
(map (fn [[k v]]
|
||||||
`(set! (. ~obj ~(symbol (key->camel k))) (eval ~v)))
|
`(set! (. ~obj ~(symbol (key->camel k))) ~v))
|
||||||
args))
|
args))
|
||||||
|
|
||||||
(defmacro fields!
|
(defmacro fields!
|
||||||
|
|||||||
Reference in New Issue
Block a user