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;
         }
      }
   }
}