diff options
author | Merritt Boyd <mboyd@mit.edu> | 2011-02-20 18:28:11 -0500 |
---|---|---|
committer | Merritt Boyd <mboyd@mit.edu> | 2011-02-20 18:28:11 -0500 |
commit | cd6217a54ac34cd13cc43dc17fe35a834f98b278 (patch) | |
tree | 2a23fed9468992bf4fb877006fcf4a712ab2e8a4 | |
parent | 868c8206ac18e07f4e9d2eae32ec804344e31f2b (diff) | |
parent | a841c8efe5667bf99541a71f37311037cfd1210d (diff) |
Merge branch 'conner5' of https://github.com/dxiao/SmootLight into conner5
-rw-r--r-- | behaviors/LocationMask.py | 19 | ||||
-rw-r--r-- | config/C5Sign-Leah.xml | 301 | ||||
-rw-r--r-- | config/C5Sign.xml | 8 | ||||
-rw-r--r-- | pixelmappers/C5SignMapper.py | 11 |
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}<2 or {x}>48</LocationRestriction> + </Args> + </Behavior> + <Behavior> + <Class>behaviors.RestrictLocation</Class> + <Args> + <Id>ybounce</Id> + <Action>{val}*-1</Action> + <ParamName>YStep</ParamName> + <LocationRestriction>{y}<2 or {y}>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] |