PlaneProjectorVectorProvider class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.vectorproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/vectorproviders/PlaneProjectorVectorProvider.java
extends: VectorProvider
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var3 |
|
double |
var5 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var3 == 0.0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.vectorproviders;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class PlaneProjectorVectorProvider class="kw">extends VectorProvider {
@Nonnull
class="kw">private class="kw">final VectorProvider vectorProvider;
@Nonnull
class="kw">private class="kw">final VectorProvider planeA;
@Nonnull
class="kw">private class="kw">final VectorProvider planeB;
@Nonnull
class="kw">private class="kw">final Vector3d rVector;
@Nonnull
class="kw">private class="kw">final Vector3d rPlaneA;
@Nonnull
class="kw">private class="kw">final Vector3d rPlaneB;
@Nonnull
class="kw">private class="kw">final Vector3d rNormal;
class="kw">public PlaneProjectorVectorProvider(@Nonnull VectorProvider var1, @Nonnull VectorProvider var2, @Nonnull VectorProvider var3) {
this.vectorProvider = var1;
this.planeA = var2;
this.planeB = var3;
this.rVector = new Vector3d();
this.rPlaneA = new Vector3d();
this.rPlaneB = new Vector3d();
this.rNormal = new Vector3d();
}
@Override
class="kw">public void process(@Nonnull VectorProvider.Context var1, @Nonnull Vector3d var2) {
this.vectorProvider.process(var1, this.rVector);
this.planeA.process(var1, this.rPlaneA);
this.planeB.process(var1, this.rPlaneB);
this.rPlaneA.cross(this.rPlaneB, this.rNormal);
double var3 = this.rNormal.lengthSquared();
if (var3 == 0.0) {
var2.set(this.rVector);
} else {
double var5 = this.rVector.dot(this.rNormal);
var2.set(this.rVector).fma(-var5 / var3, this.rNormal);
}
}
}