Box class
Пакет: com.hypixel.hytale.math.shape
Файл: com/hypixel/hytale/math/shape/Box.java
implements: Shape
Поля (78)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Codec<Box> |
CODEC |
|
double |
var1 |
|
double |
var1 |
|
Box |
var1 |
|
double |
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
|
var1 |
|
double |
var10 |
|
|
var10 |
|
int |
var10 |
|
int |
var11 |
|
int |
var11 |
|
double |
var11 |
|
double |
var12 |
|
|
var12 |
|
int |
var12 |
|
int |
var12 |
|
int |
var13 |
|
int |
var13 |
|
double |
var13 |
|
double |
var14 |
|
|
var14 |
|
int |
var14 |
|
int |
var14 |
|
int |
var15 |
|
int |
var15 |
|
double |
var15 |
|
|
var15 |
|
|
var15 |
|
|
var15 |
|
int |
var16 |
|
double |
var17 |
|
double |
var17 |
|
|
var17 |
|
|
var17 |
|
|
var17 |
|
double |
var19 |
|
double |
var19 |
|
|
var19 |
|
double |
var21 |
|
double |
var21 |
|
|
var21 |
|
Vector3d |
var23 |
|
double |
var23 |
|
double |
var27 |
|
|
var27 |
|
double |
var28 |
|
|
var28 |
|
double |
var29 |
|
|
var29 |
|
double |
var3 |
|
double |
var3 |
|
double |
var3 |
|
double |
var30 |
|
|
var30 |
|
double |
var31 |
|
double |
var32 |
|
double |
var4 |
|
double |
var4 |
|
|
var4 |
|
int |
var4 |
|
double |
var5 |
|
int |
var5 |
|
double |
var5 |
|
double |
var6 |
|
|
var6 |
|
int |
var6 |
|
int |
var7 |
|
double |
var7 |
|
double |
var8 |
|
|
var8 |
|
int |
var8 |
|
int |
var9 |
|
double |
var9 |
Методы (56)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
Box |
centeredCubeBox centeredCube(@Nonnull Vector3dc var0, double var1) |
public |
boolean |
containsBlockboolean containsBlock(int var1, int var2, int var3) |
public |
boolean |
containsBlockboolean containsBlock(@Nonnull Vector3ic var1, int var2, int var3, int var4) |
static |
Box |
cubeBox cube(@Nonnull Vector3dc var0, double var1) |
public |
double |
depthdouble depth() |
public |
double |
dimensiondouble dimension(@Nonnull Axis var1) |
|
|
for for(int var16 = 0; var16 < 8; var16++) |
|
|
for for(int var16 = var10; var16 <= var13 && var16 >= var10; var16++) |
|
|
for for(int var17 = var11; var17 <= var14 && var17 >= var11; var17++) |
|
|
for for(int var18 = var12; var18 <= var15 && var18 >= var12; var18++) |
|
|
for for(int var17 = var11; var17 <= var14 && var17 >= var11; var17++) |
|
|
for for(int var18 = var12; var18 <= var15 && var18 >= var12; var18++) |
|
|
for for(int var19 = var13; var19 <= var16 && var19 >= var13; var19++) |
public |
double |
getMaximumExtentdouble getMaximumExtent() |
public |
double |
getMaximumThicknessdouble getMaximumThickness() |
public |
double |
getThicknessdouble getThickness() |
public |
double |
getVolumedouble getVolume() |
public |
boolean |
hasVolumeboolean hasVolume() |
public |
double |
heightdouble height() |
|
|
if if(this.min.x > var1.min.x) |
|
|
if if(this.min.y > var1.min.y) |
|
|
if if(this.min.z > var1.min.z) |
|
|
if if(this.max.x < var1.max.x) |
|
|
if if(this.max.y < var1.max.y) |
|
|
if if(this.max.z < var1.max.z) |
|
|
if if(this.min.x > this.max.x) |
|
|
if if(this.min.y > this.max.y) |
|
|
if if(this.min.z > this.max.z) |
|
|
if if(var23.x < var4) |
|
|
if if(var23.y < var6) |
|
|
if if(var23.z < var8) |
|
|
if if(var23.x > var10) |
|
|
if if(var23.y > var12) |
|
|
if if(var23.z > var14) |
|
|
if if(var1 <= 0.0) |
|
|
if if(var3 <= 0.0) |
|
|
if if(-this.min.x > var1) |
|
|
if if(-this.min.y > var1) |
|
|
if if(-this.min.z > var1) |
|
|
if if(this.max.x - 1.0 > var1) |
|
|
if if(this.max.y - 1.0 > var1) |
|
|
if if(this.max.z - 1.0 > var1) |
|
|
if if(var19 > var21) |
|
|
if if(var15 > var17) |
|
|
if if(var27 > var29) |
|
|
if if(var15 > var17) |
|
|
if if(var28 > var30) |
public |
boolean |
intersectsLineboolean intersectsLine(@Nonnull Vector3dc var1, @Nonnull Vector3dc var2) |
public |
boolean |
isIntersectingboolean isIntersecting(@Nonnull Box var1) |
public |
boolean |
isUnitBoxboolean isUnitBox() |
public |
double |
middleXdouble middleX() |
public |
double |
middleYdouble middleY() |
public |
double |
middleZdouble middleZ() |
|
return |
switchreturn switch(var1) |
abstract |
|
this this() |
public |
double |
widthdouble width() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.math.shape;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.function.predicate.TriIntObjPredicate;
class="kw">import com.hypixel.hytale.function.predicate.TriIntPredicate;
class="kw">import com.hypixel.hytale.math.Axis;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3ic;
class="kw">public class Box class="kw">implements Shape {
class="kw">public class="kw">static class="kw">final Codec<Box> CODEC = BuilderCodec.builder(Box.class, Box::new)
.append(new KeyedCodec<>("Min", Vector3dUtil.CODEC), (var0, var1) -> var0.min.set(var1), var0 -> var0.min)
.add()
.append(new KeyedCodec<>("Max", Vector3dUtil.CODEC), (var0, var1) -> var0.max.set(var1), var0 -> var0.max)
.add()
.validator((var0, var1) -> {
if (var0.width() <= 0.0) {
var1.fail("Width is <= 0! Given: " + var0.width());
}
if (var0.height() <= 0.0) {
var1.fail("Height is <= 0! Given: " + var0.height());
}
if (var0.depth() <= 0.0) {
var1.fail("Depth is <= 0! Given: " + var0.depth());
}
})
.build();
class="kw">public class="kw">static class="kw">final Box UNIT = new Box(Vector3dUtil.ZERO, Vector3dUtil.ALL_ONES);
class="kw">public class="kw">static class="kw">final Box ZERO = new Box(Vector3dUtil.ZERO, Vector3dUtil.ZERO);
@Nonnull
class="kw">public class="kw">final Vector3d min = new Vector3d();
@Nonnull
class="kw">public class="kw">final Vector3d max = new Vector3d();
@Nonnull
class="kw">public class="kw">static Box horizontallyCentered(double var0, double var2, double var4) {
class="kw">return new Box(-var0 / 2.0, 0.0, -var4 / 2.0, var0 / 2.0, var2, var4 / 2.0);
}
class="kw">public Box() {
}
class="kw">public Box(@Nonnull Box var1) {
this();
this.min.set(var1.min);
this.max.set(var1.max);
}
class="kw">public Box(@Nonnull Vector3dc var1, @Nonnull Vector3dc var2) {
this();
this.min.set(var1);
this.max.set(var2);
}
class="kw">public Box(double var1, double var3, double var5, double var7, double var9, double var11) {
this();
this.min.set(var1, var3, var5);
this.max.set(var7, var9, var11);
}
class="kw">public class="kw">static Box cube(@Nonnull Vector3dc var0, double var1) {
class="kw">return new Box(var0.x(), var0.y(), var0.z(), var0.x() + var1, var0.y() + var1, var0.z() + var1);
}
class="kw">public class="kw">static Box centeredCube(@Nonnull Vector3dc var0, double var1) {
class="kw">return new Box(var0.x() - var1, var0.y() - var1, var0.z() - var1, var0.x() + var1, var0.y() + var1, var0.z() + var1);
}
@Nonnull
class="kw">public Box setMinMax(@Nonnull Vector3dc var1, @Nonnull Vector3dc var2) {
this.min.set(var1);
this.max.set(var2);
class="kw">return this;
}
@Nonnull
class="kw">public Box setMinMax(@Nonnull double[] var1, @Nonnull double[] var2) {
this.min.set(var1);
this.max.set(var2);
class="kw">return this;
}
@Nonnull
class="kw">public Box setMinMax(@Nonnull float[] var1, @Nonnull float[] var2) {
this.min.set(var1);
this.max.set(var2);
class="kw">return this;
}
@Nonnull
class="kw">public Box setEmpty() {
this.setMinMax(Double.MAX_VALUE, -Double.MAX_VALUE);
class="kw">return this;
}
@Nonnull
class="kw">public Box setMinMax(double var1, double var3) {
this.min.set(var1);
this.max.set(var3);
class="kw">return this;
}
@Nonnull
class="kw">public Box union(@Nonnull Box var1) {
if (this.min.x > var1.min.x) {
this.min.x = var1.min.x;
}
if (this.min.y > var1.min.y) {
this.min.y = var1.min.y;
}
if (this.min.z > var1.min.z) {
this.min.z = var1.min.z;
}
if (this.max.x < var1.max.x) {
this.max.x = var1.max.x;
}
if (this.max.y < var1.max.y) {
this.max.y = var1.max.y;
}
if (this.max.z < var1.max.z) {
this.max.z = var1.max.z;
}
class="kw">return this;
}
@Nonnull
class="kw">public Box assign(@Nonnull Box var1) {
this.min.set(var1.min);
this.max.set(var1.max);
class="kw">return this;
}
@Nonnull
class="kw">public Box assign(double var1, double var3, double var5, double var7, double var9, double var11) {
this.min.set(var1, var3, var5);
this.max.set(var7, var9, var11);
class="kw">return this;
}
@Nonnull
class="kw">public Box minkowskiSum(@Nonnull Box var1) {
this.min.sub(var1.max);
this.max.sub(var1.min);
class="kw">return this;
}
@Nonnull
class="kw">public Box scale(float var1) {
this.min.mul(var1);
this.max.mul(var1);
class="kw">return this;
}
@Nonnull
class="kw">public Box normalize() {
if (this.min.x > this.max.x) {
double var1 = this.min.x;
this.min.x = this.max.x;
this.max.x = var1;
}
if (this.min.y > this.max.y) {
double var3 = this.min.y;
this.min.y = this.max.y;
this.max.y = var3;
}
if (this.min.z > this.max.z) {
double var4 = this.min.z;
this.min.z = this.max.z;
this.max.z = var4;
}
class="kw">return this;
}
@Nonnull
class="kw">public Box enclosingRotatedAABB(float var1, float var2, float var3) {
if (Float.isFinite(var1) && Float.isFinite(var2) && Float.isFinite(var3)) {
double var4 = Double.MAX_VALUE;
double var6 = Double.MAX_VALUE;
double var8 = Double.MAX_VALUE;
double var10 = -Double.MAX_VALUE;
double var12 = -Double.MAX_VALUE;
double var14 = -Double.MAX_VALUE;
for (int var16 = 0; var16 < 8; var16++) {
double var17 = (var16 & 1) == 0 ? this.min.x : this.max.x;
double var19 = (var16 & 2) == 0 ? this.min.y : this.max.y;
double var21 = (var16 & 4) == 0 ? this.min.z : this.max.z;
Vector3d var23 = new Vector3d(var17, var19, var21);
var23.rotateZ(var3).rotateY(var2).rotateX(var1);
if (var23.x < var4) {
var4 = var23.x;
}
if (var23.y < var6) {
var6 = var23.y;
}
if (var23.z < var8) {
var8 = var23.z;
}
if (var23.x > var10) {
var10 = var23.x;
}
if (var23.y > var12) {
var12 = var23.y;
}
if (var23.z > var14) {
var14 = var23.z;
}
}
class="kw">return new Box(var4, var6, var8, var10, var12, var14);
} else {
class="kw">return this.clone();
}
}
@Nonnull
class="kw">public Box rotateX(float var1) {
this.min.rotateX(var1);
this.max.rotateX(var1);
class="kw">return this;
}
@Nonnull
class="kw">public Box rotateY(float var1) {
this.min.rotateY(var1);
this.max.rotateY(var1);
class="kw">return this;
}
@Nonnull
class="kw">public Box rotateZ(float var1) {
this.min.rotateZ(var1);
this.max.rotateZ(var1);
class="kw">return this;
}
@Nonnull
class="kw">public Box offset(double var1, double var3, double var5) {
this.min.add(var1, var3, var5);
this.max.add(var1, var3, var5);
class="kw">return this;
}
@Nonnull
class="kw">public Box offset(@Nonnull Vector3dc var1) {
this.min.add(var1);
this.max.add(var1);
class="kw">return this;
}
@Nonnull
class="kw">public Box sweep(@Nonnull Vector3dc var1) {
if (var1.x() < 0.0) {
this.min.x = this.min.x + var1.x();
} else if (var1.x() > 0.0) {
this.max.x = this.max.x + var1.x();
}
if (var1.y() < 0.0) {
this.min.y = this.min.y + var1.y();
} else if (var1.y() > 0.0) {
this.max.y = this.max.y + var1.y();
}
if (var1.z() < 0.0) {
this.min.z = this.min.z + var1.z();
} else if (var1.z() > 0.0) {
this.max.z = this.max.z + var1.z();
}
class="kw">return this;
}
@Nonnull
class="kw">public Box extend(double var1, double var3, double var5) {
this.min.sub(var1, var3, var5);
this.max.add(var1, var3, var5);
class="kw">return this;
}
class="kw">public double width() {
class="kw">return this.max.x - this.min.x;
}
class="kw">public double height() {
class="kw">return this.max.y - this.min.y;
}
class="kw">public double depth() {
class="kw">return this.max.z - this.min.z;
}
class="kw">public double dimension(@Nonnull Axis var1) {
class="kw">return class="kw">switch (var1) {
case X -> this.width();
case Y -> this.height();
case Z -> this.depth();
};
}
class="kw">public double getThickness() {
class="kw">return MathUtil.minValue(this.width(), this.height(), this.depth());
}
class="kw">public double getMaximumThickness() {
class="kw">return MathUtil.maxValue(this.width(), this.height(), this.depth());
}
class="kw">public double getVolume() {
double var1 = this.width();
if (var1 <= 0.0) {
class="kw">return 0.0;
}
double var3 = this.height();
if (var3 <= 0.0) {
class="kw">return 0.0;
}
double var5 = this.depth();
class="kw">return var5 <= 0.0 ? 0.0 : var1 * var3 * var5;
}
class="kw">public boolean hasVolume() {
class="kw">return this.min.x <= this.max.x && this.min.y <= this.max.y && this.min.z <= this.max.z;
}
class="kw">public boolean isIntersecting(@Nonnull Box var1) {
class="kw">return !(this.min.x > var1.max.x)
&& !(var1.min.x > this.max.x)
&& !(this.min.y > var1.max.y)
&& !(var1.min.y > this.max.y)
&& !(this.min.z > var1.max.z)
&& !(var1.min.z > this.max.z);
}
class="kw">public boolean isUnitBox() {
class="kw">return this.min.equals(Vector3dUtil.ZERO) && this.max.equals(Vector3dUtil.ALL_ONES);
}
class="kw">public double middleX() {
class="kw">return (this.min.x + this.max.x) / 2.0;
}
class="kw">public double middleY() {
class="kw">return (this.min.y + this.max.y) / 2.0;
}
class="kw">public double middleZ() {
class="kw">return (this.min.z + this.max.z) / 2.0;
}
@Nonnull
class="kw">public Box clone() {
Box var1 = new Box();
var1.assign(this);
class="kw">return var1;
}
@Nonnull
class="kw">public Vector3d getMin() {
class="kw">return this.min;
}
@Nonnull
class="kw">public Vector3d getMax() {
class="kw">return this.max;
}
@Nonnull
@Override
class="kw">public Box getBox(double var1, double var3, double var5) {
class="kw">return new Box(this.min.x() + var1, this.min.y() + var3, this.min.z() + var5, this.max.x() + var1, this.max.y() + var3, this.max.z() + var5);
}
@Override
class="kw">public boolean containsPosition(double var1, double var3, double var5) {
class="kw">return var1 >= this.min.x() && var1 <= this.max.x() && var3 >= this.min.y() && var3 <= this.max.y() && var5 >= this.min.z() && var5 <= this.max.z();
}
@Override
class="kw">public void expand(double var1) {
this.extend(var1, var1, var1);
}
class="kw">public boolean containsBlock(int var1, int var2, int var3) {
int var4 = MathUtil.floor(this.min.x());
int var5 = MathUtil.floor(this.min.y());
int var6 = MathUtil.floor(this.min.z());
int var7 = MathUtil.ceil(this.max.x());
int var8 = MathUtil.ceil(this.max.y());
int var9 = MathUtil.ceil(this.max.z());
class="kw">return var1 >= var4 && var1 < var7 && var2 >= var5 && var2 < var8 && var3 >= var6 && var3 < var9;
}
class="kw">public boolean containsBlock(@Nonnull Vector3ic var1, int var2, int var3, int var4) {
class="kw">return this.containsBlock(var2 - var1.x(), var3 - var1.y(), var4 - var1.z());
}
@Override
class="kw">public boolean forEachBlock(double var1, double var3, double var5, double var7, @Nonnull TriIntPredicate var9) {
int var10 = MathUtil.floor(var1 + this.min.x() - var7);
int var11 = MathUtil.floor(var3 + this.min.y() - var7);
int var12 = MathUtil.floor(var5 + this.min.z() - var7);
int var13 = MathUtil.floor(var1 + this.max.x() + var7);
int var14 = MathUtil.floor(var3 + this.max.y() + var7);
int var15 = MathUtil.floor(var5 + this.max.z() + var7);
for (int var16 = var10; var16 <= var13 && var16 >= var10; var16++) {
for (int var17 = var11; var17 <= var14 && var17 >= var11; var17++) {
for (int var18 = var12; var18 <= var15 && var18 >= var12; var18++) {
if (!var9.test(var16, var17, var18)) {
class="kw">return false;
}
}
}
}
class="kw">return true;
}
@Override
class="kw">public <T> boolean forEachBlock(double var1, double var3, double var5, double var7, T var9, @Nonnull TriIntObjPredicate<T> var10) {
int var11 = MathUtil.floor(var1 + this.min.x() - var7);
int var12 = MathUtil.floor(var3 + this.min.y() - var7);
int var13 = MathUtil.floor(var5 + this.min.z() - var7);
int var14 = MathUtil.floor(var1 + this.max.x() + var7);
int var15 = MathUtil.floor(var3 + this.max.y() + var7);
int var16 = MathUtil.floor(var5 + this.max.z() + var7);
for (int var17 = var11; var17 <= var14 && var17 >= var11; var17++) {
for (int var18 = var12; var18 <= var15 && var18 >= var12; var18++) {
for (int var19 = var13; var19 <= var16 && var19 >= var13; var19++) {
if (!var10.test(var17, var18, var19, var9)) {
class="kw">return false;
}
}
}
}
class="kw">return true;
}
class="kw">public double getMaximumExtent() {
double var1 = 0.0;
if (-this.min.x > var1) {
var1 = -this.min.x;
}
if (-this.min.y > var1) {
var1 = -this.min.y;
}
if (-this.min.z > var1) {
var1 = -this.min.z;
}
if (this.max.x - 1.0 > var1) {
var1 = this.max.x - 1.0;
}
if (this.max.y - 1.0 > var1) {
var1 = this.max.y - 1.0;
}
if (this.max.z - 1.0 > var1) {
var1 = this.max.z - 1.0;
}
class="kw">return var1;
}
class="kw">public boolean intersectsLine(@Nonnull Vector3dc var1, @Nonnull Vector3dc var2) {
double var3 = var1.x();
double var5 = var1.y();
double var7 = var1.z();
double var9 = var2.x() - var3;
double var11 = var2.y() - var5;
double var13 = var2.z() - var7;
double var15 = 0.0;
double var17 = 1.0;
if (Math.abs(var9) < 1.0E-10) {
if (var1.x() < this.min.x || var1.x() > this.max.x) {
class="kw">return false;
}
} else {
double var19 = (this.min.x - var1.x()) / var9;
double var21 = (this.max.x - var1.x()) / var9;
if (var19 > var21) {
double var23 = var19;
var19 = var21;
var21 = var23;
}
var15 = Math.max(var15, var19);
var17 = Math.min(var17, var21);
if (var15 > var17) {
class="kw">return false;
}
}
if (Math.abs(var11) < 1.0E-10) {
if (var1.y() < this.min.y || var1.y() > this.max.y) {
class="kw">return false;
}
} else {
double var27 = (this.min.y - var1.y()) / var11;
double var29 = (this.max.y - var1.y()) / var11;
if (var27 > var29) {
double var31 = var27;
var27 = var29;
var29 = var31;
}
var15 = Math.max(var15, var27);
var17 = Math.min(var17, var29);
if (var15 > var17) {
class="kw">return false;
}
}
if (!(Math.abs(var13) < 1.0E-10)) {
double var28 = (this.min.z - var1.z()) / var13;
double var30 = (this.max.z - var1.z()) / var13;
if (var28 > var30) {
double var32 = var28;
var28 = var30;
var30 = var32;
}
var15 = Math.max(var15, var28);
var17 = Math.min(var17, var30);
class="kw">return !(var15 > var17);
} else {
class="kw">return !(var1.z() < this.min.z) && !(var1.z() > this.max.z);
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "Box{min=" + this.min + ", max=" + this.max + "}";
}
}