aboutsummaryrefslogtreecommitdiff
path: root/behaviors
diff options
context:
space:
mode:
authorGravatar Dan <dan@rcoh-ubuntu-small.(none)>2011-01-28 15:25:21 -0500
committerGravatar Dan <dan@rcoh-ubuntu-small.(none)>2011-01-28 15:25:21 -0500
commitfac2f8373cd0e63a34a39cb77c0c7276d1d88b65 (patch)
treeada0410f92176cc8564d1c993263c72e865d6621 /behaviors
parenta028c880c8325419a238667e71a7e919b72a4798 (diff)
Fixed Problems with controller
Diffstat (limited to 'behaviors')
-rw-r--r--behaviors/ControllerOSC.py61
1 files changed, 37 insertions, 24 deletions
diff --git a/behaviors/ControllerOSC.py b/behaviors/ControllerOSC.py
index 6e3e814..0dd1b12 100644
--- a/behaviors/ControllerOSC.py
+++ b/behaviors/ControllerOSC.py
@@ -2,61 +2,74 @@ from operationscore.Behavior import *
from logger import main_log
#import util.ColorOps as color
import colorsys
-from numpy import arrray
+from numpy import array
import pdb
import util.ComponentRegistry as compReg
-def constrain(v,c):
- if v[0] > c[1]:
- v[0] = c[1]
- elif v[0]<0
+speedfactor = 15
+vel_decay = .01
+
+def constrainLocation(v,c):
+ if v[0] > c[0]:
+ v[0] = c[0]
+ elif v[0]<0:
v[0] = 0
- if v[1] > c[0]:
- v[1] = c[0]
- elif v[1]<0
+ if v[1] > c[1]:
+ v[1] = c[1]
+ elif v[1]<0:
v[1] = 0
return v
-class TouchOSC(Behavior):
+class ControllerOSC(Behavior):
def behaviorInit(self):
self.xy = array((0,0))
self.v_xy = array((0,0))
- self.v_decay = .1
+ self.v_decay = vel_decay
- self.start_hsv = (0,1,1)
- self.dest_hsv = (0,1,1)
+ self.start_hsv = [0,1,1]
+ self.dest_hsv = [0,1,1]
+ self.ssize = compReg.getComponent('Screen').getSize()[-2:] #896 x 310
def processResponse(self, sensorInputs, recursiveInputs):
ret = []
if sensorInputs:
data = sensorInputs[-1]#for data in sensorInputs:
if data['Path'] == '/sixaxis/xy':
- try:
+ #try:
x = data['Value'][0]
y = data['Value'][1]
if y < 0:
- self.start_hsv[1] = 1+y #s
+ self.start_hsv[1] = 1.0+y #s
else:
- self.start_hsv[2] = y
- self.h += x
+ self.start_hsv[2] = 1.0-y
+ self.start_hsv[0] = (x+1) * 180.0
+# if self.start_hsv[0] >= 360:
+# self.start_hsv[0] = 0
+# if self.start_hsv[0] <=0:
+# self.start_hsv[0] = 360
#self.h = x * 360.
- except:
- pdb.set_trace()
+ #except(e):
+ # pdb.set_trace()
elif data['Path'] == '/sixaxis/lrud':
val=data['Value']
- ssize = compReg.getComponent('Screen').getSize()[-2:] #896 x 310
- vx = -val[3] if val[3] else val[2]
- vy = -val[0] if val[0] else val[1]
+ vy = val[3] if val[3] else -val[2]
+ vx = -val[0] if val[0] else val[1]
+ #pdb.set_trace()
#self.v_xy = (val[1]*ssize[0], (1.0-val[0])*ssize[1])
- self.v_xy = array((vx, vy))
+ self.v_xy = array((vx, vy)) * speedfactor
else:
main_log.error('Sensor Inputs: ' + str(sensorInputs))
self.xy = self.xy + self.v_xy
- constrain(self.xy,ssize)
+ constrainLocation(self.xy,self.ssize)
self.v_xy -= self.v_decay
- ret.append({'Color':[i*256 for i in colorsys.hsv_to_rgb(*self.start_hsv)],'Location':tuple(self.xy)})
+ if self.v_xy[0] < 0:
+ self.v_xy[0] = 0
+ if self.v_xy[1] < 0:
+ self.v_xy[1] = 0
+ ret.append({'Color':[i*256 for i in
+ colorsys.hsv_to_rgb(*self.start_hsv)],'Location':(int(self.xy[0]), int(self.xy[1]))})
return (ret, [])