WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   multiple timers (https://forum.worldviz.com/showthread.php?t=604)

paulpars 06-01-2006 01:50 PM

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)


halley 06-02-2006 06:55 AM

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)


paulpars 06-02-2006 09:12 AM

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'

Gladsomebeast 06-02-2006 09:43 AM

You can also use the Python time module.

Code:

import time

#Gives number of seconds since program start
print time.clock()


paulpars 06-02-2006 10:12 AM

ok that seems to work fine, thanks!


All times are GMT -7. The time now is 11:38 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC