View Single Post
  #5  
Old 12-19-2016, 01:14 AM
Vaquero Vaquero is offline
Member
 
Join Date: Nov 2015
Posts: 62
Thanks Jeff, that brought me closer to a solution, but I can't get it to work.
In each trial there's another sensor that needs to trigger the event, but whatever I do, I can't seem to get the functions/events recognize the newly chosen sensor.

First I thought, well, I would only need to check for the number of targets in the sensor, if a target enters the sensor. Here's some pseudo-code:

Code:
TRIGGER_ACTIVATED_EVENT = viz.getEventID('TRIGGER_ACTIVATED_EVENT')
def checkTrigger(manager,requiredSensor):
    activeTargets = manager.getActiveTargets(sensor=requiredSensor)
    if len(activeTargets) == len(targets):
        time = viz.tick()
        viz.sendEvent(TRIGGER_ACTIVATED_EVENT,requiredSensor.name,time)

def myTask():
    targets = [target1,target2,target3]
    sensors = [sensor1,sensor2,sensor3]
    triggerSensor = someSensor

    def EnterSensor(e):
        checkTrigger(e.manager,triggerSensor)

    for sensor in sensors:
        manager.addSensor(sensor)
        manager.onEnter(sensor, EnterSensor)

    results = yield mySubTask()

def mySubTask():
    waitTargets = viztask.waitEvent(TRIGGER_ACTIVATED_EVENT)
    waitTime = viztask.waitTime(5)

    for trial in xrange(100):
        triggerSensor = random.choice(sensors)
	d = yield viztask.waitAny( [ waitTargets, waitTime ] )
	
	if d.condition is waitTargets:
		print 'targets entered'
	else:
		print '5 seconds passed'

viztask.schedule(myTask)
But the EnterSensor/checkTrigger function is always checking for 'someSensor' and not updating to the new triggerSensor in each trial (IDs were the same for triggerSensor object in both functions, I checked)

Now I tried using
checkingTrigger = vizact.onupdate(0,checkTrigger,manager,triggerSens or)
and using checkingTrigger.setEnabled(viz.<OFF/ON>) when I need it, but it's the same problem in that it only recognizes the very first triggerSensor.

Could you please give a more complete, working example?
Reply With Quote