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}