AABBBlock shift and clone methods
This commit is contained in:
parent
b2cd7e0bda
commit
8755725d51
@ -17,7 +17,7 @@ import fr.pandacube.lib.util.RandomUtil;
|
|||||||
* Represent the littelest cuboid selection of blocks that contains the bounding box
|
* Represent the littelest cuboid selection of blocks that contains the bounding box
|
||||||
* passed to the constructor.
|
* passed to the constructor.
|
||||||
*/
|
*/
|
||||||
public class AABBBlock implements Iterable<BlockVector> {
|
public class AABBBlock implements Iterable<BlockVector>, Cloneable {
|
||||||
|
|
||||||
public final Vector pos1, pos2;
|
public final Vector pos1, pos2;
|
||||||
|
|
||||||
@ -25,6 +25,14 @@ public class AABBBlock implements Iterable<BlockVector> {
|
|||||||
|
|
||||||
private final long volume;
|
private final long volume;
|
||||||
|
|
||||||
|
private AABBBlock(AABBBlock original, int shiftX, int shiftY, int shiftZ) {
|
||||||
|
Vector shiftVect = new Vector(shiftX, shiftY, shiftZ);
|
||||||
|
pos1 = original.pos1.clone().add(shiftVect);
|
||||||
|
pos2 = original.pos2.clone().add(shiftVect);
|
||||||
|
center = original.center.clone().add(shiftVect);
|
||||||
|
volume = original.volume;
|
||||||
|
}
|
||||||
|
|
||||||
public AABBBlock(Vector p1, Vector p2) {
|
public AABBBlock(Vector p1, Vector p2) {
|
||||||
this(p1.getBlockX(), p1.getBlockY(), p1.getBlockZ(), p2.getBlockX(), p2.getBlockY(), p2.getBlockZ());
|
this(p1.getBlockX(), p1.getBlockY(), p1.getBlockZ(), p2.getBlockX(), p2.getBlockY(), p2.getBlockZ());
|
||||||
}
|
}
|
||||||
@ -56,6 +64,16 @@ public class AABBBlock implements Iterable<BlockVector> {
|
|||||||
volume = (long) Math.abs(p2x_ - p1x_) * Math.abs(p2x_ - p1x_) * Math.abs(p2x_ - p1x_);
|
volume = (long) Math.abs(p2x_ - p1x_) * Math.abs(p2x_ - p1x_) * Math.abs(p2x_ - p1x_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AABBBlock shift(int x, int y, int z) {
|
||||||
|
return new AABBBlock(this, x, y, z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||||
|
@Override
|
||||||
|
public AABBBlock clone() throws CloneNotSupportedException {
|
||||||
|
return new AABBBlock(this, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean overlaps(Entity e) {
|
public boolean overlaps(Entity e) {
|
||||||
return overlaps(e.getBoundingBox());
|
return overlaps(e.getBoundingBox());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user