Guest User

Untitled

a guest
Mar 29th, 2025
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends RefCounted
  2. class_name FrameSkipper
  3.  
  4. # Runs a callable every nth frame
  5.  
  6. # Example usage:
  7. # var skipper = FrameSkipper.new(3, func():
  8. #       print("This lambda runs every 3'rd time you call the process function!"))
  9. # Then call skipper.process() in your _process, or _physics_process etc.
  10.  
  11. var process_callable : Callable
  12. var frame_index : int
  13. var frame_divider : int = 1:
  14.     get:
  15.         return frame_divider
  16.     set(value):
  17.         assert(value > 0)
  18.         frame_divider = value
  19.         frame_index = randi() % value
  20.  
  21. func _init(divider : int, process_func : Callable) -> void:
  22.     frame_divider = divider
  23.     assert(process_func.is_valid())
  24.     process_callable = process_func
  25.  
  26. func process() -> bool: # Returns true if we called the callable this time
  27.     if frame_index >= frame_divider:
  28.         process_callable.call()
  29.         frame_index = 0
  30.         return true
  31.     frame_index += 1
  32.     return false
  33.  
Advertisement
Add Comment
Please, Sign In to add comment