FrustumProjectionProvider class

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

Файл: com/hypixel/hytale/math/hitdetection/projection/FrustumProjectionProvider.java

implements: MatrixProvider

Поля (1)

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

Методы (1)

МодификаторыВозвратСигнатура
if if(this.invalid)

Исходный код

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

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 javax.annotation.Nonnull;
class="kw">import org.joml.Matrix4d;

class="kw">public class FrustumProjectionProvider class="kw">implements MatrixProvider {
   class="kw">public class="kw">static class="kw">final BuilderCodec<FrustumProjectionProvider> CODEC = BuilderCodec.builder(FrustumProjectionProvider.class, FrustumProjectionProvider::new)
      .append(new KeyedCodec<>("Left", Codec.DOUBLE), (var0, var1) -> var0.left = var1, var0 -> var0.left)
      .add()
      .append(new KeyedCodec<>("Right", Codec.DOUBLE), (var0, var1) -> var0.right = var1, var0 -> var0.right)
      .add()
      .append(new KeyedCodec<>("Top", Codec.DOUBLE), (var0, var1) -> var0.top = var1, var0 -> var0.top)
      .add()
      .append(new KeyedCodec<>("Bottom", Codec.DOUBLE), (var0, var1) -> var0.bottom = var1, var0 -> var0.bottom)
      .add()
      .append(new KeyedCodec<>("Near", Codec.DOUBLE), (var0, var1) -> var0.near = var1, var0 -> var0.near)
      .add()
      .append(new KeyedCodec<>("Far", Codec.DOUBLE), (var0, var1) -> var0.far = var1, var0 -> var0.far)
      .add()
      .build();
   class="kw">protected class="kw">final Matrix4d matrix;
   class="kw">protected class="kw">final Matrix4d rotMatrix = new Matrix4d();
   class="kw">protected boolean invalid;
   class="kw">protected double left;
   class="kw">protected double right;
   class="kw">protected double bottom;
   class="kw">protected double top;
   class="kw">protected double near;
   class="kw">protected double far;
   class="kw">protected double yaw;
   class="kw">protected double pitch;
   class="kw">protected double roll;

   class="kw">public FrustumProjectionProvider() {
      this(new Matrix4d(), 0.1, 0.1, 0.1, 0.1, 1.0, 5.0);
   }

   class="kw">public FrustumProjectionProvider(Matrix4d var1, double var2, double var4, double var6, double var8, double var10, double var12) {
      this.matrix = var1;
      this.left = var2;
      this.right = var4;
      this.bottom = var6;
      this.top = var8;
      this.near = var10;
      this.far = var12;
      this.invalid = true;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setLeft(double var1) {
      this.left = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setRight(double var1) {
      this.right = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setBottom(double var1) {
      this.bottom = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setTop(double var1) {
      this.top = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setNear(double var1) {
      this.near = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setFar(double var1) {
      this.far = var1;
      this.invalid = true;
      class="kw">return this;
   }

   @Nonnull
   class="kw">public FrustumProjectionProvider setRotation(double var1, double var3, double var5) {
      this.yaw = var1;
      this.pitch = var3;
      this.roll = var5;
      class="kw">return this;
   }

   @Override
   class="kw">public Matrix4d getMatrix() {
      if (this.invalid) {
         this.matrix.setFrustum(-this.left, this.right, -this.bottom, this.top, this.near, this.far);
         this.matrix.rotate(-this.pitch, 1.0, 0.0, 0.0);
         this.matrix.rotate(-this.yaw, 0.0, 1.0, 0.0);
         this.matrix.rotate(-this.roll, 0.0, 0.0, 1.0);
         this.invalid = false;
      }

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