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];
}
}