Mercurial > cortex
diff org/body.org @ 141:22e193b5c60f
moved with-movement to cortex.body
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Thu, 02 Feb 2012 01:35:21 -0700 |
parents | 22444eb20ecc |
children | ccd057319c2a |
line wrap: on
line diff
1.1 --- a/org/body.org Thu Feb 02 01:32:31 2012 -0700 1.2 +++ b/org/body.org Thu Feb 02 01:35:21 2012 -0700 1.3 @@ -106,6 +106,64 @@ 1.4 senses (map (partial joint-proprioception creature) joints)] 1.5 (fn [] 1.6 (map #(%) senses)))) 1.7 + 1.8 +(defn tap [obj direction force] 1.9 + (let [control (.getControl obj RigidBodyControl)] 1.10 + (.applyTorque 1.11 + control 1.12 + (.mult (.getPhysicsRotation control) 1.13 + (.mult (.normalize direction) (float force)))))) 1.14 + 1.15 + 1.16 +(defn with-movement 1.17 + [object 1.18 + [up down left right roll-up roll-down :as keyboard] 1.19 + forces 1.20 + [root-node 1.21 + keymap 1.22 + intilization 1.23 + world-loop]] 1.24 + (let [add-keypress 1.25 + (fn [state keymap key] 1.26 + (merge keymap 1.27 + {key 1.28 + (fn [_ pressed?] 1.29 + (reset! state pressed?))})) 1.30 + move-up? (atom false) 1.31 + move-down? (atom false) 1.32 + move-left? (atom false) 1.33 + move-right? (atom false) 1.34 + roll-left? (atom false) 1.35 + roll-right? (atom false) 1.36 + 1.37 + directions [(Vector3f. 0 1 0)(Vector3f. 0 -1 0) 1.38 + (Vector3f. 0 0 1)(Vector3f. 0 0 -1) 1.39 + (Vector3f. -1 0 0)(Vector3f. 1 0 0)] 1.40 + atoms [move-left? move-right? move-up? move-down? 1.41 + roll-left? roll-right?] 1.42 + 1.43 + keymap* (reduce merge 1.44 + (map #(add-keypress %1 keymap %2) 1.45 + atoms 1.46 + keyboard)) 1.47 + 1.48 + splice-loop (fn [] 1.49 + (dorun 1.50 + (map 1.51 + (fn [sym direction force] 1.52 + (if @sym 1.53 + (tap object direction force))) 1.54 + atoms directions forces))) 1.55 + 1.56 + world-loop* (fn [world tpf] 1.57 + (world-loop world tpf) 1.58 + (splice-loop))] 1.59 + 1.60 + [root-node 1.61 + keymap* 1.62 + intilization 1.63 + world-loop*])) 1.64 + 1.65 1.66 #+end_src 1.67 1.68 @@ -336,64 +394,6 @@ 1.69 1.70 1.71 1.72 -(defn tap [obj direction force] 1.73 - (let [control (.getControl obj RigidBodyControl)] 1.74 - (.applyTorque 1.75 - control 1.76 - (.mult (.getPhysicsRotation control) 1.77 - (.mult (.normalize direction) (float force)))))) 1.78 - 1.79 - 1.80 - 1.81 -(defn with-movement 1.82 - [object 1.83 - [up down left right roll-up roll-down :as keyboard] 1.84 - forces 1.85 - [root-node 1.86 - keymap 1.87 - intilization 1.88 - world-loop]] 1.89 - (let [add-keypress 1.90 - (fn [state keymap key] 1.91 - (merge keymap 1.92 - {key 1.93 - (fn [_ pressed?] 1.94 - (reset! state pressed?))})) 1.95 - move-up? (atom false) 1.96 - move-down? (atom false) 1.97 - move-left? (atom false) 1.98 - move-right? (atom false) 1.99 - roll-left? (atom false) 1.100 - roll-right? (atom false) 1.101 - 1.102 - directions [(Vector3f. 0 1 0)(Vector3f. 0 -1 0) 1.103 - (Vector3f. 0 0 1)(Vector3f. 0 0 -1) 1.104 - (Vector3f. -1 0 0)(Vector3f. 1 0 0)] 1.105 - atoms [move-left? move-right? move-up? move-down? 1.106 - roll-left? roll-right?] 1.107 - 1.108 - keymap* (reduce merge 1.109 - (map #(add-keypress %1 keymap %2) 1.110 - atoms 1.111 - keyboard)) 1.112 - 1.113 - splice-loop (fn [] 1.114 - (dorun 1.115 - (map 1.116 - (fn [sym direction force] 1.117 - (if @sym 1.118 - (tap object direction force))) 1.119 - atoms directions forces))) 1.120 - 1.121 - world-loop* (fn [world tpf] 1.122 - (world-loop world tpf) 1.123 - (splice-loop))] 1.124 - 1.125 - [root-node 1.126 - keymap* 1.127 - intilization 1.128 - world-loop*])) 1.129 - 1.130 1.131 (defn test-proprioception 1.132 "Testing proprioception: