Esempio n. 1
0
    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
Esempio n. 2
0
 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)
Esempio n. 3
0
    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
Esempio n. 4
0
 def scale(self,c):
     if c == 1:
         return self
     newDict = dict(self.argDict) 
     newDict['Color'] = color.multiplyColor(newDict['Color'], c)
     return self.__class__(newDict)
Esempio n. 5
0
 def scale(self, c):
     if c == 1:
         return self
     newDict = dict(self.argDict)
     newDict['Color'] = color.multiplyColor(newDict['Color'], c)
     return self.__class__(newDict)