# HG changeset patch # User Robert McIntyre # Date 1328171721 25200 # Node ID 22e193b5c60f17f3861d40790b541cbe907d5cf0 # Parent 22444eb20eccd75a5af1d5cf2170c0f3ffcc232f moved with-movement to cortex.body diff -r 22444eb20ecc -r 22e193b5c60f org/body.org --- a/org/body.org Thu Feb 02 01:32:31 2012 -0700 +++ b/org/body.org Thu Feb 02 01:35:21 2012 -0700 @@ -106,6 +106,64 @@ senses (map (partial joint-proprioception creature) joints)] (fn [] (map #(%) senses)))) + +(defn tap [obj direction force] + (let [control (.getControl obj RigidBodyControl)] + (.applyTorque + control + (.mult (.getPhysicsRotation control) + (.mult (.normalize direction) (float force)))))) + + +(defn with-movement + [object + [up down left right roll-up roll-down :as keyboard] + forces + [root-node + keymap + intilization + world-loop]] + (let [add-keypress + (fn [state keymap key] + (merge keymap + {key + (fn [_ pressed?] + (reset! state pressed?))})) + move-up? (atom false) + move-down? (atom false) + move-left? (atom false) + move-right? (atom false) + roll-left? (atom false) + roll-right? (atom false) + + directions [(Vector3f. 0 1 0)(Vector3f. 0 -1 0) + (Vector3f. 0 0 1)(Vector3f. 0 0 -1) + (Vector3f. -1 0 0)(Vector3f. 1 0 0)] + atoms [move-left? move-right? move-up? move-down? + roll-left? roll-right?] + + keymap* (reduce merge + (map #(add-keypress %1 keymap %2) + atoms + keyboard)) + + splice-loop (fn [] + (dorun + (map + (fn [sym direction force] + (if @sym + (tap object direction force))) + atoms directions forces))) + + world-loop* (fn [world tpf] + (world-loop world tpf) + (splice-loop))] + + [root-node + keymap* + intilization + world-loop*])) + #+end_src @@ -336,64 +394,6 @@ -(defn tap [obj direction force] - (let [control (.getControl obj RigidBodyControl)] - (.applyTorque - control - (.mult (.getPhysicsRotation control) - (.mult (.normalize direction) (float force)))))) - - - -(defn with-movement - [object - [up down left right roll-up roll-down :as keyboard] - forces - [root-node - keymap - intilization - world-loop]] - (let [add-keypress - (fn [state keymap key] - (merge keymap - {key - (fn [_ pressed?] - (reset! state pressed?))})) - move-up? (atom false) - move-down? (atom false) - move-left? (atom false) - move-right? (atom false) - roll-left? (atom false) - roll-right? (atom false) - - directions [(Vector3f. 0 1 0)(Vector3f. 0 -1 0) - (Vector3f. 0 0 1)(Vector3f. 0 0 -1) - (Vector3f. -1 0 0)(Vector3f. 1 0 0)] - atoms [move-left? move-right? move-up? move-down? - roll-left? roll-right?] - - keymap* (reduce merge - (map #(add-keypress %1 keymap %2) - atoms - keyboard)) - - splice-loop (fn [] - (dorun - (map - (fn [sym direction force] - (if @sym - (tap object direction force))) - atoms directions forces))) - - world-loop* (fn [world tpf] - (world-loop world tpf) - (splice-loop))] - - [root-node - keymap* - intilization - world-loop*])) - (defn test-proprioception "Testing proprioception: