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
def state(self, currentTime=None): """Combines all PixelEvents currently active and computes the current color of the pixel.""" if currentTime == None: currentTime = timeops.time() if currentTime-self.lastRenderTime < 5: return self.lastRender if self.events == []: self.lastRenderTime = currentTime return (0,0,0) deadEvents = [] resultingColor = (0,0,0) colors = [] for eventObj in self.events: #TODO: right color weighting code if len(self.events) > 50: main_log.error('High pixel event count! Investigate!') eventTime, zindex, scale, pixelEvent = eventObj eventResult = pixelEvent.state(currentTime-eventTime) if eventResult != None: scaledEvent = color.multiplyColor(eventResult,scale) if (scaledEvent[0] + scaledEvent[1] + scaledEvent[2]) < 5: pass #deadEvents.append(eventObj) else: colors.append(scaledEvent) else: deadEvents.append(eventObj) resultingColor = color.combineColors(colors) [self.events.remove(event) for event in deadEvents] resultingColor = [int(round(c)) for c in resultingColor] self.lastRender = tuple(resultingColor) self.lastRenderTime = currentTime return tuple(resultingColor)
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
def scale(self,c): if c == 1: return self newDict = dict(self.argDict) newDict['Color'] = color.multiplyColor(newDict['Color'], c) return self.__class__(newDict)
def scale(self, c): if c == 1: return self newDict = dict(self.argDict) newDict['Color'] = color.multiplyColor(newDict['Color'], c) return self.__class__(newDict)