aboutsummaryrefslogtreecommitdiff
path: root/inputs/ParametricLocationInput.py
diff options
context:
space:
mode:
Diffstat (limited to 'inputs/ParametricLocationInput.py')
-rw-r--r--inputs/ParametricLocationInput.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/inputs/ParametricLocationInput.py b/inputs/ParametricLocationInput.py
new file mode 100644
index 0000000..f413c64
--- /dev/null
+++ b/inputs/ParametricLocationInput.py
@@ -0,0 +1,39 @@
+import util.TimeOps as clock
+import util.ComponentRegistry as compReg
+import util.Strings as Strings
+from operationscore.Input import *
+class ParametricLocationInput(Input):
+ '''Continuously returns one of nine positions on the screen as specified by the xloc
+ and yloc arguments, which can take values 'min', 'max', and 'center'. '''
+
+ def clockTick(self):
+ return clock.time() - clock.t
+
+ def callTick(self):
+ self.t += 1
+ return self.t - 1
+
+ def inputInit(self):
+ self.t = 0
+
+ compReg.getLock().acquire()
+ xmin, ymin, xmax, ymax = compReg.getComponent('Screen').getSize()
+ compReg.getLock().release()
+
+ xlen = xmax-xmin
+ ylen = ymax-ymin
+
+ if self['useClock']:
+ self.t=self.clock()
+ self.getTime = self.clockTick
+ else:
+ self.t=0
+ self.getTime = self.callTick
+
+ self.x_eqn = eval('lambda t:' + str(xmin) + '+' + str(xlen) + '*(' + str(self['xEquation']) + ')')
+ self.y_eqn = eval('lambda t:' + str(xmin) + '+' + str(xlen) + '*(' + str(self['yEquation']) + ')')
+
+ def sensingLoop(self):
+ self.respond({Strings.LOCATION: (self.x_eqn(self.t), self.y_eqn(self.t))})
+ self.t += 1
+