CollisionMath class
Пакет: com.hypixel.hytale.server.core.modules.collision
Файл: com/hypixel/hytale/server/core/modules/collision/CollisionMath.java
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
ThreadLocal<Vector2d> |
MIN_MAX |
|
Vector3d |
var10 |
|
Vector3d |
var11 |
|
double |
var11 |
|
int |
var14 |
|
double |
var14 |
|
int |
var15 |
|
int |
var16 |
|
int |
var16 |
|
double |
var16 |
|
|
var16 |
|
int |
var17 |
|
int |
var18 |
|
Vector2d |
var9 |
|
double |
var9 |
Методы (34)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("CollisionMath can't be instantiated") |
|
|
if if(var11 >= var9) |
|
|
if if(var9 > var8.x) |
|
|
if if(var11 < var8.y) |
|
|
if if(var11 > var8.x) |
|
|
if if(var9 < var8.y) |
|
|
if if(var14 == 0) |
|
|
if if(var15 == 0) |
|
|
if if(var16 == 0) |
|
|
if if(var16 == 0) |
|
|
if if(var17 == 0) |
|
|
if if(var18 == 0) |
|
|
if if(var16 > var12) |
|
|
if if(var16 > var12) |
static |
boolean |
intersect1Dboolean intersect1D(double var0, double var2, double var4, double var6, @Nonnull Vector2d var8) |
static |
int |
intersect1Dint intersect1D(double var0, double var2, double var4, double var6, double var8, double var10) |
static |
int |
intersect1Dint intersect1D(double var0, double var2, double var4, double var6, double var8, double var10, double var12) |
abstract |
return |
intersect1Dreturn intersect1D(var0, var2, var4, var6, var8, var10, 1.0E-5) |
static |
int |
intersectAABBsint intersectAABBs(@Nonnull Vector3d var0, @Nonnull Box var1, @Nonnull Vector3d var2, @Nonnull Box var3) |
static |
int |
intersectAABBsint intersectAABBs(double var0, double var2, double var4, @Nonnull Box var6, double var7, double var9, double var11, @Nonnull Box var13) |
static |
int |
intersectAABBsint intersectAABBs(double var0, double var2, double var4, @Nonnull Box var6, double var7, double var9, double var11, @Nonnull Box var13, double var14) |
abstract |
return |
intersectAABBsreturn intersectAABBs(var0.x, var0.y, var0.z, var1, var2.x, var2.y, var2.z, var3) |
static |
boolean |
intersectRayAABBboolean intersectRayAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8, @Nonnull Vector2d var9) |
static |
double |
intersectRayAABBdouble intersectRayAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8) |
static |
boolean |
intersectRayAABBboolean intersectRayAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, double var8, double var10, @Nonnull Vector2d var12) |
static |
boolean |
intersectSweptAABBsboolean intersectSweptAABBs(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Box var2, @Nonnull Vector3d var3, @Nonnull Box var4, @Nonnull Vector2d var5, @Nonnull Box var6) |
static |
boolean |
intersectSweptAABBsboolean intersectSweptAABBs(@Nonnull Vector3d var0,
@Nonnull Vector3d var1,
@Nonnull Box var2,
double var3,
double var5,
double var7,
@Nonnull Box var9,
@Nonnull Vector2d var10,
@Nonnull Box var11) |
abstract |
return |
intersectSweptAABBsreturn intersectSweptAABBs(var0, var1, var2, var3.x, var3.y, var3.z, var4, var5, var6) |
static |
boolean |
intersectVectorAABBboolean intersectVectorAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8, @Nonnull Vector2d var9) |
static |
boolean |
intersectVectorAABBboolean intersectVectorAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, double var8, double var10, @Nonnull Vector2d var12) |
abstract |
return |
intersectVectorAABBreturn intersectVectorAABB(var0, var1, var3, var5, var7, var11, var10) |
static |
boolean |
isDisjointboolean isDisjoint(int var0) |
static |
boolean |
isOverlappingboolean isOverlapping(int var0) |
static |
boolean |
isTouchingboolean isTouching(int var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.collision;
class="kw">import com.hypixel.hytale.math.shape.Box;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector2d;
class="kw">import org.joml.Vector3d;
class="kw">public class CollisionMath {
class="kw">public class="kw">static class="kw">final ThreadLocal<Vector2d> MIN_MAX = ThreadLocal.withInitial(Vector2d::new);
class="kw">public class="kw">static class="kw">final int DISJOINT = 0;
class="kw">public class="kw">static class="kw">final int TOUCH_X = 1;
class="kw">public class="kw">static class="kw">final int TOUCH_Y = 2;
class="kw">public class="kw">static class="kw">final int TOUCH_Z = 4;
class="kw">public class="kw">static class="kw">final int TOUCH_ANY = 7;
class="kw">public class="kw">static class="kw">final int OVERLAP_X = 8;
class="kw">public class="kw">static class="kw">final int OVERLAP_Y = 16;
class="kw">public class="kw">static class="kw">final int OVERLAP_Z = 32;
class="kw">public class="kw">static class="kw">final int OVERLAP_ANY = 56;
class="kw">public class="kw">static class="kw">final int OVERLAP_ALL = 56;
class="kw">public CollisionMath() {
throw new IllegalStateException("CollisionMath can't be instantiated");
}
class="kw">public class="kw">static boolean intersectVectorAABB(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8, @Nonnull Vector2d var9
) {
class="kw">return intersectRayAABB(var0, var1, var2, var4, var6, var8, var9) && var9.x <= 1.0;
}
class="kw">public class="kw">static boolean intersectRayAABB(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8, @Nonnull Vector2d var9
) {
var9.x = 0.0;
var9.y = Double.MAX_VALUE;
Vector3d var10 = var8.getMin();
Vector3d var11 = var8.getMax();
class="kw">return intersect1D(var0.x, var1.x(), var2 + var10.x, var2 + var11.x, var9)
&& intersect1D(var0.y, var1.y(), var4 + var10.y, var4 + var11.y, var9)
&& intersect1D(var0.z, var1.z(), var6 + var10.z, var6 + var11.z, var9)
&& var9.x >= 0.0;
}
class="kw">public class="kw">static double intersectRayAABB(@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, @Nonnull Box var8) {
Vector2d var9 = MIN_MAX.get();
class="kw">return intersectRayAABB(var0, var1, var2, var4, var6, var8, var9) ? var9.x : -Double.MAX_VALUE;
}
class="kw">public class="kw">static boolean intersectVectorAABB(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, double var8, double var10, @Nonnull Vector2d var12
) {
class="kw">return intersectRayAABB(var0, var1, var2, var4, var6, var8, var10, var12) && var12.x <= 1.0;
}
class="kw">public class="kw">static boolean intersectRayAABB(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, double var8, double var10, @Nonnull Vector2d var12
) {
var12.x = 0.0;
var12.y = Double.MAX_VALUE;
class="kw">return intersect1D(var0.x, var1.x(), var2 - var8, var2 + var8, var12)
&& intersect1D(var0.y, var1.y(), var4, var4 + var10, var12)
&& intersect1D(var0.z, var1.z(), var6 - var8, var6 + var8, var12)
&& var12.x >= 0.0;
}
class="kw">public class="kw">static boolean intersectSweptAABBs(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Box var2, @Nonnull Vector3d var3, @Nonnull Box var4, @Nonnull Vector2d var5, @Nonnull Box var6
) {
class="kw">return intersectSweptAABBs(var0, var1, var2, var3.x, var3.y, var3.z, var4, var5, var6);
}
class="kw">public class="kw">static boolean intersectSweptAABBs(
@Nonnull Vector3d var0,
@Nonnull Vector3d var1,
@Nonnull Box var2,
double var3,
double var5,
double var7,
@Nonnull Box var9,
@Nonnull Vector2d var10,
@Nonnull Box var11
) {
var11.assign(var9).minkowskiSum(var2);
class="kw">return intersectVectorAABB(var0, var1, var3, var5, var7, var11, var10);
}
class="kw">public class="kw">static boolean intersect1D(double var0, double var2, double var4, double var6, @Nonnull Vector2d var8) {
if (!(Math.abs(var2) < 1.0E-5)) {
double var9 = (var4 - var0) / var2;
double var11 = (var6 - var0) / var2;
if (var11 >= var9) {
if (var9 > var8.x) {
var8.x = var9;
}
if (var11 < var8.y) {
var8.y = var11;
}
} else {
if (var11 > var8.x) {
var8.x = var11;
}
if (var9 < var8.y) {
var8.y = var9;
}
}
class="kw">return var8.x <= var8.y;
} else {
class="kw">return !(var0 < var4) && !(var0 > var6);
}
}
class="kw">public class="kw">static boolean isDisjoint(int var0) {
class="kw">return var0 == 0;
}
class="kw">public class="kw">static boolean isOverlapping(int var0) {
class="kw">return var0 == 56;
}
class="kw">public class="kw">static boolean isTouching(int var0) {
class="kw">return (var0 & 7) != 0;
}
class="kw">public class="kw">static int intersectAABBs(@Nonnull Vector3d var0, @Nonnull Box var1, @Nonnull Vector3d var2, @Nonnull Box var3) {
class="kw">return intersectAABBs(var0.x, var0.y, var0.z, var1, var2.x, var2.y, var2.z, var3);
}
class="kw">public class="kw">static int intersectAABBs(double var0, double var2, double var4, @Nonnull Box var6, double var7, double var9, double var11, @Nonnull Box var13) {
int var14 = intersect1D(var0, var6.min.x, var6.max.x, var7, var13.min.x, var13.max.x);
if (var14 == 0) {
class="kw">return 0;
}
var14 &= 9;
int var15 = intersect1D(var2, var6.min.y, var6.max.y, var9, var13.min.y, var13.max.y);
if (var15 == 0) {
class="kw">return 0;
}
var15 &= 18;
int var16 = intersect1D(var4, var6.min.z, var6.max.z, var11, var13.min.z, var13.max.z);
if (var16 == 0) {
class="kw">return 0;
}
var16 &= 36;
class="kw">return var14 | var15 | var16;
}
class="kw">public class="kw">static int intersect1D(double var0, double var2, double var4, double var6, double var8, double var10) {
class="kw">return intersect1D(var0, var2, var4, var6, var8, var10, 1.0E-5);
}
class="kw">public class="kw">static int intersectAABBs(
double var0, double var2, double var4, @Nonnull Box var6, double var7, double var9, double var11, @Nonnull Box var13, double var14
) {
int var16 = intersect1D(var0, var6.min.x, var6.max.x, var7, var13.min.x, var13.max.x, var14);
if (var16 == 0) {
class="kw">return 0;
}
var16 &= 9;
int var17 = intersect1D(var2, var6.min.y, var6.max.y, var9, var13.min.y, var13.max.y, var14);
if (var17 == 0) {
class="kw">return 0;
}
var17 &= 18;
int var18 = intersect1D(var4, var6.min.z, var6.max.z, var11, var13.min.z, var13.max.z, var14);
if (var18 == 0) {
class="kw">return 0;
}
var18 &= 36;
class="kw">return var16 | var17 | var18;
}
class="kw">public class="kw">static int intersect1D(double var0, double var2, double var4, double var6, double var8, double var10, double var12) {
double var14 = var6 - var0;
double var16 = var2 - var10 - var14;
if (var16 > var12) {
class="kw">return 0;
} else if (var16 > -var12) {
class="kw">return 7;
} else {
var16 = var8 - var4 + var14;
if (var16 > var12) {
class="kw">return 0;
} else {
class="kw">return var16 > -var12 ? 7 : 56;
}
}
}
}