aboutsummaryrefslogtreecommitdiff
path: root/operationscore/Behavior.py
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2010-12-22 14:27:33 -0500
committerGravatar rcoh <rcoh@mit.edu>2010-12-22 14:27:33 -0500
commitc581408f028d5b8ceadc53c68d7c1252fbe09e6d (patch)
tree8724862d05bde3bb3427cdff378cdb08da8babd2 /operationscore/Behavior.py
parenta1d9b85320c9b07d62470d78ef0c5f9015baf813 (diff)
About halfway done with support for pixel regions. Modified the component registry a bit. Added
support for multiple pixel mappers (and along with that, default components). RCOH
Diffstat (limited to 'operationscore/Behavior.py')
-rw-r--r--operationscore/Behavior.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/operationscore/Behavior.py b/operationscore/Behavior.py
index 3bdf1ec..d48c1d5 100644
--- a/operationscore/Behavior.py
+++ b/operationscore/Behavior.py
@@ -33,14 +33,26 @@ class Behavior(SmootCoreObject):
recursiveInputs)
if type(output) != type([]):
output = [output]
- return (output, recursions)
- except:
+ return self.addMapperToResponse((output, recursions)) #TODO: use a decorator for this?
+ except: #deal with behaviors that don't return a tuple.
+ responses = self.processResponse(sensorInputs, recursiveInputs)
return (self.processResponse(sensorInputs, recursiveInputs),[])
def addInputs(self, sensorInputs):
if type(sensorInputs) == type([]):
[self.addInput(sensorInput) for sensorInput in sensorInputs]
else:
self.addInput(sensorInputs)
+ #private
+ def addMapperToResponse(self, responses):
+ if self['Mapper'] != None:
+ if type(responses) == type(tuple):
+ (out, recurs) = responses
+ return (self.addMapperToResponse(out), self.addMapperToResponse(recurs))
+ if type(responses) == type([]):
+ for r in responses:
+ r['Mapper'] = self['Mapper']
+ return responses
+ return responses
def timeStep(self): #TODO: type checking. clean this up
responses = self.processResponse(self.sensorResponseQueue, \
self.recursiveResponseQueue)
@@ -54,8 +66,7 @@ class Behavior(SmootCoreObject):
if type(outputs) != type([]):
outputs = [outputs]
try:
- return outputs
+ return self.addMapperToResponse(outputs) #TODO: WTF is up with this?
except:
pass
- #pdb.set_trace()
- return outputs
+ return self.addMapperToResponse(outputs)