From fac2f8373cd0e63a34a39cb77c0c7276d1d88b65 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 28 Jan 2011 15:25:21 -0500 Subject: Fixed Problems with controller --- behaviors/ControllerOSC.py | 61 ++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 24 deletions(-) (limited to 'behaviors') 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, []) -- cgit v1.2.3