Add step! function
This commit is contained in:
@@ -1,20 +1,25 @@
|
|||||||
(in-ns 'play-clj.core)
|
(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-screen!
|
(defn ^:private update-screen!
|
||||||
([{:keys [world g2dp-listener]}]
|
([{:keys [world g2dp-listener]}]
|
||||||
(when (isa? (type world) World)
|
(when (isa? (type world) World)
|
||||||
(.setContactListener ^World world g2dp-listener)))
|
(.setContactListener ^World world g2dp-listener)))
|
||||||
([{:keys [renderer ui-listeners]} entities]
|
([{:keys [renderer] :as screen} entities]
|
||||||
(when (isa? (type renderer) Stage)
|
(cond
|
||||||
(doseq [^Actor a (.getActors ^Stage renderer)]
|
(isa? (type renderer) Stage)
|
||||||
(.remove a))
|
(update-stage! screen entities))))
|
||||||
(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
|
; tiled maps
|
||||||
|
|
||||||
@@ -213,6 +218,16 @@
|
|||||||
(render! screen)
|
(render! screen)
|
||||||
(draw! screen entities)))
|
(draw! screen entities)))
|
||||||
|
|
||||||
|
(defn step!
|
||||||
|
[{:keys [world time-step velocity-iterations position-iterations]
|
||||||
|
:or {time-step (/ 1 60) velocity-iterations 10 position-iterations 10}}
|
||||||
|
entities]
|
||||||
|
(assert world)
|
||||||
|
(cond
|
||||||
|
(isa? (type world) World)
|
||||||
|
(.step ^World world time-step velocity-iterations position-iterations))
|
||||||
|
entities)
|
||||||
|
|
||||||
; cameras
|
; cameras
|
||||||
|
|
||||||
(defn orthographic*
|
(defn orthographic*
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
object#))
|
object#))
|
||||||
|
|
||||||
(defmacro box-2d!
|
(defmacro box-2d!
|
||||||
[{:keys [^World world]} k & options]
|
[screen k & options]
|
||||||
`(u/call! ^World ~world ~k ~@options))
|
`(u/call! ^World (:world ~screen) ~k ~@options))
|
||||||
|
|
||||||
(defn contact-listener
|
(defn contact-listener
|
||||||
[{:keys [on-begin-contact on-end-contact on-post-solve on-pre-solve]} execute-fn!]
|
[{:keys [on-begin-contact on-end-contact on-post-solve on-pre-solve]} execute-fn!]
|
||||||
|
|||||||
Reference in New Issue
Block a user