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

26 lines
592 B
GDScript

class_name IndexedIterator extends Iterator
class Indexed extends RefCounted:
var value: Variant
var index: int
func _init(_value: Variant, _index: int) -> void:
value = _value
index = _index
var _iter: Iterator
var _index: int = 0
func _init(iter: Iterator) -> void:
_iter = iter
func _add_index(value: Variant) -> Indexed:
return Indexed.new(value, _index)
func clone() -> IndexedIterator:
return IndexedIterator.new(_iter.clone())
func next() -> Option:
var next_value = _iter.next().map(_add_index)
_index += 1
return next_value