FieldFunctionPositionProvider class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.positionproviders

Файл: com/hypixel/hytale/builtin/hytalegenerator/positionproviders/FieldFunctionPositionProvider.java

extends: PositionProvider

Поля (5)

МодификаторыТипИмя
double max
double min
return
double var3
FieldFunctionPositionProvider.Delimiter var5

Методы (5)

МодификаторыВозвратСигнатура
private Delimiterprivate Delimiter()
public void acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2)
public void addDelimitervoid addDelimiter(double var1, double var3)
for for(FieldFunctionPositionProvider.Delimiter var6 : FieldFunctionPositionProvider.this.delimiters)
boolean isInsideboolean isInside(double var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Control;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.pipe.Pipe;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class FieldFunctionPositionProvider class="kw">extends PositionProvider {
   @Nonnull
   class="kw">private class="kw">final Density field;
   @Nonnull
   class="kw">private class="kw">final List<FieldFunctionPositionProvider.Delimiter> delimiters;
   @Nonnull
   class="kw">private class="kw">final PositionProvider positionProvider;
   @Nonnull
   class="kw">private class="kw">final PositionProvider.Context rChildContext;
   @Nonnull
   class="kw">private class="kw">final Density.Context rDensityContext;
   @Nonnull
   class="kw">private PositionProvider.Context rContext;
   @Nonnull
   class="kw">private class="kw">final Pipe.One<Vector3d> rChildPipe = new Pipe.One<Vector3d>() {
      class="kw">public void accept(@Nonnull Vector3d var1, @Nonnull Control var2) {
         FieldFunctionPositionProvider.this.rDensityContext.position = var1;
         FieldFunctionPositionProvider.this.rDensityContext.positionsAnchor = FieldFunctionPositionProvider.this.rContext.anchor;
         FieldFunctionPositionProvider.this.rDensityContext.densityAnchor = FieldFunctionPositionProvider.this.rContext.anchor;
         FieldFunctionPositionProvider.this.rDensityContext.graphNode = FieldFunctionPositionProvider.this.rContext.graphNode;
         double var3 = FieldFunctionPositionProvider.this.field.process(FieldFunctionPositionProvider.this.rDensityContext);

         for (FieldFunctionPositionProvider.Delimiter var6 : FieldFunctionPositionProvider.this.delimiters) {
            if (var6.isInside(var3)) {
               FieldFunctionPositionProvider.this.rContext.pipe.accept(var1, var2);
               class="kw">return;
            }
         }
      }
   };

   class="kw">public FieldFunctionPositionProvider(@Nonnull Density var1, @Nonnull PositionProvider var2) {
      this.field = var1;
      this.positionProvider = var2;
      this.delimiters = new ArrayList<>();
      this.rChildContext = new PositionProvider.Context();
      this.rDensityContext = new Density.Context();
      this.rContext = new PositionProvider.Context();
   }

   @Override
   class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
      this.rContext = var1;
      this.rChildContext.assign(var1);
      this.rChildContext.pipe = this.rChildPipe;
      this.positionProvider.generate(this.rChildContext);
      this.rChildContext.clearReferences();
      this.rDensityContext.clearReferences();
      this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
   }

   class="kw">public void addDelimiter(double var1, double var3) {
      FieldFunctionPositionProvider.Delimiter var5 = new FieldFunctionPositionProvider.Delimiter();
      var5.min = var1;
      var5.max = var3;
      this.delimiters.add(var5);
   }

   class="kw">private class="kw">static class Delimiter {
      double min;
      double max;

      class="kw">private Delimiter() {
      }

      boolean isInside(double var1) {
         class="kw">return var1 >= this.min && var1 < this.max;
      }
   }
}