blob: 1d79d41db6e29c5d0c09d82229ab4ae497ec0300 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
from operationscore.Behavior import *
import util.ColorOps as colorops
import pdb
class Flasher(Behavior):
"""Implements a pulsing/flashing behavior.
Jim Salem: jsalem@gmail.com
Args:
Factor - The speed of flashing. Must be b/w 0 and 1. Default is .95
"""
def processResponse(self, sensorInputs, recursiveInputs):
ret = []
for response in sensorInputs:
# Get the multiplier
if self['Factor'] != None:
factor = self['Factor']
else:
factor = 0.95
# Initialize the first time
if not 'FireflyStartColor' in response:
response['FireflyValue'] = 1.0
response['FireflyDir'] = 1
response['FireflyStartColor'] = response['Color'];
else:
# Update the current value
if response['FireflyDir'] == 1:
response['FireflyValue'] = response['FireflyValue'] * factor
if response['FireflyValue'] <= 0.01:
response['FireflyValue'] = 0.01
response['FireflyDir'] = 0
else:
response['FireflyValue'] = response['FireflyValue'] / factor
if response['FireflyValue'] >= 1.0:
response['FireflyValue'] = 1.0
response['FireflyDir'] = 1
# Compute the color
response['Color'] = colorops.multiplyColor(response['FireflyStartColor'], response['FireflyValue'])
ret.append(response)
return (ret, []) #no direct ouput
|