Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends RefCounted
- class_name FrameSkipper
- # Runs a callable every nth frame
- # Example usage:
- # var skipper = FrameSkipper.new(3, func():
- # print("This lambda runs every 3'rd time you call the process function!"))
- # Then call skipper.process() in your _process, or _physics_process etc.
- var process_callable : Callable
- var frame_index : int
- var frame_divider : int = 1:
- get:
- return frame_divider
- set(value):
- assert(value > 0)
- frame_divider = value
- frame_index = randi() % value
- func _init(divider : int, process_func : Callable) -> void:
- frame_divider = divider
- assert(process_func.is_valid())
- process_callable = process_func
- func process() -> bool: # Returns true if we called the callable this time
- if frame_index >= frame_divider:
- process_callable.call()
- frame_index = 0
- return true
- frame_index += 1
- return false
Advertisement
Add Comment
Please, Sign In to add comment