Merge branch 'master' of ssh://goldsmith.journeyman.cc/srv/git/mw-engine
This commit is contained in:
commit
ebbc9fcdbb
|
@ -12,7 +12,7 @@
|
||||||
:license {:name "GNU General Public License v2"
|
:license {:name "GNU General Public License v2"
|
||||||
:url "http://www.gnu.org/licenses/gpl-2.0.html"}
|
:url "http://www.gnu.org/licenses/gpl-2.0.html"}
|
||||||
:plugins [[lein-marginalia "0.7.1"]]
|
:plugins [[lein-marginalia "0.7.1"]]
|
||||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
:dependencies [[org.clojure/clojure "1.6.0"]
|
||||||
[org.clojure/math.combinatorics "0.0.7"]
|
[org.clojure/math.combinatorics "0.0.7"]
|
||||||
[org.clojure/tools.trace "0.7.8"]
|
[org.clojure/tools.trace "0.7.8"]
|
||||||
[org.clojure/tools.namespace "0.2.4"]
|
[org.clojure/tools.namespace "0.2.4"]
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
;; assumed to have altitudes already set from a heighmap.
|
;; assumed to have altitudes already set from a heighmap.
|
||||||
|
|
||||||
(ns mw-engine.drainage
|
(ns mw-engine.drainage
|
||||||
(:require
|
|
||||||
[clojure.core.reducers :as r])
|
|
||||||
(:use mw-engine.utils
|
(:use mw-engine.utils
|
||||||
mw-engine.world))
|
mw-engine.world))
|
||||||
|
|
||||||
|
@ -21,7 +19,7 @@
|
||||||
[world cell]
|
[world cell]
|
||||||
(remove nil?
|
(remove nil?
|
||||||
(into []
|
(into []
|
||||||
(r/map
|
(map
|
||||||
(fn [n]
|
(fn [n]
|
||||||
(cond (= cell (get-least-cell (get-neighbours world n) :altitude)) n))
|
(cond (= cell (get-least-cell (get-neighbours world n) :altitude)) n))
|
||||||
(get-neighbours-with-property-value world (:x cell) (:y cell) 1
|
(get-neighbours-with-property-value world (:x cell) (:y cell) 1
|
||||||
|
@ -30,10 +28,12 @@
|
||||||
|
|
||||||
(def flow
|
(def flow
|
||||||
"Compute the total flow upstream of this `cell` in this `world`, and return a cell identical
|
"Compute the total flow upstream of this `cell` in this `world`, and return a cell identical
|
||||||
to this one but having a value of its flow property set from that computation.
|
to this one but having a value of its flow property set from that computation. The function is
|
||||||
|
memoised because the consequence of mapping a recursive function across an array is that many
|
||||||
|
cells will be revisited - potentially many times.
|
||||||
|
|
||||||
Flow comes from a higher cell to a lower only if the lower is the lowest neighbour of the higher."
|
Flow comes from a higher cell to a lower only if the lower is the lowest neighbour of the higher."
|
||||||
(memoize
|
(memoize
|
||||||
(fn [world cell]
|
(fn [world cell]
|
||||||
(cond
|
(cond
|
||||||
(not (nil? (:flow cell))) cell
|
(not (nil? (:flow cell))) cell
|
||||||
|
|
Loading…
Reference in a new issue