ClustersPositionProvider class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/ClustersPositionProvider.java
extends: PositionProvider
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public void |
acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2) |
|
public void |
acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2) |
|
|
if if(var2.stop) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class ClustersPositionProvider class="kw">extends PositionProvider {
@Nonnull
class="kw">private class="kw">final PositionProvider clusterPositions;
@Nonnull
class="kw">private class="kw">final PositionProvider distributorPositions;
@Nonnull
class="kw">private class="kw">final Bounds3d clusterBounds;
class="kw">private class="kw">final Bounds3d clusterBoundsFlipped;
@Nonnull
class="kw">private class="kw">final Bounds3d rDistributionBounds;
@Nonnull
class="kw">private class="kw">final PositionProvider.Context rDistributionContext;
@Nonnull
class="kw">private class="kw">final Bounds3d rClusterBounds;
@Nonnull
class="kw">private class="kw">final PositionProvider.Context rClusterContext;
@Nonnull
class="kw">private PositionProvider.Context rContext;
@Nonnull
class="kw">private Control rControl;
@Nonnull
class="kw">private class="kw">final Pipe.One<Vector3d> rDistributionPipe = new Pipe.One<Vector3d>() {
class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
ClustersPositionProvider.this.rClusterBounds.assign(ClustersPositionProvider.this.clusterBounds);
ClustersPositionProvider.this.rClusterBounds.offset(var1);
ClustersPositionProvider.this.rClusterBounds.intersect(ClustersPositionProvider.this.rContext.bounds);
ClustersPositionProvider.this.rClusterContext.assign(ClustersPositionProvider.this.rContext);
ClustersPositionProvider.this.rClusterContext.bounds = ClustersPositionProvider.this.rClusterBounds;
ClustersPositionProvider.this.rClusterContext.anchor = var1;
ClustersPositionProvider.this.rControl = var2;
ClustersPositionProvider.this.rClusterContext.pipe = ClustersPositionProvider.this.rClusterPipe;
ClustersPositionProvider.this.clusterPositions.generate(ClustersPositionProvider.this.rClusterContext);
}
};
@Nonnull
class="kw">private class="kw">final Pipe.One<Vector3d> rClusterPipe = new Pipe.One<Vector3d>() {
class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
if (var2.stop) {
ClustersPositionProvider.this.rControl.stop = true;
} else {
ClustersPositionProvider.this.rContext.pipe.accept(var1, var2);
}
}
};
class="kw">public ClustersPositionProvider(@Nonnull PositionProvider var1, @Nonnull PositionProvider var2, @Nonnull Bounds3d var3) {
this.clusterPositions = var1;
this.distributorPositions = var2;
this.clusterBounds = var3.clone();
this.clusterBoundsFlipped = this.clusterBounds.clone();
this.clusterBoundsFlipped.flipOnOriginPoint();
this.rDistributionBounds = new Bounds3d();
this.rDistributionContext = new PositionProvider.Context();
this.rClusterBounds = new Bounds3d();
this.rClusterContext = new PositionProvider.Context();
this.rContext = new PositionProvider.Context();
this.rControl = new Control();
}
@Override
class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
this.rContext = var1;
this.rDistributionBounds.assign(var1.bounds);
this.rDistributionBounds.stack(this.clusterBoundsFlipped);
this.rDistributionContext.assign(var1);
this.rDistributionContext.bounds = this.rDistributionBounds;
this.rDistributionContext.pipe = this.rDistributionPipe;
this.distributorPositions.generate(this.rDistributionContext);
this.rDistributionContext.clearReferences();
this.rClusterContext.clearReferences();
this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
this.rControl.reset();
}
}