001package fr.aumgn.dac2.shape;
002
003import java.util.Iterator;
004
005import fr.aumgn.bukkitutils.geom.Vector;
006import fr.aumgn.bukkitutils.geom.Vector2D;
007import fr.aumgn.dac2.shape.column.Column;
008import fr.aumgn.dac2.shape.iterator.CuboidColumnsIterator;
009
010@ShapeName("cuboid")
011public class CuboidShape implements FlatShape {
012
013    private final Vector min;
014    private final Vector max;
015
016    public CuboidShape(Vector min, Vector max) {
017        this.min = min;
018        this.max = max;
019    }
020
021    @Override
022    public boolean contains(Vector pt) {
023        return pt.isInside(min, max);
024    }
025
026    @Override
027    public double getMinY() {
028        return min.getY();
029    }
030
031    @Override
032    public double getMaxY() {
033        return max.getY();
034    }
035
036    @Override
037    public Vector2D getMin2D() {
038        return min.to2D();
039    }
040
041    @Override
042    public Vector2D getMax2D() {
043        return max.to2D();
044    }
045
046    @Override
047    public boolean contains2D(Vector2D pt) {
048        return pt.isInside(min.to2D(), max.to2D());
049    }
050
051    @Override
052    public Column getColumn(Vector2D pt) {
053        return new Column(this, pt);
054    }
055
056    @Override
057    public Iterator<Column> iterator() {
058        return new CuboidColumnsIterator(this);
059    }
060
061    public Vector getMin() {
062        return min;
063    }
064
065    public Vector getMax() {
066        return max;
067    }
068}