GradientMode enum

Пакет: com.hypixel.hytale.procedurallib.property

Файл: com/hypixel/hytale/procedurallib/property/GradientNoiseProperty.java

Поля (1)

МодификаторыТипИмя
MAGNITUDE, ANGLE, ANGLE_ABS

Исходный код

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

class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;

class="kw">public class GradientNoiseProperty class="kw">implements NoiseProperty {
   class="kw">protected class="kw">final NoiseProperty noise;
   class="kw">protected class="kw">final GradientNoiseProperty.GradientMode mode;
   class="kw">protected class="kw">final double distance;
   class="kw">protected class="kw">final double invNormalize;

   class="kw">public GradientNoiseProperty(NoiseProperty var1, GradientNoiseProperty.GradientMode var2, double var3, double var5) {
      this.noise = var1;
      this.mode = var2;
      this.distance = var3;
      this.invNormalize = 1.0 / var3 / var5;
   }

   @Override
   class="kw">public double get(int var1, double var2, double var4) {
      double var6 = this.noise.get(var1, var2, var4);
      double var8 = this.noise.get(var1, var2, var4 + this.distance);
      double var10 = this.noise.get(var1, var2 + this.distance, var4);
      double var12 = var10 - var6;
      double var14 = var8 - var6;

      class="kw">return class="kw">switch (this.mode) {
         case MAGNITUDE -> getMagnitude(var12, var14, this.invNormalize);
         case ANGLE -> getAngle(var12, var14);
         case ANGLE_ABS -> getAbsAngle(var12, var14);
      };
   }

   @Override
   class="kw">public double get(int var1, double var2, double var4, double var6) {
      throw new UnsupportedOperationException();
   }

   class="kw">protected class="kw">static double getAngle(double var0, double var2) {
      float var4 = TrigMathUtil.atan2(var2, var0);
      var4 = (var4 + (float) Math.PI) / (float) (Math.PI * 2);
      class="kw">return convertRange(var4);
   }

   class="kw">protected class="kw">static double getAbsAngle(double var0, double var2) {
      float var4 = TrigMathUtil.atan2(var2, var0);
      class="kw">return Math.abs(var4) / (float) Math.PI;
   }

   class="kw">protected class="kw">static double getMagnitude(double var0, double var2, double var4) {
      double var6 = MathUtil.length(var0, var2);
      class="kw">return MathUtil.clamp(var6 * var4, 0.0, 1.0);
   }

   class="kw">protected class="kw">static float convertRange(float var0) {
      var0 += 0.125F;
      class="kw">return var0 > 1.0F ? var0 - 1.0F : var0;
   }

   class="kw">public enum GradientMode {
      MAGNITUDE,
      ANGLE,
      ANGLE_ABS;

      GradientMode() {
      }
   }
}