aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Merritt Boyd <mboyd@mit.edu>2011-02-20 18:28:11 -0500
committerGravatar Merritt Boyd <mboyd@mit.edu>2011-02-20 18:28:11 -0500
commitcd6217a54ac34cd13cc43dc17fe35a834f98b278 (patch)
tree2a23fed9468992bf4fb877006fcf4a712ab2e8a4
parent868c8206ac18e07f4e9d2eae32ec804344e31f2b (diff)
parenta841c8efe5667bf99541a71f37311037cfd1210d (diff)
Merge branch 'conner5' of https://github.com/dxiao/SmootLight into conner5
-rw-r--r--behaviors/LocationMask.py19
-rw-r--r--config/C5Sign-Leah.xml301
-rw-r--r--config/C5Sign.xml8
-rw-r--r--pixelmappers/C5SignMapper.py11
4 files changed, 337 insertions, 2 deletions
diff --git a/behaviors/LocationMask.py b/behaviors/LocationMask.py
new file mode 100644
index 0000000..51eafeb
--- /dev/null
+++ b/behaviors/LocationMask.py
@@ -0,0 +1,19 @@
+from operationscore.Behavior import *
+
+class LocationMask (Behavior):
+ """Modifies Pixels such that only ones in the pixels specified by the "location"
+ argument will show"""
+
+ def processResponse(self, inputs, state):
+
+ ret = []
+ inputs = list(inputs)
+
+ for inputset in inputs:
+ inputset = dict(inputset)
+
+ inputset['Location'] += '@' + self['Location']
+
+ ret.append(inputset)
+
+ return (ret, [])
diff --git a/config/C5Sign-Leah.xml b/config/C5Sign-Leah.xml
new file mode 100644
index 0000000..dc7305e
--- /dev/null
+++ b/config/C5Sign-Leah.xml
@@ -0,0 +1,301 @@
+<!---All configuration items contain a "Class" tag specifying the python class they represent, and an "Args" tag specifying the args to be passed in.-->
+<LightInstallation>
+ <InstallationConfiguration>
+ <Defaults>
+ <PixelMapper>gaussmap</PixelMapper>
+ </Defaults>
+ </InstallationConfiguration>
+ <PixelConfiguration>
+ <InheritsFrom>layouts/C5SignLayout.xml</InheritsFrom>
+ </PixelConfiguration>
+ <PixelMapperConfiguration>
+ <PixelMapper>
+ <Class>pixelmappers.C5SignMapper</Class>
+ <Args>
+ <Id>simplemap</Id>
+ <CutoffDist>20</CutoffDist>
+ </Args>
+ </PixelMapper>
+ <PixelMapper>
+ <Class>pixelmappers.GaussianMapper</Class>
+ <Args>
+ <Id>gaussmap</Id>
+ <CutoffDist>4</CutoffDist>
+ <MinWeight>0.1</MinWeight>
+ <Width>1</Width>
+ <Height>1</Height>
+ </Args>
+ </PixelMapper>
+ <PixelMapper>
+ <Class>pixelmappers.C5SignMapper</Class>
+ <Args>
+ <Id>c5signmapper</Id>
+ <CutoffDist>20</CutoffDist>
+ </Args>
+ </PixelMapper>
+ </PixelMapperConfiguration>
+ <RendererConfiguration>
+ <APPEND><Renderer>
+ <InheritsFrom>renderers/C5Renderer.xml</InheritsFrom>
+ </Renderer></APPEND>
+ </RendererConfiguration>
+ <InputConfiguration>
+ <APPEND><InputElement>
+ <Class>inputs.ParametricLocationInput</Class>
+ <Args>
+ <Id>random_top</Id>
+ <xloc>center</xloc>
+ <yloc>top</yloc>
+ <xEquation>random.random()</xEquation>
+ <yEquation>0</yEquation>
+ <RefreshInterval>500</RefreshInterval>
+ </Args>
+ </InputElement>
+ <InputElement>
+ <Class>inputs.OSCInput</Class>
+ <Args>
+ <Id>osc</Id>
+ <Port>1234</Port>
+ <RefreshInterval>10</RefreshInterval>
+ </Args>
+ </InputElement>
+ <InputElement>
+ <Class>inputs.UDPInput</Class>
+ <Args>
+ <Id>udp</Id>
+ <Port>3344</Port>
+ <RefreshInterval>50</RefreshInterval>
+ </Args>
+ </InputElement>
+ <InputElement>
+ <Class>inputs.ContinuousCenterInput</Class>
+ <Args>
+ <Id>center</Id>
+ <RefreshInterval>700</RefreshInterval>
+ </Args>
+ </InputElement></APPEND>
+ </InputConfiguration>
+ <BehaviorConfiguration>
+ <Behavior>
+ <Args>
+ <Id>touchosc</Id>
+ </Args>
+ <Class>behaviors.TouchOSC</Class>
+ </Behavior>
+ <Behavior Id="slowdecay">
+ <InheritsFrom>behaviors/PixelDecay.xml</InheritsFrom>
+ <Args>
+ <Coefficient>.001</Coefficient>
+ </Args>
+ </Behavior>
+
+ <Behavior>
+ <Class>behaviors.XYMove</Class>
+ <Args>
+ <Id>xymove</Id>
+ <XStep>0</XStep>
+ <YStep>2</YStep>
+ </Args>
+ </Behavior>
+
+ <Behavior>
+ <Class>behaviors.ModifyParam</Class>
+ <Args>
+ <Id>modifyY</Id>
+ <ParamType>Sensor</ParamType>
+ <ParamName>YStep</ParamName>
+ <ParamOp>{val}+.5</ParamOp>
+ </Args>
+ </Behavior>
+
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>point_move</Id>
+ <ChainedBehaviors>
+ <Id>xymove</Id>
+ <Id>modifyY</Id>
+ <Id>recursivedecay</Id>
+ </ChainedBehaviors>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>falling_points</Id>
+ <Inputs>
+ <Id>random_top</Id>
+ </Inputs>
+ <ChainedBehaviors>
+ <Id>colorchange</Id>
+ <Id>mover</Id>
+ <Id>slowdecay</Id>
+ </ChainedBehaviors>
+ <RecursiveHooks>{'mover':'point_move'}</RecursiveHooks>
+ <RenderToScreen>True</RenderToScreen>
+ </Args>
+ </Behavior>
+
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>OSCTouchChase</Id>
+ <Inputs>
+ <Id>osc</Id>
+ </Inputs>
+ <ChainedBehaviors>
+ <Id>touchosc</Id>
+ <Id>decay</Id>
+ </ChainedBehaviors>
+ <Mapper>gaussmap</Mapper>
+ <RenderToScreen>False</RenderToScreen>
+ </Args>
+ </Behavior>
+ <Behavior Id="decay">
+ <InheritsFrom>behaviors/PixelDecay.xml</InheritsFrom>
+ </Behavior>
+ <Behavior Id="singleframe">
+ <InheritsFrom>behaviors/SingleFrame.xml</InheritsFrom>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.RestrictLocation</Class>
+ <Args>
+ <Id>xbounce</Id>
+ <Action>{val}*-1</Action>
+ <ParamName>XStep</ParamName>
+ <LocationRestriction>{x}&lt;2 or {x}&gt;48</LocationRestriction>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.RestrictLocation</Class>
+ <Args>
+ <Id>ybounce</Id>
+ <Action>{val}*-1</Action>
+ <ParamName>YStep</ParamName>
+ <LocationRestriction>{y}&lt;2 or {y}&gt;24</LocationRestriction>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>movebounce</Id>
+ <ChainedBehaviors>
+ <Id>xymove</Id>
+ <Id>ybounce</Id>
+ <Id>xbounce</Id>
+ <Id>longrecursivedecay</Id>
+ </ChainedBehaviors>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.TimeSwitch</Class>
+ <Args>
+ <Id>main</Id>
+ <Inputs>
+ <Id>centerleft</Id>
+ <Id>center</Id>
+ </Inputs>
+ <TimeMap>{'scanningbars':10}</TimeMap>
+ <InputMap>{'scanningbars':'centerleft'}
+ </InputMap>
+ <RenderToScreen>False</RenderToScreen>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.DebugBehavior</Class>
+ <Args>
+ <Id>debug</Id>
+ <z-index>0</z-index>
+ <Inputs>
+ <Id>pygamekey</Id>
+ <Id>udp</Id>
+ </Inputs>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.AllPixels</Class>
+ <Args>
+ <Id>square</Id>
+ <Width>20</Width>
+ </Args>
+ </Behavior>
+ <Behavior Id="recursivedecay" InitialResponseCount="50">
+ <InheritsFrom>behaviors/LoopAndDie.xml</InheritsFrom>
+ </Behavior>
+ <Behavior Id="longrecursivedecay" InitialResponseCount="80">
+ <InheritsFrom>behaviors/LoopAndDie.xml</InheritsFrom>
+ </Behavior>
+ <Behavior Id="colorchange">
+ <InheritsFrom>behaviors/RandomColor.xml</InheritsFrom>
+ <Args>
+ <ColorList>
+ <Val>(0,0,255)</Val>
+ </ColorList>
+ </Args>
+ </Behavior>
+
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>runcolordecay</Id>
+ <ChainedBehaviors>
+ <Id>colorchanger</Id>
+ <Id>mover</Id>
+ <!--<Id>square</Id>-->
+ <Id>decay</Id>
+ </ChainedBehaviors>
+ <RecursiveHooks>{'mover':'movebounce'}</RecursiveHooks>
+ <RenderToScreen>False</RenderToScreen>
+ <Mapper>gaussmap</Mapper>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.ResponseMover</Class>
+ <Args>
+ <Id>mover</Id>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.ModifyParam</Class>
+ <Args>
+ <Id>incrinner</Id>
+ <ParamOp>{val}+.6</ParamOp>
+ <ParamName>innercircleRadius</ParamName>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.ModifyParam</Class>
+ <Args>
+ <Id>incrouter</Id>
+ <ParamOp>{val}+.6</ParamOp>
+ <ParamName>outercircleRadius</ParamName>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>circle_expand</Id>
+ <ChainedBehaviors>
+ <Id>innercircle</Id>
+ <Id>outercircle</Id>
+ <Id>incrinner</Id>
+ <Id>incrouter</Id>
+ <Id>recursivedecay</Id>
+ </ChainedBehaviors>
+ </Args>
+ </Behavior>
+ <Behavior>
+ <Class>behaviors.BehaviorChain</Class>
+ <Args>
+ <Id>expandingcircles</Id>
+ <ChainedBehaviors>
+ <Id>colorchange</Id>
+ <Id>mover</Id>
+ <Id>decay</Id>
+ <!--Id>singleframe</Id-->
+ </ChainedBehaviors>
+ <RecursiveHooks>{'mover':'circle_expand'}</RecursiveHooks>
+ </Args>
+ </Behavior>
+ </BehaviorConfiguration>
+</LightInstallation>
diff --git a/config/C5Sign.xml b/config/C5Sign.xml
index 8039c07..6d7de20 100644
--- a/config/C5Sign.xml
+++ b/config/C5Sign.xml
@@ -124,6 +124,7 @@
<Id>colorchange</Id>
<Id>mover</Id>
<Id>slowdecay</Id>
+ <Id>wordsonly</Id>
</ChainedBehaviors>
<RecursiveHooks>{'mover':'bar_move'}</RecursiveHooks>
<RenderToScreen>False</RenderToScreen>
@@ -180,6 +181,13 @@
</Args>
</Behavior>
<Behavior>
+ <Class>behaviors.LocationMask</Class>
+ <Args>
+ <Id>wordsonly</Id>
+ <Location>wt.all cl.all c5.all</Location>
+ </Args>
+ </Behavior>
+ <Behavior>
<Class>behaviors.BehaviorChain</Class>
<Args>
<Id>movebounce</Id>
diff --git a/pixelmappers/C5SignMapper.py b/pixelmappers/C5SignMapper.py
index 24631c4..6d5163d 100644
--- a/pixelmappers/C5SignMapper.py
+++ b/pixelmappers/C5SignMapper.py
@@ -98,8 +98,15 @@ class C5SignMapper(PixelMapper):
eventLocSplit = eventLocation.split('@')
if len(eventLocSplit) == 2:
[eventLocation, signPart] = eventLocSplit
- signParts = signPart.split('.')
- pixelLocs = signPosition[signParts[0]][signParts[1]]
+ signParts = signPart.split(' ')
+ #print "*******************"
+ #print signParts
+ pixelLocs = []
+ for part in signParts:
+ if len(part) > 0:
+ parts = part.split('.')
+ pixelLocs.extend(self.signPosition[parts[0]][parts[1]])
+ #print pixelLocs
screenPixels = [p for p in screen if (p.location in pixelLocs)]
else:
screenPixels = [p for p in screen]