Notes personnelles
import bpy
class ModalTimerOperator(bpy.types.Operator):
	"""Operator which runs its self from a timer"""
	bl_idname = "wm.modal_timer_operator"
	bl_label = "Modal Timer Operator"
	loop_count = 0
	loop_fps = 1
	_timer = None
	i = 0
	def every_seconds(self):
		print("sub_"+str(self.i))
		self.i = self.i + 1
		
		return 1
			
	def modal(self, context, event):
		if event.type in {'RIGHTMOUSE', 'ESC'}:
			self.cancel(context)
			return {'CANCELLED'}
		if event.type == 'TIMER':
			print(self.loop_count)
			self.loop_count = self.loop_count + 1
			if self.loop_count == 10:
				bpy.app.timers.register(self.every_seconds)
				
		return {'PASS_THROUGH'}
	def execute(self, context):
		wm = context.window_manager
		self._timer = wm.event_timer_add(1/self.loop_fps, window=context.window)
		wm.modal_handler_add(self)
		return {'RUNNING_MODAL'}
	def cancel(self, context):
		wm = context.window_manager
		wm.event_timer_remove(self._timer)
def register():
	bpy.utils.register_class(ModalTimerOperator)
def unregister():
	bpy.utils.unregister_class(ModalTimerOperator)
if __name__ == "__main__":
	register()
	# test call
	bpy.ops.wm.modal_timer_operator()
        Recommended Posts