Improved Iris object AABB detection

This commit is contained in:
Daniel Mills 2021-01-08 19:51:14 -05:00
parent 9adbbcee93
commit 9720ada87f

View File

@ -39,20 +39,8 @@ public class IrisObject extends IrisRegistrant
public AxisAlignedBB getAABB() public AxisAlignedBB getAABB()
{ {
return aabb.aquire(() -> { return new AxisAlignedBB(new IrisPosition(new BlockVector(0,0,0).subtract(center).toBlockVector()),
int[] v = new int[]{0,0,0,0,0,0}; new IrisPosition(new BlockVector(w-1,h-1,d-1).subtract(center).toBlockVector()));
for(BlockVector i : blocks.k())
{
v[0] = Math.min(v[0], i.getBlockX());
v[1] = Math.min(v[1], i.getBlockY());
v[2] = Math.min(v[2], i.getBlockZ());
v[3] = Math.max(v[3], i.getBlockX());
v[4] = Math.max(v[4], i.getBlockY());
v[5] = Math.max(v[5], i.getBlockZ());
}
return new AxisAlignedBB(new IrisPosition(v[0], v[1], v[2]), new IrisPosition(v[3], v[4], v[5]));
});
} }
public void ensureSmartBored(boolean debug) public void ensureSmartBored(boolean debug)
@ -77,12 +65,12 @@ public class IrisObject extends IrisRegistrant
for(BlockVector i : blocks.k()) for(BlockVector i : blocks.k())
{ {
max.setX(i.getX() > max.getX() ? i.getX() : max.getX()); max.setX(Math.max(i.getX(), max.getX()));
min.setX(i.getX() < min.getX() ? i.getX() : min.getX()); min.setX(Math.min(i.getX(), min.getX()));
max.setY(i.getY() > max.getY() ? i.getY() : max.getY()); max.setY(Math.max(i.getY(), max.getY()));
min.setY(i.getY() < min.getY() ? i.getY() : min.getY()); min.setY(Math.min(i.getY(), min.getY()));
max.setZ(i.getZ() > max.getZ() ? i.getZ() : max.getZ()); max.setZ(Math.max(i.getZ(), max.getZ()));
min.setZ(i.getZ() < min.getZ() ? i.getZ() : min.getZ()); min.setZ(Math.min(i.getZ(), min.getZ()));
} }
// Smash X // Smash X