diff options
author | Russell Cohen <rcoh@mit.edu> | 2010-11-24 01:09:12 -0500 |
---|---|---|
committer | Russell Cohen <rcoh@mit.edu> | 2010-11-24 01:09:12 -0500 |
commit | b042647b68abdc82490ca6e059993b8eba28904c (patch) | |
tree | a9ee95a38e98b377c251b7b2e9af9cbd8056cf7c /pixelcore/Pixel.py | |
parent | 407ac922fc4178021cf3a16dfb1bd875b6083ac4 (diff) |
Refactoring complete! Made modules/packages as appropriate. Finally.
Diffstat (limited to 'pixelcore/Pixel.py')
-rw-r--r-- | pixelcore/Pixel.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/pixelcore/Pixel.py b/pixelcore/Pixel.py new file mode 100644 index 0000000..6784c63 --- /dev/null +++ b/pixelcore/Pixel.py @@ -0,0 +1,44 @@ +import Util +import pdb +from pixelevents.StepEvent import * +#Pixel keeps a queue of events (PixelEvent objects) (actually a dictionary +#keyed by event time). Every time is state is +#requested, it processes all the members of its cue. If a member returns none, +#it is removed from the queue. Otherwise, its value added to the Pixels color +#weighted by z-index. +class Pixel: + radius = 2 + timeOff = -1 + def __init__(self, location, color): + self.location = location + self.color = color + self.events = {} + def turnOn(self): + self.turnOnFor(-1) + def turnOnFor(self, time): + event = StepEvent.generate(time, (255,0,255)) #TODO: Move color to + self.processInput(event, 0) + #arg + def processInput(self,pixelEvent,zindex): #consider migrating arg to dict + self.events[Util.time()] = (zindex, pixelEvent) + def clearAllEvents(self): + self.events = {} + def state(self): + deadEvents = [] + currentTime = Util.time() + resultingColor = (0,0,0) + for eventTime in self.events: #TODO: right color weighting code + (zindex,event) = self.events[eventTime] + eventResult = event.state(currentTime-eventTime) + if eventResult != None: + resultingColor = Util.combineColors(eventResult, resultingColor) + print resultingColor + else: + deadEvents.append(eventTime) + [self.events.pop(event) for event in deadEvents] + if sum(resultingColor) > 0: + print resultingColor + return tuple(resultingColor) + def __str__(self): + return 'Loc: ' + str(self.location) + |