From 8cd2e32553ebc03582c047d3ca26608c58ac6e30 Mon Sep 17 00:00:00 2001 From: oakes Date: Fri, 27 Feb 2015 00:35:10 -0500 Subject: [PATCH 1/4] Add a new arity to direction! and improve documentation of position! --- src/play_clj/core_cameras.clj | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/play_clj/core_cameras.clj b/src/play_clj/core_cameras.clj index 389a389..efb998c 100644 --- a/src/play_clj/core_cameras.clj +++ b/src/play_clj/core_cameras.clj @@ -162,16 +162,15 @@ of the camera will be set." (. camera position))) (defn position! - "Sets the position of `object`. If `object` is a screen, the position of the -camera will be set." - ([object vec-3] - (position! object (x vec-3) (y vec-3) (z vec-3))) - ([object x-val y-val] - (position! object x-val y-val nil)) - ([object x-val y-val z-val] - (some->> x-val (x! object)) - (some->> y-val (y! object)) - (some->> z-val (z! object)))) + "Sets the position of the camera in `screen`." + ([screen vec-3] + (position! screen (x vec-3) (y vec-3) (z vec-3))) + ([screen x-val y-val] + (position! screen x-val y-val nil)) + ([screen x-val y-val z-val] + (some->> x-val (x! screen)) + (some->> y-val (y! screen)) + (some->> z-val (z! screen)))) (defn direction "Returns the direction of the camera in `screen`." @@ -181,10 +180,17 @@ camera will be set." (defn direction! "Sets the direction of the camera in `screen`." - [screen x-val y-val z-val] - (let [^Camera camera (u/get-obj screen :camera)] - (.lookAt camera x-val y-val z-val) - (.update camera))) + ([screen x-val y-val z-val] + (direction! screen x-val y-val z-val true)) + ([screen x-val y-val z-val look-at?] + (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] "Returns the up vector of the camera in `screen`." From f74c5d7820f5ddd214a8894b724580bba8a12837 Mon Sep 17 00:00:00 2001 From: oakes Date: Sat, 28 Feb 2015 23:27:41 -0500 Subject: [PATCH 2/4] Add '-game' to game object name to prevent name clashes --- template/src/leiningen/new/play_clj.clj | 3 +-- template/src/leiningen/new/play_clj/AndroidLauncher.java | 2 +- template/src/leiningen/new/play_clj/IOSLauncher.java | 2 +- template/src/leiningen/new/play_clj/core.clj | 2 +- template/src/leiningen/new/play_clj/desktop-launcher.clj | 2 +- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/template/src/leiningen/new/play_clj.clj b/template/src/leiningen/new/play_clj.clj index 952a02a..1fce564 100644 --- a/template/src/leiningen/new/play_clj.clj +++ b/template/src/leiningen/new/play_clj.clj @@ -6,8 +6,6 @@ (defn play-clj [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") lein-droid-render (droid-new/renderer "templates") desktop-class-name "desktop-launcher" @@ -21,6 +19,7 @@ android-ns (str package-name "." android-class-name) ios-ns (str package-name "." ios-class-name) data {:app-name name + :game-name (str name "-game") :name (t/project-name name) :package package-name :package-sanitized package-name diff --git a/template/src/leiningen/new/play_clj/AndroidLauncher.java b/template/src/leiningen/new/play_clj/AndroidLauncher.java index f43bd18..a2abcd8 100644 --- a/template/src/leiningen/new/play_clj/AndroidLauncher.java +++ b/template/src/leiningen/new/play_clj/AndroidLauncher.java @@ -11,7 +11,7 @@ public class {{android-class-name}} extends AndroidApplication { super.onCreate(savedInstanceState); RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}")); try { - Game game = (Game) RT.var("{{namespace}}", "{{app-name}}").deref(); + Game game = (Game) RT.var("{{namespace}}", "{{game-name}}").deref(); initialize(game); } catch (Exception e) { e.printStackTrace(); diff --git a/template/src/leiningen/new/play_clj/IOSLauncher.java b/template/src/leiningen/new/play_clj/IOSLauncher.java index d42cc71..8760093 100644 --- a/template/src/leiningen/new/play_clj/IOSLauncher.java +++ b/template/src/leiningen/new/play_clj/IOSLauncher.java @@ -14,7 +14,7 @@ public class {{ios-class-name}} extends IOSApplication.Delegate { IOSApplicationConfiguration config = new IOSApplicationConfiguration(); RT.var("clojure.core", "require").invoke(Symbol.intern("{{namespace}}")); try { - Game game = (Game) RT.var("{{namespace}}", "{{app-name}}").deref(); + Game game = (Game) RT.var("{{namespace}}", "{{game-name}}").deref(); return new IOSApplication(game, config); } catch (Exception e) { e.printStackTrace(); diff --git a/template/src/leiningen/new/play_clj/core.clj b/template/src/leiningen/new/play_clj/core.clj index 6ce2bf1..3f1bdcc 100644 --- a/template/src/leiningen/new/play_clj/core.clj +++ b/template/src/leiningen/new/play_clj/core.clj @@ -13,7 +13,7 @@ (clear!) (render! screen entities))) -(defgame {{app-name}} +(defgame {{game-name}} :on-create (fn [this] (set-screen! this main-screen))) diff --git a/template/src/leiningen/new/play_clj/desktop-launcher.clj b/template/src/leiningen/new/play_clj/desktop-launcher.clj index dffdaca..7838f35 100644 --- a/template/src/leiningen/new/play_clj/desktop-launcher.clj +++ b/template/src/leiningen/new/play_clj/desktop-launcher.clj @@ -6,5 +6,5 @@ (defn -main [] - (LwjglApplication. {{app-name}} "{{app-name}}" 800 600) + (LwjglApplication. {{game-name}} "{{app-name}}" 800 600) (Keyboard/enableRepeatEvents true)) From eabdaa3339ca3da7d715f9bd37d354be0feacfa7 Mon Sep 17 00:00:00 2001 From: oakes Date: Sat, 28 Feb 2015 23:55:44 -0500 Subject: [PATCH 3/4] Make sure actors have a stage before trying to draw them --- src/play_clj/entities.clj | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/play_clj/entities.clj b/src/play_clj/entities.clj index e66a584..42224c7 100644 --- a/src/play_clj/entities.clj +++ b/src/play_clj/entities.clj @@ -58,22 +58,23 @@ (defrecord ActorEntity [object] Entity (draw! [{:keys [^Actor object x y width height scale-x scale-y angle origin-x origin-y]} _ batch] - (some->> x (.setX object)) - (some->> y (.setY object)) - (some->> width (.setWidth object)) - (some->> height (.setHeight object)) - (when (or scale-x scale-y angle) - (let [scale-x (float (or scale-x 1)) - scale-y (float (or scale-y 1)) - origin-x (float (or origin-x (/ (.getWidth object) 2))) - origin-y (float (or origin-y (/ (.getHeight object) 2))) - angle (float (or angle 0))] - (.setScaleX object scale-x) - (.setScaleY object scale-y) - (.setOriginX object origin-x) - (.setOriginY object origin-y) - (.setRotation object angle))) - (.draw object ^Batch batch 1))) + (when (.getStage object) + (some->> x (.setX object)) + (some->> y (.setY object)) + (some->> width (.setWidth object)) + (some->> height (.setHeight object)) + (when (or scale-x scale-y angle) + (let [scale-x (float (or scale-x 1)) + scale-y (float (or scale-y 1)) + origin-x (float (or origin-x (/ (.getWidth object) 2))) + origin-y (float (or origin-y (/ (.getHeight object) 2))) + angle (float (or angle 0))] + (.setScaleX object scale-x) + (.setScaleY object scale-y) + (.setOriginX object origin-x) + (.setOriginY object origin-y) + (.setRotation object angle))) + (.draw object ^Batch batch 1)))) (defrecord ModelEntity [object] Entity (draw! [{:keys [^ModelInstance object x y z]} From b734f0c0ae089e3bffa0ee410579788cf6a8d07b Mon Sep 17 00:00:00 2001 From: Felix Andrews Date: Wed, 4 Mar 2015 22:32:02 +0800 Subject: [PATCH 4/4] draw map layers in their correct order when using :with or :without options. --- src/play_clj/core_graphics.clj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/play_clj/core_graphics.clj b/src/play_clj/core_graphics.clj index 74179e2..b2293c2 100644 --- a/src/play_clj/core_graphics.clj +++ b/src/play_clj/core_graphics.clj @@ -526,6 +526,7 @@ specify which layers to render with or without. (set layer-names)) (u/throw-key-not-found k)) (map #(.indexOf ^java.util.List all-layer-names %)) + (sort) int-array (.render renderer))) (.render renderer))