001package fr.aumgn.bukkitutils.geom.vector;
002
003import java.util.Iterator;
004import java.util.NoSuchElementException;
005
006import fr.aumgn.bukkitutils.geom.Vector2D;
007
008public class Vector2DIterator implements Iterator<Vector2D> {
009
010    private Vector2D min;
011    private Vector2D max;
012    private boolean hasNext;
013    private double nextX;
014    private double nextZ;
015
016    public Vector2DIterator(Vector2D min, Vector2D max) {
017        this.min = min;
018        this.max = max;
019        this.hasNext = true;
020        this.nextX = min.getX();
021        this.nextZ = min.getZ();
022    }
023
024    public boolean hasNext() {
025        return hasNext;
026    }
027
028    public Vector2D next() {
029        if (!hasNext) {
030            throw new NoSuchElementException();
031        }
032
033        Vector2D answer = new Vector2D(nextX, nextZ);
034        if (++nextX <= max.getX()) {
035            return answer;
036        }
037
038        nextX = min.getX();
039        if (++nextZ <= max.getZ()) {
040            return answer;
041        }
042
043        hasNext = false;
044        return answer;
045    }
046
047    @Override
048    public void remove() {
049        throw new UnsupportedOperationException();
050    }
051}