MultiCacheDensity class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/density/MultiCacheDensity.java

extends: Density

Поля (15)

МодификаторыТипИмя
final int ENTRY_SIZE
double var11
double var13
double var15
double var19
int var2
int var3
var3
var3
int var4
var4
var4
double var5
double var7
double var9

Методы (3)

МодификаторыВозвратСигнатура
if if(this.hasValue[var3] && var5 == var11 && var7 == var13 && var9 == var15)
if if(var3 >= this.hasValue.length)
if if(this.oldestEntryIndex >= this.hasValue.length)

Исходный код

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

class="kw">import javax.annotation.Nonnull;

class="kw">public class MultiCacheDensity class="kw">extends Density {
   class="kw">private class="kw">static class="kw">final int ENTRY_SIZE = 4;
   class="kw">private class="kw">static class="kw">final int X_INDEX_OFFSET = 0;
   class="kw">private class="kw">static class="kw">final int Y_INDEX_OFFSET = 1;
   class="kw">private class="kw">static class="kw">final int Z_INDEX_OFFSET = 2;
   class="kw">private class="kw">static class="kw">final int VALUE_INDEX_OFFSET = 3;
   @Nonnull
   class="kw">private class="kw">final double[] entries;
   @Nonnull
   class="kw">private class="kw">final boolean[] hasValue;
   class="kw">private int oldestEntryIndex;
   class="kw">private int previouslyAccessedEntryIndex;
   @Nonnull
   class="kw">private Density input;

   class="kw">public MultiCacheDensity(@Nonnull Density var1, int var2) {
      assert var2 >= 0;
      this.input = var1;
      this.entries = new double[var2 * 4];
      this.hasValue = new boolean[var2];
      this.oldestEntryIndex = 0;
      this.previouslyAccessedEntryIndex = 0;
   }

   @Override
   class="kw">public double process(@Nonnull Density.Context var1) {
      int var2 = this.previouslyAccessedEntryIndex;
      int var3 = var2;
      int var4 = var2 * 4;
      double var5 = var1.position.x;
      double var7 = var1.position.y;
      double var9 = var1.position.z;

      do {
         double var11 = this.entries[var4 + 0];
         double var13 = this.entries[var4 + 1];
         double var15 = this.entries[var4 + 2];
         if (this.hasValue[var3] && var5 == var11 && var7 == var13 && var9 == var15) {
            this.previouslyAccessedEntryIndex = var3;
            class="kw">return this.entries[var4 + 3];
         }

         var3++;
         var4 += 4;
         if (var3 >= this.hasValue.length) {
            var3 = 0;
            var4 = 0;
         }
      } while (var3 != var2);

      double var19 = this.input.process(var1);
      var3 = this.oldestEntryIndex;
      var4 = this.oldestEntryIndex * 4;
      this.previouslyAccessedEntryIndex = var3;
      this.entries[var4 + 0] = var5;
      this.entries[var4 + 1] = var7;
      this.entries[var4 + 2] = var9;
      this.entries[var4 + 3] = var19;
      this.hasValue[var3] = true;
      this.oldestEntryIndex++;
      if (this.oldestEntryIndex >= this.hasValue.length) {
         this.oldestEntryIndex = 0;
      }

      class="kw">return var19;
   }

   @Override
   class="kw">public void setInputs(@Nonnull Density[] var1) {
      assert var1.length != 0;
      assert var1[0] != null;
      this.input = var1[0];
   }
}