BiomeTransitionUtil class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/biometransitionutils/BiomeTransitionUtil.java

Поля (13)

МодификаторыТипИмя
final double ORIGIN_REACH
double var10
BiomeDistanceStage.BiomeDistanceEntry var13
BiomeWeights.Entry var14
double var15
BiomeWeights.Entry var17
double var19
double var4
BiomeWeights var6
int var7
var7
double var8
var8

Методы (6)

МодификаторыВозвратСигнатура
static double areaUnderCircleCurvedouble areaUnderCircleCurve(double var0)
static double areaUnderCircleCurvedouble areaUnderCircleCurve(double var0, double var2, double var4)
for for(BiomeWeights.Entry var20 : var6.entries)
abstract for for(int var12 = 0; var12 < var0.entries.size()
if if(var0 < 0.0)
if if(var13.biomeId == var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.stages.BiomeDistanceStage;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BiomeTransitionUtil {
   class="kw">public class="kw">static class="kw">final double ORIGIN_REACH = 1.0;
   class="kw">public class="kw">static class="kw">final double ORIGIN_REACH_HALF = 0.5;
   class="kw">public class="kw">static class="kw">final double QUARTER_PI = Math.PI / 4;

   class="kw">public BiomeTransitionUtil() {
   }

   class="kw">private class="kw">static double areaUnderCircleCurve(double var0) {
      if (var0 < 0.0) {
         class="kw">return 0.0;
      } else {
         class="kw">return var0 > 1.0 ? Math.PI / 4 : 0.5 * (var0 * Math.sqrt(1.0 - var0 * var0) + Math.asin(var0));
      }
   }

   class="kw">private class="kw">static double areaUnderCircleCurve(double var0, double var2, double var4) {
      assert var4 >= 0.0;
      assert var0 <= var2;
      var0 /= var4;
      var2 /= var4;
      class="kw">return var4 * var4 * (areaUnderCircleCurve(var2) - areaUnderCircleCurve(var0));
   }

   @Nonnull
   class="kw">public class="kw">static BiomeWeights createWeights(@Nonnull BiomeDistanceStage.BiomeDistanceEntries var0, int var1, double var2) {
      double var4 = var2 + 0.5;
      BiomeWeights var6 = new BiomeWeights();
      int var7 = 0;
      double var8 = Double.MAX_VALUE;
      double var10 = 0.0;

      for (int var12 = 0; var12 < var0.entries.size(); var12++) {
         BiomeDistanceStage.BiomeDistanceEntry var13 = var0.entries.get(var12);
         BiomeWeights.Entry var14 = new BiomeWeights.Entry();
         if (!(var13.distance_voxelGrid >= var2)) {
            if (var13.biomeId == var1) {
               var7 = var6.entries.size();
            } else if (var13.distance_voxelGrid < var8) {
               var8 = var13.distance_voxelGrid;
            }

            var14.biomeId = var13.biomeId;
            var14.weight = (float)areaUnderCircleCurve(var13.distance_voxelGrid, var4, var4);
            var6.entries.add(var14);
            var10 += var14.weight;
         }
      }

      if (var6.entries.size() > 0) {
         BiomeWeights.Entry var17 = var6.entries.get(var7);
         double var19 = 0.5 + var8;
         double var15 = areaUnderCircleCurve(0.0, var19, var4);
         var17.weight += (float)var15;
         var10 += var15;
      }

      for (BiomeWeights.Entry var20 : var6.entries) {
         var20.weight /= (float)var10;
      }

      class="kw">return var6;
   }
}