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