DirectionViewProvider class

Пакет: com.hypixel.hytale.math.hitdetection.view

Файл: com/hypixel/hytale/math/hitdetection/view/DirectionViewProvider.java

implements: MatrixProvider

Поля (1)

МодификаторыТипИмя
final BuilderCodec<DirectionViewProvider> CODEC

Методы (3)

МодификаторыВозвратСигнатура
public Vector3d getDirectionVector3d getDirection()
public Vector3d getPositionVector3d getPosition()
if if(this.invalid)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.math.hitdetection.view;

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.math.hitdetection.MatrixProvider;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Matrix4d;
class="kw">import org.joml.Vector3d;

class="kw">public class DirectionViewProvider class="kw">implements MatrixProvider {
   class="kw">public class="kw">static class="kw">final BuilderCodec<DirectionViewProvider> CODEC = BuilderCodec.builder(DirectionViewProvider.class, DirectionViewProvider::new)
      .append(new KeyedCodec<>("YawOffset", Codec.DOUBLE), (var0, var1) -> var0.yawOffset = var1, var0 -> var0.yawOffset)
      .add()
      .append(new KeyedCodec<>("PitchOffset", Codec.DOUBLE), (var0, var1) -> var0.pitchOffset = var1, var0 -> var0.pitchOffset)
      .add()
      .append(new KeyedCodec<>("Up", Vector3dUtil.CODEC), (var0, var1) -> var0.up.set(var1), var0 -> var0.up)
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final Vector3d DEFAULT_UP = new Vector3d(0.0, 1.0, 0.0);
   class="kw">protected class="kw">final Matrix4d matrix;
   class="kw">protected class="kw">final Vector3d position;
   class="kw">protected class="kw">final Vector3d direction;
   class="kw">protected class="kw">final Vector3d up;
   class="kw">protected double yaw;
   class="kw">protected double pitch;
   class="kw">protected double yawOffset;
   class="kw">protected double pitchOffset;
   class="kw">protected boolean invalid;

   class="kw">public DirectionViewProvider() {
      this(new Matrix4d(), new Vector3d(), new Vector3d(), new Vector3d(DEFAULT_UP));
   }

   class="kw">public DirectionViewProvider(Matrix4d var1, Vector3d var2, Vector3d var3, Vector3d var4) {
      this.matrix = var1;
      this.position = var2;
      this.direction = var3;
      this.up = var4;
      this.invalid = true;
   }

   class="kw">public Vector3d getPosition() {
      class="kw">return this.position;
   }

   @Nonnull
   class="kw">public DirectionViewProvider setPosition(@Nonnull Vector3d var1) {
      class="kw">return this.setPosition(var1, 0.0, 0.0, 0.0);
   }

   @Nonnull
   class="kw">public DirectionViewProvider setPosition(@Nonnull Vector3d var1, double var2, double var4, double var6) {
      class="kw">return this.setPosition(var1.x, var1.y, var1.z, var2, var4, var6);
   }

   @Nonnull
   class="kw">public DirectionViewProvider setPosition(double var1, double var3, double var5) {
      this.position.set(var1, var3, var5);
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public DirectionViewProvider setPosition(double var1, double var3, double var5, double var7, double var9, double var11) {
      class="kw">return this.setPosition(var1 + var7, var3 + var9, var5 + var11);
   }

   class="kw">public Vector3d getDirection() {
      class="kw">return this.direction;
   }

   @Nonnull
   class="kw">public DirectionViewProvider setDirection(@Nonnull Vector3d var1) {
      class="kw">return this.setDirection(var1.x, var1.y, var1.z);
   }

   @Nonnull
   class="kw">public DirectionViewProvider setDirection(double var1, double var3) {
      var1 += this.yawOffset;
      var3 += this.pitchOffset;
      Vector3dUtil.setYawPitch(var1, var3, this.direction);
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public DirectionViewProvider setDirection(double var1, double var3, double var5) {
      this.direction.set(var1, var3, var5);
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public DirectionViewProvider setUp(double var1, double var3, double var5) {
      this.up.set(var1, var3, var5);
      this.invalid = true;
      class="kw">return this;
   }

   @Override
   class="kw">public Matrix4d getMatrix() {
      if (this.invalid) {
         this.matrix
            .setLookAlong(this.direction.x, this.direction.y, this.direction.z, this.up.x, this.up.y, this.up.z)
            .translate(-this.position.x, -this.position.y, -this.position.z);
         this.invalid = false;
      }

      class="kw">return this.matrix;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "DirectionViewProvider{up="
         + this.up
         + ", yaw="
         + this.yaw
         + ", pitch="
         + this.pitch
         + ", yawOffset="
         + this.yawOffset
         + ", pitchOffset="
         + this.pitchOffset
         + "}";
   }
}