Example #1
0
def triggerLeftCheck(controller):
	while True:
		yield viztask.waitSensorDown(controller, steamvr.BUTTON_TRIGGER)
		globals_oa.leftTriggerDown = True
		globals_oa.lhModelClosed.visible(True)
		globals_oa.lhModelOpen.visible(False)
		yield viztask.waitSensorUp(controller, steamvr.BUTTON_TRIGGER)
		globals_oa.leftTriggerDown = False
		globals_oa.lhModelClosed.visible(False)
		globals_oa.lhModelOpen.visible(True)
def JumpTask(controller):
	global test_num, test_text, consent
	"""Task that users trigger button press/release to jump to painting locations"""
	while True:

		# Wait for trigger to press
		yield viztask.waitSensorDown(controller, steamvr.BUTTON_TRIGGER)

		# Start highlighting task
		highlightTask = viztask.schedule(HighlightTask(controller))

		# Wait for trigger to release
		yield viztask.waitSensorUp(controller, steamvr.BUTTON_TRIGGER)

		# Stop highlighting task
		highlightTask.remove()

		# Intersect pointer with scene
		info = IntersectController(controller)
		print info.name
		if info.name == "side":
			consent = True;
			canvas.visible(False)
			background.visible(viz.OFF)
			background2.visible(viz.OFF)
		if info.name == "basketball":
			if(test_num == 2):
				consent = True;
				canvas.visible(False)
				background.visible(viz.OFF)
				background2.visible(viz.OFF)
			else:
				
				test_num = test_num + 1
				panel.setText(test_text[test_num])
				if(test_num == 2):
					background2.visible(viz.ON)
Example #3
0
def TrackTask():
    prevPos = None
    tracking = False
    allData = []
    tCount = -1
    # run until number of trials finished, or forever
    while True:
        # wait for trigger press
        while not (steamvr.getControllerList()[0].isButtonDown(2)
                   or viz.key.isDown('c', immediate=True)):
            pos = setup.trackerDataFun()
            if prevPos is not None and pos['vive'] == prevPos['vive']:
                # position didn't change at all, not tracking
                if tracking:
                    print 'track lost'
                    setup.sounds.trialStart.play()
                tracking = False
            else:
                if not tracking:
                    print 'track regained'
                tracking = True
            prevPos = pos

            # store data upon keypress, or upon requested number of trials reached
            if (viz.key.isDown(viz.KEY_CONTROL_L, immediate=True)
                    and viz.key.isDown('s', immediate=True)
                    and len(allData) > 0) or (nTrial is not None
                                              and tCount == nTrial):
                # make filename
                time = datetime.datetime.now()
                fname = ''.join(
                    (str(time.year) + str(time.month).zfill(2) +
                     str(time.day).zfill(2) + str(time.hour).zfill(2) +
                     str(time.minute).zfill(2) + str(time.second).zfill(2)))

                saveData = {}
                saveData['data'] = allData
                scio.savemat('data/' + fname,
                             saveData,
                             long_field_names=True,
                             do_compression=True,
                             oned_as='column')

                # done, either quit or notify and clear data store
                if nTrial is not None:
                    viz.quit()
                else:
                    setup.sounds.trialStart.play()
                    allData = []

            # limit to update rate
            d = yield viztask.waitDraw()

        # report position
        print 'capturing track data'
        tCount += 1
        count = 0
        data = []
        while count < trackRate * nSec:
            ti = setup.trackerDataFun()
            ti['timeStamp'] = d.time
            data.append(ti)
            count += 1

            d = yield viztask.waitDraw()

        # store for later
        allData.append(data)
        setup.sounds.trialCompleted.play()

        # Wait for trigger to release if still down
        if steamvr.getControllerList()[0].isButtonDown(2):
            yield viztask.waitSensorUp(steamvr.getControllerList()[0],
                                       steamvr.BUTTON_TRIGGER)