Files
play-clj/src/play_clj/g3d.clj
2014-01-29 02:18:00 -05:00

98 lines
2.7 KiB
Clojure

(ns play-clj.g3d
(:require [play-clj.utils :as u])
(:import [com.badlogic.gdx.graphics.g3d Environment Model ModelBatch
ModelInstance]
[com.badlogic.gdx.graphics.g3d.utils ModelBuilder]))
; environment
(defn environment*
"The function version of `environment`"
[]
(Environment.))
(defmacro environment
"Returns an [Environment](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/Environment.html)
(environment)"
[& options]
`(let [^Environment object# (environment*)]
(u/calls! object# ~@options)))
(defmacro environment!
"Calls a single method on an `environment`"
[screen k & options]
`(let [^Environment object# (u/get-obj ~screen :attributes)]
(u/call! object# ~k ~@options)))
; model-batch
(defn model-batch*
"The function version of `model-batch`"
[]
(ModelBatch.))
(defmacro model-batch
"Returns a [ModelBatch](http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g3d/ModelBatch.html)
(model-batch)"
[& options]
`(let [^ModelBatch object# (model-batch*)]
(u/calls! object# ~@options)))
(defmacro model-batch!
"Calls a single method on an `model-batch`"
[screen k & options]
`(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)))