Add model and model-builder
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
(ns play-clj.g3d
|
(ns play-clj.g3d
|
||||||
(:require [play-clj.utils :as u])
|
(:require [play-clj.utils :as u])
|
||||||
(:import [com.badlogic.gdx.graphics.g3d Environment ModelBatch]))
|
(:import [com.badlogic.gdx.graphics.g3d Environment Model ModelBatch
|
||||||
|
ModelInstance]
|
||||||
|
[com.badlogic.gdx.graphics.g3d.utils ModelBuilder]))
|
||||||
|
|
||||||
; environment
|
; environment
|
||||||
|
|
||||||
@@ -31,7 +33,7 @@
|
|||||||
(ModelBatch.))
|
(ModelBatch.))
|
||||||
|
|
||||||
(defmacro model-batch
|
(defmacro model-batch
|
||||||
"Returns an [ModelBatch](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/Environment.html)
|
"Returns a [ModelBatch](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/ModelBatch.html)
|
||||||
|
|
||||||
(model-batch)"
|
(model-batch)"
|
||||||
[& options]
|
[& options]
|
||||||
@@ -41,5 +43,55 @@
|
|||||||
(defmacro model-batch!
|
(defmacro model-batch!
|
||||||
"Calls a single method on an `model-batch`"
|
"Calls a single method on an `model-batch`"
|
||||||
[screen k & options]
|
[screen k & options]
|
||||||
`(let [^ModelBatch object# (u/get-obj ~screen :attributes)]
|
`(let [^ModelBatch object# (u/get-obj ~screen :renderer)]
|
||||||
|
(u/call! object# ~k ~@options)))
|
||||||
|
|
||||||
|
; model
|
||||||
|
|
||||||
|
(defn model*
|
||||||
|
"The function version of `model`"
|
||||||
|
([a1]
|
||||||
|
(u/create-entity (ModelInstance. (if (map? a1) (:object a1) a1))))
|
||||||
|
([a1 a2]
|
||||||
|
(u/create-entity (ModelInstance. a1 a2)))
|
||||||
|
([a1 a2 a3]
|
||||||
|
(u/create-entity (ModelInstance. a1 a2 a3)))
|
||||||
|
([a1 a2 a3 a4]
|
||||||
|
(u/create-entity (ModelInstance. a1 a2 a3 a4)))
|
||||||
|
([a1 a2 a3 a4 a5]
|
||||||
|
(u/create-entity (ModelInstance. a1 a2 a3 a4 a5)))
|
||||||
|
([a1 a2 a3 a4 a5 a6]
|
||||||
|
(u/create-entity (ModelInstance. a1 a2 a3 a4 a5 a6))))
|
||||||
|
|
||||||
|
(defmacro model
|
||||||
|
"Returns an entity based on [ModelInstance](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/ModelInstance.html)"
|
||||||
|
[& options]
|
||||||
|
`(let [^ModelInstance object# (model*)]
|
||||||
|
(u/calls! object# ~@options)))
|
||||||
|
|
||||||
|
(defmacro model!
|
||||||
|
"Calls a single method on an `model`"
|
||||||
|
[entity k & options]
|
||||||
|
`(let [^ModelInstance object# (u/get-obj ~entity :object)]
|
||||||
|
(u/call! object# ~k ~@options)))
|
||||||
|
|
||||||
|
; model-builder
|
||||||
|
|
||||||
|
(defn model-builder*
|
||||||
|
"The function version of `model-builder`"
|
||||||
|
[]
|
||||||
|
(ModelBuilder.))
|
||||||
|
|
||||||
|
(defmacro model-builder
|
||||||
|
"Returns a [ModelBuilder](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/utils/ModelBuilder.html)
|
||||||
|
|
||||||
|
(model-builder)"
|
||||||
|
[& options]
|
||||||
|
`(let [^ModelBuilder object# (model-builder*)]
|
||||||
|
(u/calls! object# ~@options)))
|
||||||
|
|
||||||
|
(defmacro model-builder!
|
||||||
|
"Calls a single method on an `model-builder`"
|
||||||
|
[object k & options]
|
||||||
|
`(let [^ModelBuilder object# object]
|
||||||
(u/call! object# ~k ~@options)))
|
(u/call! object# ~k ~@options)))
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
(:require [clojure.string :as s])
|
(:require [clojure.string :as s])
|
||||||
(:import [com.badlogic.gdx.graphics.g2d NinePatch ParticleEffect
|
(:import [com.badlogic.gdx.graphics.g2d NinePatch ParticleEffect
|
||||||
TextureRegion]
|
TextureRegion]
|
||||||
|
[com.badlogic.gdx.graphics.g3d ModelInstance]
|
||||||
[com.badlogic.gdx.scenes.scene2d Actor]
|
[com.badlogic.gdx.scenes.scene2d Actor]
|
||||||
[com.badlogic.gdx.utils Array ArrayMap]))
|
[com.badlogic.gdx.utils Array ArrayMap]))
|
||||||
|
|
||||||
@@ -205,3 +206,7 @@ new object to be created each time a field is set)
|
|||||||
(defmethod create-entity Actor
|
(defmethod create-entity Actor
|
||||||
[obj]
|
[obj]
|
||||||
{:type :actor :object obj})
|
{:type :actor :object obj})
|
||||||
|
|
||||||
|
(defmethod create-entity ModelInstance
|
||||||
|
[obj]
|
||||||
|
{:type :model :object obj})
|
||||||
|
|||||||
Reference in New Issue
Block a user