signalis-eb/godot/addons/iterator/skip_while.gd

18 lines
489 B
GDScript

class_name SkipWhileIterator extends Iterator
var iterator: Iterator
var predicate: Callable
var _skipped: bool = false
func _init(iterator: Iterator, predicate: Callable) -> void:
self.iterator = iterator
self.predicate = predicate
func next() -> Option:
if not _skipped:
var value = iterator.next()
while value.is_some() and predicate.call(value):
value = iterator.next()
_skipped = true
return value
return iterator.next()