This commit is contained in:
2015-03-07 07:57:43 -08:00
8 changed files with 43 additions and 36 deletions

View File

@@ -162,16 +162,15 @@ of the camera will be set."
(. camera position))) (. camera position)))
(defn position! (defn position!
"Sets the position of `object`. If `object` is a screen, the position of the "Sets the position of the camera in `screen`."
camera will be set." ([screen vec-3]
([object vec-3] (position! screen (x vec-3) (y vec-3) (z vec-3)))
(position! object (x vec-3) (y vec-3) (z vec-3))) ([screen x-val y-val]
([object x-val y-val] (position! screen x-val y-val nil))
(position! object x-val y-val nil)) ([screen x-val y-val z-val]
([object x-val y-val z-val] (some->> x-val (x! screen))
(some->> x-val (x! object)) (some->> y-val (y! screen))
(some->> y-val (y! object)) (some->> z-val (z! screen))))
(some->> z-val (z! object))))
(defn direction (defn direction
"Returns the direction of the camera in `screen`." "Returns the direction of the camera in `screen`."
@@ -181,10 +180,17 @@ camera will be set."
(defn direction! (defn direction!
"Sets the direction of the camera in `screen`." "Sets the direction of the camera in `screen`."
[screen x-val y-val z-val] ([screen x-val y-val z-val]
(let [^Camera camera (u/get-obj screen :camera)] (direction! screen x-val y-val z-val true))
(.lookAt camera x-val y-val z-val) ([screen x-val y-val z-val look-at?]
(.update camera))) (let [^Camera camera (u/get-obj screen :camera)]
(if look-at?
(.lookAt camera x-val y-val z-val)
(let [^Vector3 dir-vec (direction screen)]
(some->> x-val (x! dir-vec))
(some->> y-val (y! dir-vec))
(some->> z-val (z! dir-vec))))
(.update camera))))
(defn up [screen] (defn up [screen]
"Returns the up vector of the camera in `screen`." "Returns the up vector of the camera in `screen`."

View File

@@ -529,6 +529,7 @@ specify which layers to render with or without.
(set layer-names)) (set layer-names))
(u/throw-key-not-found k)) (u/throw-key-not-found k))
(map #(.indexOf ^java.util.List all-layer-names %)) (map #(.indexOf ^java.util.List all-layer-names %))
(sort)
int-array int-array
(.render renderer))) (.render renderer)))
(.render renderer)) (.render renderer))

View File

@@ -58,22 +58,23 @@
(defrecord ActorEntity [object] Entity (defrecord ActorEntity [object] Entity
(draw! [{:keys [^Actor object x y width height (draw! [{:keys [^Actor object x y width height
scale-x scale-y angle origin-x origin-y]} _ batch] scale-x scale-y angle origin-x origin-y]} _ batch]
(some->> x (.setX object)) (when (.getStage object)
(some->> y (.setY object)) (some->> x (.setX object))
(some->> width (.setWidth object)) (some->> y (.setY object))
(some->> height (.setHeight object)) (some->> width (.setWidth object))
(when (or scale-x scale-y angle) (some->> height (.setHeight object))
(let [scale-x (float (or scale-x 1)) (when (or scale-x scale-y angle)
scale-y (float (or scale-y 1)) (let [scale-x (float (or scale-x 1))
origin-x (float (or origin-x (/ (.getWidth object) 2))) scale-y (float (or scale-y 1))
origin-y (float (or origin-y (/ (.getHeight object) 2))) origin-x (float (or origin-x (/ (.getWidth object) 2)))
angle (float (or angle 0))] origin-y (float (or origin-y (/ (.getHeight object) 2)))
(.setScaleX object scale-x) angle (float (or angle 0))]
(.setScaleY object scale-y) (.setScaleX object scale-x)
(.setOriginX object origin-x) (.setScaleY object scale-y)
(.setOriginY object origin-y) (.setOriginX object origin-x)
(.setRotation object angle))) (.setOriginY object origin-y)
(.draw object ^Batch batch 1))) (.setRotation object angle)))
(.draw object ^Batch batch 1))))
(defrecord ModelEntity [object] Entity (defrecord ModelEntity [object] Entity
(draw! [{:keys [^ModelInstance object x y z]} (draw! [{:keys [^ModelInstance object x y z]}

View File

@@ -6,8 +6,6 @@
(defn play-clj (defn play-clj
[name & [package-name]] [name & [package-name]]
(when (contains? #{"game" "main-screen"} name)
(main/abort "Choose a more creative name than that, silly!"))
(let [render (t/renderer "play-clj") (let [render (t/renderer "play-clj")
lein-droid-render (droid-new/renderer "templates") lein-droid-render (droid-new/renderer "templates")
desktop-class-name "desktop-launcher" desktop-class-name "desktop-launcher"
@@ -21,6 +19,7 @@
android-ns (str package-name "." android-class-name) android-ns (str package-name "." android-class-name)
ios-ns (str package-name "." ios-class-name) ios-ns (str package-name "." ios-class-name)
data {:app-name name data {:app-name name
:game-name (str name "-game")
:name (t/project-name name) :name (t/project-name name)
:package package-name :package package-name
:package-sanitized package-name :package-sanitized package-name

View File

@@ -11,7 +11,7 @@ public class {{android-class-name}} extends AndroidApplication {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}")); RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}"));
try { try {
Game game = (Game) RT.var("{{namespace}}", "{{app-name}}").deref(); Game game = (Game) RT.var("{{namespace}}", "{{game-name}}").deref();
initialize(game); initialize(game);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -14,7 +14,7 @@ public class {{ios-class-name}} extends IOSApplication.Delegate {
IOSApplicationConfiguration config = new IOSApplicationConfiguration(); IOSApplicationConfiguration config = new IOSApplicationConfiguration();
RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}")); RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}"));
try { try {
Game game = (Game) RT.var("{{namespace}}", "{{app-name}}").deref(); Game game = (Game) RT.var("{{namespace}}", "{{game-name}}").deref();
return new IOSApplication(game, config); return new IOSApplication(game, config);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -13,7 +13,7 @@
(clear!) (clear!)
(render! screen entities))) (render! screen entities)))
(defgame {{app-name}} (defgame {{game-name}}
:on-create :on-create
(fn [this] (fn [this]
(set-screen! this main-screen))) (set-screen! this main-screen)))

View File

@@ -6,5 +6,5 @@
(defn -main (defn -main
[] []
(LwjglApplication. {{app-name}} "{{app-name}}" 800 600) (LwjglApplication. {{game-name}} "{{app-name}}" 800 600)
(Keyboard/enableRepeatEvents true)) (Keyboard/enableRepeatEvents true))