Jitter2dPositionProvider class

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

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

extends: PositionProvider

Поля (4)

МодификаторыТипИмя
final float PI
int var3
double var4
double var6

Методы (1)

МодификаторыВозвратСигнатура
public void acceptpublic void accept(@Nonnull Vector3d var1, @Nonnull Control var2)

Исходный код

Показать/скрыть
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 com.hypixel.hytale.builtin.hytalegenerator.rng.RngField;
class="kw">import com.hypixel.hytale.math.util.FastRandom;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class Jitter2dPositionProvider class="kw">extends PositionProvider {
   class="kw">private class="kw">static class="kw">final float PI = (float) Math.PI;
   class="kw">private class="kw">static class="kw">final double SEED_GENERATOR_RESOLUTION = 10.0;
   class="kw">private class="kw">final double magnitude;
   @Nonnull
   class="kw">private class="kw">final PositionProvider positionProvider;
   @Nonnull
   class="kw">private class="kw">final RngField rngField;
   @Nonnull
   class="kw">private class="kw">final FastRandom random;
   @Nonnull
   class="kw">private class="kw">final Vector3d rVector;
   @Nonnull
   class="kw">private class="kw">final Bounds3d rBounds;
   @Nonnull
   class="kw">private class="kw">final PositionProvider.Context rChildContext;
   @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) {
         int var3 = Jitter2dPositionProvider.this.rngField.get(var1.x, var1.y, var1.z);
         Jitter2dPositionProvider.this.random.setSeed(var3);
         double var4 = Jitter2dPositionProvider.this.magnitude * Math.sqrt(Jitter2dPositionProvider.this.random.nextDouble());
         double var6 = Jitter2dPositionProvider.this.random.nextDouble() * 2.0 * Math.PI;
         Jitter2dPositionProvider.this.rVector.set(var4 * Math.cos(var6), 0.0, var4 * Math.sin(var6));
         var1.add(Jitter2dPositionProvider.this.rVector);
         if (Jitter2dPositionProvider.this.rContext.bounds.contains(var1)) {
            Jitter2dPositionProvider.this.rContext.pipe.accept(var1, var2);
         }
      }
   };

   class="kw">public Jitter2dPositionProvider(double var1, int var3, @Nonnull PositionProvider var4) {
      this.magnitude = Math.abs(var1);
      this.positionProvider = var4;
      this.rngField = new RngField(var3);
      this.random = new FastRandom();
      this.rVector = new Vector3d();
      this.rBounds = new Bounds3d();
      this.rChildContext = new PositionProvider.Context();
      this.rContext = new PositionProvider.Context();
   }

   @Override
   class="kw">public void generate(@Nonnull PositionProvider.Context var1) {
      this.rContext = var1;
      this.rBounds.assign(var1.bounds);
      this.rBounds.min.add(-this.magnitude, 0.0, -this.magnitude);
      this.rBounds.max.add(this.magnitude, 0.0, this.magnitude);
      this.rChildContext.assign(var1);
      this.rChildContext.bounds = this.rBounds;
      this.rChildContext.pipe = this.rChildPipe;
      this.positionProvider.generate(this.rChildContext);
      this.rChildContext.clearReferences();
      this.rContext = PositionProvider.Context.DEFAULT_INSTANCE;
   }
}