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