Add ShapeRenderer
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
PerspectiveCamera Pixmap Texture VertexAttributes$Usage]
|
PerspectiveCamera Pixmap Texture VertexAttributes$Usage]
|
||||||
[com.badlogic.gdx.graphics.g2d SpriteBatch]
|
[com.badlogic.gdx.graphics.g2d SpriteBatch]
|
||||||
[com.badlogic.gdx.graphics.g3d ModelBatch]
|
[com.badlogic.gdx.graphics.g3d ModelBatch]
|
||||||
|
[com.badlogic.gdx.graphics.glutils ShapeRenderer]
|
||||||
[com.badlogic.gdx.input GestureDetector
|
[com.badlogic.gdx.input GestureDetector
|
||||||
GestureDetector$GestureListener]
|
GestureDetector$GestureListener]
|
||||||
[com.badlogic.gdx.maps MapLayer MapLayers MapProperties]
|
[com.badlogic.gdx.maps MapLayer MapLayers MapProperties]
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
(in-ns 'play-clj.core)
|
(in-ns 'play-clj.core)
|
||||||
|
|
||||||
; pixmaps
|
|
||||||
|
|
||||||
(defmacro pixmap
|
(defmacro pixmap
|
||||||
"Returns a [Pixmap](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html).
|
"Returns a [Pixmap](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/Pixmap.html).
|
||||||
|
|
||||||
@@ -14,9 +12,31 @@
|
|||||||
(defmacro pixmap!
|
(defmacro pixmap!
|
||||||
"Calls a single method on a `pixmap`."
|
"Calls a single method on a `pixmap`."
|
||||||
[object k & options]
|
[object k & options]
|
||||||
`(let [^Pixmap object# (u/get-obj ~object :renderer)]
|
`(let [^Pixmap object# (u/get-obj ~object :object)]
|
||||||
(u/call! object# ~k ~@options)))
|
(u/call! object# ~k ~@options)))
|
||||||
|
|
||||||
|
(defn shape
|
||||||
|
"Returns a [ShapeRenderer](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/ShapeRenderer.html).
|
||||||
|
|
||||||
|
(shape)"
|
||||||
|
([]
|
||||||
|
(ShapeRenderer.))
|
||||||
|
([max-vertices]
|
||||||
|
(ShapeRenderer. max-vertices)))
|
||||||
|
|
||||||
|
(defmacro shape!
|
||||||
|
"Calls a single method on a `shape`."
|
||||||
|
[screen k & options]
|
||||||
|
`(let [^ShapeRenderer object# (u/get-obj ~screen :renderer)]
|
||||||
|
(u/call! object# ~k ~@options)))
|
||||||
|
|
||||||
|
(defmacro shape-type
|
||||||
|
"Returns a static field from [ShapeRenderer.ShapeType](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/ShapeRenderer.ShapeType.html).
|
||||||
|
|
||||||
|
(shape-type :filled)"
|
||||||
|
[k]
|
||||||
|
`~(u/gdx-field :graphics :glutils "ShapeRenderer$ShapeType" (u/key->pascal k)))
|
||||||
|
|
||||||
; tiled maps
|
; tiled maps
|
||||||
|
|
||||||
(defn tiled-map*
|
(defn tiled-map*
|
||||||
@@ -389,3 +409,21 @@ specify which layers to render with or without.
|
|||||||
(e/draw-entity! entity batch)))
|
(e/draw-entity! entity batch)))
|
||||||
(.end batch))
|
(.end batch))
|
||||||
entities)
|
entities)
|
||||||
|
|
||||||
|
(defmacro render-shapes!
|
||||||
|
"Draws shapes with a `shape` renderer.
|
||||||
|
|
||||||
|
(render-shapes! screen :filled
|
||||||
|
:set-color (color :blue)
|
||||||
|
:line 0 0 10 10
|
||||||
|
:rect 10 10 20 20
|
||||||
|
:circle 0 30 5)"
|
||||||
|
[screen type & options]
|
||||||
|
(when (seq (clojure.set/intersection #{:begin :end} (set options)))
|
||||||
|
(-> "No need to call :begin or :end, because it's done for you."
|
||||||
|
Throwable.
|
||||||
|
throw))
|
||||||
|
`(let [^ShapeRenderer object# (u/get-obj ~screen :renderer)]
|
||||||
|
(.begin object# (shape-type ~type))
|
||||||
|
(u/calls! object# ~@options)
|
||||||
|
(.end object#)))
|
||||||
|
|||||||
@@ -205,7 +205,9 @@
|
|||||||
(.destroyJoint world joint))))))
|
(.destroyJoint world joint))))))
|
||||||
|
|
||||||
(defn ^:private update-screen!
|
(defn ^:private update-screen!
|
||||||
([{:keys [world g2dp-listener]}]
|
([{:keys [renderer ^Camera camera world g2dp-listener]}]
|
||||||
|
(when (and camera (isa? (type renderer) ShapeRenderer))
|
||||||
|
(.setProjectionMatrix ^ShapeRenderer renderer (. camera combined)))
|
||||||
(when (isa? (type world) World)
|
(when (isa? (type world) World)
|
||||||
(.setContactListener ^World world g2dp-listener)))
|
(.setContactListener ^World world g2dp-listener)))
|
||||||
([{:keys [renderer world] :as screen} entities]
|
([{:keys [renderer world] :as screen} entities]
|
||||||
|
|||||||
Reference in New Issue
Block a user