Thread: VizTouch Help!
View Single Post
  #3  
Old 08-15-2014, 02:02 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
The following example rotates different cubes using viztouch move events. In order to activate move on a cube the first touch event must intersect with it's geometry:

Code:
import viz
import vizshape
import viztouch

viz.go()

dojo = viz.addChild('dojo.osgb')
redCube = vizshape.addCube(pos=[-1,1.8,6],color=viz.RED)
blueCube = vizshape.addCube(pos=[1,1.8,6],color=viz.BLUE)

viztouch.setMode(viztouch.MODE_TOUCH)

class ShapeSpinner(object):

	def __init__(self, model):
		
		self.model = model
		self.last_pos = []
		
		self.touchDown_event = viztouch.onTouchDown(self.beginTouch)	
		self.touchMove_event = viztouch.onTouchMove(self.moveTouch)
		self.touchUp_event = viztouch.onTouchUp(self.endTouch)
		self.touchMove_event.setEnabled(viz.OFF)

	def beginTouch(self, e):
		
		pos = e.pos.normalized
		
		#If begin touch intersects model enable movement
		if  viz.pick(pos=pos) == self.model:
			self.touchMove_event.setEnabled(viz.ON)
			self.last_pos = pos
		
	def moveTouch(self,e):

		pos = e.pos.normalized
		
		if pos[0] > self.last_pos[0]:
			self.model.setEuler([-0.4,0.0,0],viz.REL_LOCAL)
		elif pos[0] < self.last_pos[0]:
			self.model.setEuler([0.4,0.0,0],viz.REL_LOCAL)
			
		self.last_pos = pos
		
	def endTouch(self,e):
		
		self.touchMove_event.setEnabled(viz.OFF)
		
		
ShapeSpinner(redCube)
ShapeSpinner(blueCube)
	
viz.mouse(viz.OFF)
Reply With Quote