View Single Post
  #1  
Old 04-27-2016, 11:15 AM
jelly jelly is offline
Member
 
Join Date: Feb 2016
Posts: 38
problem with yield statement and animation path

Hello!

I have an animation that goes through a maze in a loop (4 times).

I also have a yield statement that waits for an arrow key (see code below in red) but whenever I have it inside the function, it offsets everything, the animation seems to play twice before waiting for the arrow key and then it offsets all coordinates.

Why does that happen?



Code:
import viz															
import viztask													

viz.clearcolor(viz.BLACK)

viz.go()

#Set the start position:
startPos = [-6.4,1.4,-8]

### Add all the resources. ############### 

maze1 = viz.add('Objects/Maze_1.dae')
maze1.visible(viz.OFF)

view = viz.MainView 

view.eyeheight(1.4)
view.setPosition(startPos)

view.collision(viz.ON)
viz.collisionbuffer(.8)

##Animation path
pathMaze1 = viz.addAnimationPath()

#Add control points to the path, along with their time stamp.
pathMaze1.addControlPoint(2, pos=startPos,euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(4, pos=startPos,euler=(90,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(6, pos=(0,1.4,-8),euler=(0,0,0),scale=(2,2,2))
pathMaze1.addControlPoint(8, pos=(0,1.4,5),euler=(0,0,0),scale=(2,2,2))

#Duation of animation
pathMaze1Duration = pathMaze1.getDuration()

def animation():

	link = viz.link(pathMaze1,view)
	pathMaze1.play()
	yield viztask.waitTime(pathMaze1Duration)
	pathMaze1.reset()

def maze1trial():
	print 'now'
	view.setPosition(startPos)
	maze1.visible(viz.ON)
	yield animation()
	#yield viztask.waitKeyDown([viz.KEY_LEFT,viz.KEY_RIGHT])
	maze1.visible(viz.OFF)

def masterFunction():	
	for x in range(4):
		yield maze1trial()
viztask.schedule(masterFunction())
Reply With Quote