Change camera/renderer creation process
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
{:type :actor :object obj})
|
{:type :actor :object obj})
|
||||||
|
|
||||||
(load "core_2d")
|
(load "core_2d")
|
||||||
|
(load "core_deprecated")
|
||||||
(load "core_global")
|
(load "core_global")
|
||||||
(load "core_render")
|
(load "core_render")
|
||||||
|
|
||||||
@@ -46,16 +47,12 @@
|
|||||||
(remove nil?)
|
(remove nil?)
|
||||||
(reset! entities)))
|
(reset! entities)))
|
||||||
create-renderer-fn! #(swap! screen assoc :renderer (renderer %))
|
create-renderer-fn! #(swap! screen assoc :renderer (renderer %))
|
||||||
create-camera-fn! #(swap! screen assoc :camera (camera %))
|
update-fn! #(swap! screen merge %)]
|
||||||
update-fn! #(swap! screen assoc
|
|
||||||
:renderer (renderer (:renderer %))
|
|
||||||
:camera (camera (:camera %)))]
|
|
||||||
{:show (fn []
|
{:show (fn []
|
||||||
(->> (swap! screen assoc
|
(->> (swap! screen assoc
|
||||||
:total-time 0
|
:total-time 0
|
||||||
:delta-time 0
|
:delta-time 0
|
||||||
:create-renderer-fn! create-renderer-fn!
|
:create-renderer-fn! create-renderer-fn!
|
||||||
:create-camera-fn! create-camera-fn!
|
|
||||||
:update-fn! update-fn!)
|
:update-fn! update-fn!)
|
||||||
(execute-fn! on-show)))
|
(execute-fn! on-show)))
|
||||||
:render (fn [delta-time]
|
:render (fn [delta-time]
|
||||||
@@ -104,11 +101,3 @@
|
|||||||
(defn update!
|
(defn update!
|
||||||
[{:keys [update-fn!]} & {:keys [] :as args}]
|
[{:keys [update-fn!]} & {:keys [] :as args}]
|
||||||
(update-fn! args))
|
(update-fn! args))
|
||||||
|
|
||||||
(defn create-renderer!
|
|
||||||
[{:keys [create-renderer-fn!]} & {:keys [] :as args}]
|
|
||||||
(:renderer (create-renderer-fn! args)))
|
|
||||||
|
|
||||||
(defn create-camera!
|
|
||||||
[{:keys [create-camera-fn!]} & {:keys [] :as args}]
|
|
||||||
(:camera (create-camera-fn! args)))
|
|
||||||
|
|||||||
12
src/play_clj/core_deprecated.clj
Normal file
12
src/play_clj/core_deprecated.clj
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
(in-ns 'play-clj.core)
|
||||||
|
|
||||||
|
(defn create-renderer!
|
||||||
|
[{:keys [create-renderer-fn!]} & {:keys [] :as args}]
|
||||||
|
(:renderer (create-renderer-fn! args)))
|
||||||
|
|
||||||
|
(defmulti renderer :type :default nil)
|
||||||
|
|
||||||
|
(defmethod renderer nil [opts])
|
||||||
|
|
||||||
|
(defmethod renderer :stage [_]
|
||||||
|
(Stage.))
|
||||||
@@ -1,16 +1,6 @@
|
|||||||
(in-ns 'play-clj.core)
|
(in-ns 'play-clj.core)
|
||||||
|
|
||||||
; renderers
|
; rendering
|
||||||
|
|
||||||
(defn load-tiled-map
|
|
||||||
[{:keys [file]}]
|
|
||||||
(assert (string? file))
|
|
||||||
(.load (TmxMapLoader.) file))
|
|
||||||
|
|
||||||
(defn unit-scale
|
|
||||||
[{:keys [tile-size]}]
|
|
||||||
(assert (number? tile-size))
|
|
||||||
(float (/ 1 tile-size)))
|
|
||||||
|
|
||||||
(defn render!
|
(defn render!
|
||||||
[{:keys [renderer ^Camera camera]}]
|
[{:keys [renderer ^Camera camera]}]
|
||||||
@@ -50,37 +40,41 @@
|
|||||||
[screen layer x y]
|
[screen layer x y]
|
||||||
(.getCell ^TiledMapTileLayer (tiled-map-layer screen layer) x y))
|
(.getCell ^TiledMapTileLayer (tiled-map-layer screen layer) x y))
|
||||||
|
|
||||||
(defmulti renderer :type :default nil)
|
; renderers
|
||||||
|
|
||||||
(defmethod renderer nil [opts])
|
(defn tiled-map
|
||||||
|
[s]
|
||||||
|
(if (string? s)
|
||||||
|
(.load (TmxMapLoader.) s)
|
||||||
|
s))
|
||||||
|
|
||||||
(defmethod renderer :orthogonal-tiled-map [opts]
|
(defn tiled-map-renderer
|
||||||
(OrthogonalTiledMapRenderer. ^TiledMap (load-tiled-map opts)
|
[renderer-type path pixels-per-tile]
|
||||||
^double (unit-scale opts)))
|
(let [^TiledMap tmap (tiled-map path)
|
||||||
|
^double unit-scale (/ 1 pixels-per-tile)]
|
||||||
|
(case renderer-type
|
||||||
|
:orthogonal
|
||||||
|
(OrthogonalTiledMapRenderer. tmap unit-scale)
|
||||||
|
:isometric
|
||||||
|
(IsometricTiledMapRenderer. tmap unit-scale)
|
||||||
|
:isometric-staggered
|
||||||
|
(IsometricStaggeredTiledMapRenderer. tmap unit-scale)
|
||||||
|
:hexagonal
|
||||||
|
(IsometricTiledMapRenderer. tmap unit-scale)
|
||||||
|
nil)))
|
||||||
|
|
||||||
(defmethod renderer :isometric-tiled-map [opts]
|
(defn stage
|
||||||
(IsometricTiledMapRenderer. ^TiledMap (load-tiled-map opts)
|
[]
|
||||||
^double (unit-scale opts)))
|
|
||||||
|
|
||||||
(defmethod renderer :isometric-staggered-tiled-map [opts]
|
|
||||||
(IsometricStaggeredTiledMapRenderer. ^TiledMap (load-tiled-map opts)
|
|
||||||
^double (unit-scale opts)))
|
|
||||||
|
|
||||||
(defmethod renderer :hexagonal-tiled-map [opts]
|
|
||||||
(HexagonalTiledMapRenderer. ^TiledMap (load-tiled-map opts)
|
|
||||||
^double (unit-scale opts)))
|
|
||||||
|
|
||||||
(defmethod renderer :stage [_]
|
|
||||||
(Stage.))
|
(Stage.))
|
||||||
|
|
||||||
; cameras
|
; cameras
|
||||||
|
|
||||||
(defmulti camera identity :default :orthographic)
|
(defn orthographic-camera
|
||||||
|
[]
|
||||||
(defmethod camera :orthographic [_]
|
|
||||||
(OrthographicCamera.))
|
(OrthographicCamera.))
|
||||||
|
|
||||||
(defmethod camera :perspective [_]
|
(defn perspective-camera
|
||||||
|
[]
|
||||||
(PerspectiveCamera.))
|
(PerspectiveCamera.))
|
||||||
|
|
||||||
(defn resize-camera!
|
(defn resize-camera!
|
||||||
|
|||||||
Reference in New Issue
Block a user