Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import host
- import realitydebug as rdebug
- class Timer:
- def __init__( self, targetFunc, delta, alwaysTrigger, data=None ):
- self.targetFunc = targetFunc
- self.data = data
- self.time = host.timer_getWallTime( ) + delta
- self.interval = 0.0
- self.alwaysTrigger = alwaysTrigger
- host.timer_created( self )
- print "timer object created %s" % self.targetFunc.__name__
- def __del__( self ):
- print "timer object destroyed %s" % self.targetFunc.__name__
- def destroy( self ):
- host.timer_destroy( self )
- def getTime( self ):
- return self.time
- def setTime( self, time ):
- self.time = time
- def setRecurring( self, interval ):
- self.interval = interval
- def onTrigger( self ):
- try:
- self.targetFunc( self.data )
- except:
- rdebug.errorMessage( )
- # Utility class to fire a function at some delay without the need to store a timer reference. Fire and forget
- # Inherits from timer and destroys itself after firing once
- # There is no need to save the constructed classes, It will be garbage collected after firing.
- class fireOnce(Timer):
- def __init__(self, targetFunc, delay, data=None):
- Timer.__init__(self, targetFunc, delay, 1, data)
- def onTrigger(self):
- Timer.onTrigger(self)
- # Destroy self after triggering.
- # This has been confirmed to call __del__ and be garbage collected, if no other references are kept.
- self.destroy()
- # Do not let anyone set recurring or set time to this!
- def setRecurring(self, interval):
- raise Exception('Not supported')
- def setTime(self, time):
- raise Exception('Not supported')
- class fireNextTick(fireOnce):
- # Putting negative value for delay causes a fire at the next game tick.
- def __init__(self, targetFunc, data=None):
- fireOnce.__init__(self, targetFunc, -1, data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement