Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. import host
  2.  
  3. import realitydebug as rdebug
  4.  
  5.  
  6. class Timer:
  7.     def __init__( self, targetFunc, delta, alwaysTrigger, data=None ):
  8.         self.targetFunc = targetFunc
  9.         self.data = data
  10.         self.time = host.timer_getWallTime( ) + delta
  11.         self.interval = 0.0
  12.         self.alwaysTrigger = alwaysTrigger
  13.         host.timer_created( self )
  14.         print "timer object created %s" % self.targetFunc.__name__
  15.  
  16.     def __del__( self ):
  17.         print "timer object destroyed %s" % self.targetFunc.__name__
  18.  
  19.     def destroy( self ):
  20.         host.timer_destroy( self )
  21.  
  22.     def getTime( self ):
  23.         return self.time
  24.  
  25.     def setTime( self, time ):
  26.         self.time = time
  27.  
  28.     def setRecurring( self, interval ):
  29.         self.interval = interval
  30.  
  31.     def onTrigger( self ):
  32.         try:
  33.             self.targetFunc( self.data )
  34.         except:
  35.             rdebug.errorMessage( )
  36.  
  37.  
  38. # Utility class to fire a function at some delay without the need to store a timer reference. Fire and forget
  39. # Inherits from timer and destroys itself after firing once
  40. # There is no need to save the constructed classes, It will be garbage collected after firing.
  41. class fireOnce(Timer):
  42.     def __init__(self, targetFunc, delay, data=None):
  43.         Timer.__init__(self, targetFunc, delay, 1, data)
  44.  
  45.     def onTrigger(self):
  46.         Timer.onTrigger(self)
  47.         # Destroy self after triggering.
  48.         # This has been confirmed to call __del__ and be garbage collected, if no other references are kept.
  49.         self.destroy()
  50.  
  51.     # Do not let anyone set recurring or set time to this!
  52.     def setRecurring(self, interval):
  53.         raise Exception('Not supported')
  54.  
  55.     def setTime(self, time):
  56.         raise Exception('Not supported')
  57.  
  58.  
  59.  
  60. class fireNextTick(fireOnce):
  61.     # Putting negative value for delay causes a fire at the next game tick.
  62.     def __init__(self, targetFunc, data=None):
  63.         fireOnce.__init__(self, targetFunc, -1, data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement