Skip to content

Instantly share code, notes, and snippets.

@sheepandshepherd
Created February 19, 2016 00:18
Show Gist options
  • Save sheepandshepherd/23c6f12caa0f8364118d to your computer and use it in GitHub Desktop.
Save sheepandshepherd/23c6f12caa0f8364118d to your computer and use it in GitHub Desktop.
Example of a custom iterator in GDScript
class RangeIterator:
var current
var end
var change
func stop():
if change > 0:
return current >= end
else:
return current <= end
func init_end(e):
current = 0
end = e
if e > 0:
change = 1
else:
change = -1
func init_start_end(s, e):
current = s
end = e
if e > s:
change = 1
else:
change = -1
func init_start_end_change(s, e, c):
current = s
end = e
change = c
# override bool _iter_init(?)
func _iter_init(arg):
return !stop()
# override bool _iter_next(?)
func _iter_next(arg):
current += change
return !stop()
# override Variant _iter_get(?)
func _iter_get(arg):
return current
func example():
var iter = RangeIterator.new()
iter.init_start_end(5,10)
for i in iter:
print(i)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment