func recursive_processing(path : String, callback : Callable) -> void: var dir : DirAccess = DirAccess.open(path) if dir: var stack : Array[DirAccess] = [ dir ] dir.list_dir_begin() while not stack.is_empty(): var current : DirAccess = stack.back() var file_name : String = current.get_next() while not file_name.is_empty(): var cur_dir_path : String = current.get_current_dir() var full_path : String = "%s%s%s" % [ cur_dir_path, "" if cur_dir_path.ends_with("/") else "/", file_name ] if current.current_is_dir(): var d : DirAccess = DirAccess.open(full_path) if d: d.list_dir_begin() stack.push_back(d) break else: callback.call(full_path) file_name = current.get_next() if file_name.is_empty(): stack.pop_back()
or share this direct link: