View Single Post
  #4  
Old 04-11-2017, 12:57 PM
Lenticularis Lenticularis is offline
Member
 
Join Date: Jul 2016
Posts: 12
Hi again

Thanks for your answer.
I'm referring to the canvas example script, yes.

I tried to change the keypresses to button checks but I can't get it working. Is there a mistake somewhere in my script?

I'd be really glad for any kind of advice.



Code:
import viz
import vizact
import vizcam
import vizdlg
import vizinfo
import viztask

###
canvas = viz.addGUICanvas()
canvas.setRenderWorldOverlay([800,600],50,3)
canvas.setPosition([0,0,0])

viz.mouse.setTrap(True)
viz.mouse.setVisible(False)
canvas.setMouseStyle(viz.CANVAS_MOUSE_VIRTUAL)
# Apply settings
viz.MainWindow.setDefaultGUICanvas(canvas)
###

import oculus
hmd = oculus.Rift()
viz.link(hmd.getSensor(), viz.MainView)

viz.go()

###########################
remoteEnter = viz.addButton(oculus.BUTTON_REMOTE_ENTER)
remoteUp = viz.addButton(oculus.BUTTON_REMOTE_UP)
remoteDown = viz.addButton(oculus.BUTTON_REMOTE_DOWN)
remoteLeft = viz.addButton(oculus.BUTTON_REMOTE_LEFT)
remoteRight = viz.addButton(oculus.BUTTON_REMOTE_RIGHT)
###########################

# Load environment models
worlds = [ viz.addChild('maze.osgb'), viz.addChild('gallery.osgb'), viz.addChild('dojo.osgb') ]
for i, model in enumerate(worlds):
	model.visible(i == 0)

controlPanel = vizinfo.InfoPanel(text='Navigate with WASD', title='Canvas Example')

controlPanel.addSeparator()
manual_cursor = controlPanel.addLabelItem('Manual Cursor',viz.addCheckbox())

######################
def ManualCursorPositionTask():
	"""Use arrow keys to manually move canvas cursor"""

	while True:

		pos = canvas.getCursorPosition(viz.CANVAS_CURSOR_PIXELS)
		inc = 250.0 * viz.getFrameElapsed()

#		if viz.key.isDown(viz.KEY_UP):
#			pos[1] += inc
#		if viz.key.isDown(viz.KEY_LEFT):
#			pos[0] -= inc
#		if viz.key.isDown(viz.KEY_DOWN):
#			pos[1] -= inc
#		if viz.key.isDown(viz.KEY_RIGHT):
#			pos[0] += inc
#
#		canvas.setCursorPosition(pos, viz.CANVAS_CURSOR_PIXELS)

		if remoteUp.get() == viz.DOWN:
			pos[1] += inc
		if remoteLeft.get() == viz.DOWN:
			pos[0] -= inc
		if remoteDown.get() == viz.DOWN:
			pos[1] -= inc
		if remoteRight.get() == viz.DOWN:
			pos[0] += inc

		canvas.setCursorPosition(pos, viz.CANVAS_CURSOR_PIXELS)

		yield viztask.waitFrame(1)

######################
def ManualCursorButtonTask():
	"""Use spacebar to manually simulate mouse press/release on canvas"""

	while True:

#		yield viztask.waitKeyDown(' ', priority=viz.PRIORITY_GUI_HANDLER-1)
#
#		canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN)
#
#		yield viztask.waitKeyUp(' ', priority=viz.PRIORITY_GUI_HANDLER-1)
#
#		canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP)

		yield viztask.waitButtonDown(remoteEnter, priority=viz.PRIORITY_GUI_HANDLER-1)

		canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN)

		yield viztask.waitButtonUp(remoteEnter, priority=viz.PRIORITY_GUI_HANDLER-1)

		canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP)

def ToggleManualCursorTask():
	"""Handle toggling of manual cursor mode"""

	notice_panel = vizinfo.InfoPanel('Arrow keys control cursor.\nSpacebar simulates button press.', title='Manual Cursor Enabled', align=viz.ALIGN_RIGHT_TOP, key=None, icon=False)
	notice_panel.visible(False)

	while True:

		yield viztask.waitButtonDown(manual_cursor)

		# Enable manual cursor control
		UpdateMouseStyle()
		pos_task = viztask.schedule(ManualCursorPositionTask())
		button_task = viztask.schedule(ManualCursorButtonTask())
		notice_panel.visible(True)

		yield viztask.waitButtonUp(manual_cursor)

		# Disable manual cursor control
		UpdateMouseStyle()
		pos_task.remove()
		button_task.remove()
		notice_panel.visible(False)

viztask.schedule(ToggleManualCursorTask())
Reply With Quote