#1
|
|||
|
|||
multiple timers
i have two timers, one that listens for certain keyboard input, and another that makes a person walk around in my world. I want the first one to be always on, but is there a way to make the second one start after a certain elapsed time, say 5 seconds or so? here's what my timer function looks like:
Code:
def mytimer(num): if num == 0: brake = 0 if viz.iskeydown(viz.KEY_TAB): brake = 1 if viz.iskeydown(viz.KEY_UP) and brake != 1: view.move(0,0,MOVE_SPEED*viz.elapsed(),viz.BODY_ORI) car2.translate(0,0,MOVE_SPEED*viz.elapsed(),viz.RELATIVE) elif viz.iskeydown(viz.KEY_DOWN): view.move(0,0,-MOVE_SPEED*viz.elapsed(),viz.BODY_ORI) car2.translate(0,0,-MOVE_SPEED*viz.elapsed(),viz.RELATIVE) if viz.iskeydown(viz.KEY_RIGHT): view.rotate(0,1,0,TURN_SPEED*viz.elapsed(),viz.BODY_ORI,viz.RELATIVE_WORLD) elif viz.iskeydown(viz.KEY_LEFT): view.rotate(0,1,0,-TURN_SPEED*viz.elapsed(),viz.BODY_ORI,viz.RELATIVE_WORLD) updatecar() # puts the walker on the screen if num == 1: walker.visible(viz.ON) global walkerX, walkerY, walkerZ, walkerAngle walker.rotate(0,1,0,90) # calculate components of motion w.r.t X and Z axis walkerZ = walkerZ - 0.00002 * math.sin(math.radians(walkerAngle)) walkerX = walkerX + 0.00002 * math.cos(math.radians(walkerAngle)) # move the walker walker.translate(walkerX,walkerY,walkerZ,viz.RELATIVE) viz.callback(viz.TIMER_EVENT,mytimer) viz.starttimer(0,0.01,viz.FOREVER) viz.starttimer(1,0,viz.PERPETUAL) |
#2
|
|||
|
|||
A timer starts whenever you call viz.starttimer(), so your goal is to decide when it's appropriate to make that call.
Something like this sketch (this is not tested code): Code:
timer_one = False def mytimer(num): if num == 0: if not timer_one and viz.get(viz.FRAME_TIMESTAMP) > 5.0: timer_one = True viz.starttimer(1, 0, viz.PERPETUAL) # do other timer-zero stuff if num == 1: # do other timer-one stuff viz.callback(viz.TIMER_EVENT, mytimer) viz.starttimer(0, 0.01, viz.FOREVER)
__________________
-- [ e d h a l l e y ] I'm just a user, not a representative of WorldViz. Hope I've been helpful. |
#3
|
|||
|
|||
error
when I try to run that I get this error:
if not timer_one and viz.get(viz.FRAME_TIMESTAMP) > 5.0: AttributeError: 'module' object has no attribute 'FRAME_TIMESTAMP' |
#4
|
|||
|
|||
You can also use the Python time module.
Code:
import time #Gives number of seconds since program start print time.clock()
__________________
Paul Elliott WorldViz LLC |
#5
|
|||
|
|||
ok that seems to work fine, thanks!
|
|
|