Rotation enum

Пакет: com.hypixel.hytale.server.core.asset.type.blocktype.config

Файл: com/hypixel/hytale/server/core/asset/type/blocktype/config/Rotation.java

implements: NetworkSerializable<com.hypixel.hytale.protocol.Rotation>

Поля (8)

МодификаторыТипИмя
final Rotation[] VALUES
var0
var0
Vector3i var3
Vector3i var4
Vector3f var4
Vector3d var4
Rotation3f var4

Методы (34)

МодификаторыВозвратСигнатура
static void applyRotationTovoid applyRotationTo(@Nonnull Vector3i var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
static void applyRotationTovoid applyRotationTo(@Nonnull Vector3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
static void applyRotationTovoid applyRotationTo(@Nonnull Rotation3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
static void applyRotationTovoid applyRotationTo(@Nonnull Vector3d var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
abstract applyRotationTo applyRotationTo(var4, var1, var2, var3)
static Rotation closestOfDegreesRotation closestOfDegrees(float var0)
public Vector3ic getAxisDirectionVector3ic getAxisDirection()
public Axis getAxisOfAlignmentAxis getAxisOfAlignment()
public int getDegreesint getDegrees()
public double getRadiansdouble getRadians()
if if(var0 < 0.0F)
public int rotateXint rotateX(int var1)
public int rotateYint rotateY(int var1)
public int rotateZint rotateZ(int var1)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(this)
return switchreturn switch(var0)
return switchreturn switch(var0)
return switchreturn switch(this)
public Rotation toInverseRotation toInverse()
public com.hypixel.hytale.protocol.Rotation toPacketcom.hypixel.hytale.protocol.Rotation toPacket()
static void undoRotationTovoid undoRotationTo(@Nonnull Vector3i var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
static void undoRotationTovoid undoRotationTo(@Nonnull Vector3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
static void undoRotationTovoid undoRotationTo(@Nonnull Vector3d var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.blocktype.config;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
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.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Quaterniond;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3dc;
class="kw">import org.joml.Vector3f;
class="kw">import org.joml.Vector3fc;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public enum Rotation class="kw">implements NetworkSerializable<com.hypixel.hytale.protocol.Rotation> {
   None(0, com.hypixel.hytale.protocol.Rotation.None, Axis.Z, Vector3iUtil.NEG_Z),
   Ninety(90, com.hypixel.hytale.protocol.Rotation.Ninety, Axis.X, Vector3iUtil.NEG_X),
   OneEighty(180, com.hypixel.hytale.protocol.Rotation.OneEighty, Axis.Z, Vector3iUtil.POS_Z),
   TwoSeventy(270, com.hypixel.hytale.protocol.Rotation.TwoSeventy, Axis.X, Vector3iUtil.POS_X);

   class="kw">public class="kw">static class="kw">final Rotation[] VALUES = values();
   class="kw">public class="kw">static class="kw">final Rotation[] NORMAL = new Rotation[]{None, Ninety, OneEighty, TwoSeventy};
   class="kw">public class="kw">static class="kw">final Codec<Rotation> CODEC = new EnumCodec<>(Rotation.class);
   class="kw">private class="kw">final int degrees;
   class="kw">private class="kw">final com.hypixel.hytale.protocol.Rotation packet;
   class="kw">private class="kw">final Axis axisOfAlignment;
   class="kw">private class="kw">final Vector3ic axisDirection;

   Rotation(int nullxx, com.hypixel.hytale.protocol.Rotation nullxxx, Axis nullxxxx, Vector3ic nullxxxxx) {
      this.degrees = nullxx;
      this.packet = nullxxx;
      this.axisOfAlignment = nullxxxx;
      this.axisDirection = nullxxxxx;
   }

   class="kw">public com.hypixel.hytale.protocol.Rotation toPacket() {
      class="kw">return this.packet;
   }

   class="kw">public int getDegrees() {
      class="kw">return this.degrees;
   }

   class="kw">public double getRadians() {
      class="kw">return Math.toRadians(this.degrees);
   }

   class="kw">public Axis getAxisOfAlignment() {
      class="kw">return this.axisOfAlignment;
   }

   class="kw">public Vector3ic getAxisDirection() {
      class="kw">return this.axisDirection;
   }

   @Nonnull
   class="kw">public Rotation flip() {
      class="kw">return this.add(OneEighty);
   }

   @Nonnull
   class="kw">public Rotation flip(Axis var1) {
      class="kw">return this.axisOfAlignment != var1 ? this : this.flip();
   }

   @Nonnull
   class="kw">public Rotation subtract(@Nullable Rotation var1) {
      class="kw">return var1 == null ? this : ofDegrees(this.degrees - var1.degrees);
   }

   @Nonnull
   class="kw">public Rotation add(@Nullable Rotation var1) {
      class="kw">return var1 == null ? this : ofDegrees(this.degrees + var1.degrees);
   }

   @Nonnull
   class="kw">public Vector3i rotatePitch(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return this.rotateX(var1, var2);
   }

   @Nonnull
   class="kw">public Vector3f rotatePitch(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return this.rotateX(var1, var2);
   }

   class="kw">public int rotateX(int var1) {
      class="kw">return class="kw">switch (this) {
         case None -> var1;
         case Ninety -> FillerBlockUtil.pack(FillerBlockUtil.unpackX(var1), -FillerBlockUtil.unpackZ(var1), FillerBlockUtil.unpackY(var1));
         case OneEighty -> FillerBlockUtil.pack(FillerBlockUtil.unpackX(var1), -FillerBlockUtil.unpackY(var1), -FillerBlockUtil.unpackZ(var1));
         case TwoSeventy -> FillerBlockUtil.pack(FillerBlockUtil.unpackX(var1), FillerBlockUtil.unpackZ(var1), -FillerBlockUtil.unpackY(var1));
      };
   }

   @Nonnull
   class="kw">public Vector3i rotateX(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.x, -var1.z, var1.y);
         case OneEighty -> var2.set(var1.x, -var1.y, -var1.z);
         case TwoSeventy -> var2.set(var1.x, var1.z, -var1.y);
      };
   }

   @Nonnull
   class="kw">public Vector3f rotateX(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.x, -var1.z, var1.y);
         case OneEighty -> var2.set(var1.x, -var1.y, -var1.z);
         case TwoSeventy -> var2.set(var1.x, var1.z, -var1.y);
      };
   }

   @Nonnull
   class="kw">public Vector3d rotateX(@Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.x, -var1.z, var1.y);
         case OneEighty -> var2.set(var1.x, -var1.y, -var1.z);
         case TwoSeventy -> var2.set(var1.x, var1.z, -var1.y);
      };
   }

   @Nonnull
   class="kw">public Vector3i rotateYaw(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return this.rotateY(var1, var2);
   }

   @Nonnull
   class="kw">public Vector3f rotateYaw(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return this.rotateY(var1, var2);
   }

   class="kw">public int rotateY(int var1) {
      class="kw">return class="kw">switch (this) {
         case None -> var1;
         case Ninety -> FillerBlockUtil.pack(FillerBlockUtil.unpackZ(var1), FillerBlockUtil.unpackY(var1), -FillerBlockUtil.unpackX(var1));
         case OneEighty -> FillerBlockUtil.pack(-FillerBlockUtil.unpackX(var1), FillerBlockUtil.unpackY(var1), -FillerBlockUtil.unpackZ(var1));
         case TwoSeventy -> FillerBlockUtil.pack(-FillerBlockUtil.unpackZ(var1), FillerBlockUtil.unpackY(var1), FillerBlockUtil.unpackX(var1));
      };
   }

   @Nonnull
   class="kw">public Vector3i rotateY(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.z, var1.y, -var1.x);
         case OneEighty -> var2.set(-var1.x, var1.y, -var1.z);
         case TwoSeventy -> var2.set(-var1.z, var1.y, var1.x);
      };
   }

   @Nonnull
   class="kw">public Vector3f rotateY(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.z, var1.y, -var1.x);
         case OneEighty -> var2.set(-var1.x, var1.y, -var1.z);
         case TwoSeventy -> var2.set(-var1.z, var1.y, var1.x);
      };
   }

   @Nonnull
   class="kw">public Vector3d rotateY(@Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(var1.z, var1.y, -var1.x);
         case OneEighty -> var2.set(-var1.x, var1.y, -var1.z);
         case TwoSeventy -> var2.set(-var1.z, var1.y, var1.x);
      };
   }

   @Nonnull
   class="kw">private Vector3i rotateRoll(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return this.rotateZ(var1, var2);
   }

   @Nonnull
   class="kw">private Vector3f rotateRoll(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return this.rotateZ(var1, var2);
   }

   class="kw">public int rotateZ(int var1) {
      class="kw">return class="kw">switch (this) {
         case None -> var1;
         case Ninety -> FillerBlockUtil.pack(-FillerBlockUtil.unpackY(var1), FillerBlockUtil.unpackX(var1), FillerBlockUtil.unpackZ(var1));
         case OneEighty -> FillerBlockUtil.pack(-FillerBlockUtil.unpackX(var1), -FillerBlockUtil.unpackY(var1), FillerBlockUtil.unpackZ(var1));
         case TwoSeventy -> FillerBlockUtil.pack(FillerBlockUtil.unpackY(var1), -FillerBlockUtil.unpackX(var1), FillerBlockUtil.unpackZ(var1));
      };
   }

   @Nonnull
   class="kw">public Vector3i rotateZ(@Nonnull Vector3i var1, @Nonnull Vector3i var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(-var1.y, var1.x, var1.z);
         case OneEighty -> var2.set(-var1.x, -var1.y, var1.z);
         case TwoSeventy -> var2.set(var1.y, -var1.x, var1.z);
      };
   }

   @Nonnull
   class="kw">public Vector3f rotateZ(@Nonnull Vector3f var1, @Nonnull Vector3f var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(-var1.y, var1.x, var1.z);
         case OneEighty -> var2.set(-var1.x, -var1.y, var1.z);
         case TwoSeventy -> var2.set(var1.y, -var1.x, var1.z);
      };
   }

   @Nonnull
   class="kw">public Vector3d rotateZ(@Nonnull Vector3d var1, @Nonnull Vector3d var2) {
      class="kw">return class="kw">switch (this) {
         case None -> var2.set(var1);
         case Ninety -> var2.set(-var1.y, var1.x, var1.z);
         case OneEighty -> var2.set(-var1.x, -var1.y, var1.z);
         case TwoSeventy -> var2.set(var1.y, -var1.x, var1.z);
      };
   }

   @Nonnull
   class="kw">public class="kw">static Rotation ofDegrees(int var0) {
      var0 = Math.floorMod(var0, 360);

      class="kw">return class="kw">switch (var0) {
         case 0 -> None;
         case 90 -> Ninety;
         case 180 -> OneEighty;
         case 270 -> TwoSeventy;
         class="kw">default -> throw new IllegalArgumentException("Rotation degrees value " + var0 + " cannot be mapped to type Rotation");
      };
   }

   class="kw">public class="kw">static Rotation closestOfDegrees(float var0) {
      if (var0 < 0.0F) {
         var0 = var0 % 360.0F + 360.0F;
      }

      class="kw">return VALUES[MathUtil.fastRound(var0 / 90.0F) % VALUES.length];
   }

   @Nonnull
   class="kw">public class="kw">static Rotation valueOf(@Nonnull com.hypixel.hytale.protocol.Rotation var0) {
      class="kw">return class="kw">switch (var0) {
         case None -> None;
         case Ninety -> Ninety;
         case OneEighty -> OneEighty;
         case TwoSeventy -> TwoSeventy;
      };
   }

   @Nonnull
   class="kw">public class="kw">static Vector3i rotate(@Nonnull Vector3ic var0, @Nonnull Rotation var1, @Nonnull Rotation var2) {
      Vector3i var3 = new Vector3i(var0);
      var2.rotatePitch(var3, var3);
      var1.rotateYaw(var3, var3);
      class="kw">return var3;
   }

   @Nonnull
   class="kw">public class="kw">static Vector3i rotate(@Nonnull Vector3ic var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      Vector3i var4 = new Vector3i(var0);
      applyRotationTo(var4, var1, var2, var3);
      class="kw">return var4;
   }

   @Nonnull
   class="kw">public class="kw">static Vector3f rotate(@Nonnull Vector3fc var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      Vector3f var4 = new Vector3f(var0);
      var3.rotateZ(var4, var4);
      var2.rotateX(var4, var4);
      var1.rotateY(var4, var4);
      class="kw">return var4;
   }

   @Nonnull
   class="kw">public class="kw">static Vector3d rotate(@Nonnull Vector3dc var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      Vector3d var4 = new Vector3d(var0);
      var3.rotateZ(var4, var4);
      var2.rotateX(var4, var4);
      var1.rotateY(var4, var4);
      class="kw">return var4;
   }

   class="kw">public class="kw">static void applyRotationTo(@Nonnull Vector3i var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var3.rotateZ(var0, var0);
      var2.rotateX(var0, var0);
      var1.rotateY(var0, var0);
   }

   class="kw">public class="kw">static void applyRotationTo(@Nonnull Vector3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var3.rotateZ(var0, var0);
      var2.rotateX(var0, var0);
      var1.rotateY(var0, var0);
   }

   class="kw">public class="kw">static void applyRotationTo(@Nonnull Rotation3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      Rotation3f var4 = new Rotation3f((float)var2.getRadians(), (float)var1.getRadians(), (float)var3.getRadians());
      var4.mul(var0.getQuaternion(new Quaterniond()), var0);
   }

   class="kw">public class="kw">static void applyRotationTo(@Nonnull Vector3d var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var3.rotateZ(var0, var0);
      var2.rotateX(var0, var0);
      var1.rotateY(var0, var0);
   }

   class="kw">public class="kw">static void undoRotationTo(@Nonnull Vector3i var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var1.toInverse().rotateY(var0, var0);
      var2.toInverse().rotateX(var0, var0);
      var3.toInverse().rotateZ(var0, var0);
   }

   class="kw">public class="kw">static void undoRotationTo(@Nonnull Vector3f var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var1.toInverse().rotateY(var0, var0);
      var2.toInverse().rotateX(var0, var0);
      var3.toInverse().rotateZ(var0, var0);
   }

   class="kw">public class="kw">static void undoRotationTo(@Nonnull Vector3d var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      var1.toInverse().rotateY(var0, var0);
      var2.toInverse().rotateX(var0, var0);
      var3.toInverse().rotateZ(var0, var0);
   }

   class="kw">public Rotation toInverse() {
      class="kw">return class="kw">switch (this) {
         case None -> None;
         case Ninety -> TwoSeventy;
         case OneEighty -> OneEighty;
         case TwoSeventy -> Ninety;
      };
   }
}