01-06-2016, 11:04 AM
|
Member
|
|
Join Date: Sep 2015
Posts: 81
|
|
Quote:
Originally Posted by Jeff
You could set a flag when the object is grabbed. When the input signal is sent, check to see if the object is grabbed before applying the action:
Code:
import viz
import vizconnect
import vizshape
import vizact
vizconnect.go('vizconnect_config.py')
dojo = viz.addChild('dojo.osgb')
torus = vizshape.addTorus(radius=0.1,tubeRadius=0.015,axis=vizshape.AXIS_X, pos=[0,1.7,1])
torus.texture(viz.addTexture('images/tile_wood.jpg'))
torus.addAction(vizact.spin(0,1,0,15))
torus.grabbed = False
grabber = vizconnect.getRawTool('grabber')
grabber.setItems([torus])
def onGrab(e):
if e.grabbed == torus:
torus.grabbed = True
def onRelease(e):
if e.released == torus:
torus.grabbed = False
from tools import grabber
viz.callback(grabber.GRAB_EVENT, onGrab)
viz.callback(grabber.RELEASE_EVENT, onRelease)
scaleAction = vizact.sequence([vizact.sizeTo(size=[1.3,1.3,1.3],time=1),vizact.sizeTo(size=[1,1,1],time=1)], viz.FOREVER)
def applyScale():
if torus.grabbed:
torus.runAction(scaleAction,pool=1)
def removeScale():
if torus.grabbed:
torus.clearActions(pool=1)
vizact.onkeydown('1',applyScale)
vizact.onkeydown('2',removeScale)
|
is that possible to do these in VizChild object like osgb file
|