TintStage class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.engine.stages
Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/stages/TintStage.java
implements: Stage
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Map |
var1 |
|
Vector3i |
var10 |
|
TintProvider.Context |
var11 |
|
List |
var12 |
|
DoubleList |
var13 |
|
Integer |
var14 |
|
BiomeDistanceStage.BiomeDistanceEntries |
var15 |
|
BiomeWeights |
var16 |
|
Biome |
var19 |
|
BufferBundle.Access.View |
var2 |
|
TintProvider |
var20 |
|
TintProvider.Result |
var21 |
|
Color |
var22 |
|
PixelBufferView |
var3 |
|
BufferBundle.Access.View |
var4 |
|
PixelBufferView |
var5 |
|
BufferBundle.Access.View |
var6 |
|
PixelBufferView |
var7 |
|
Bounds3i |
var8 |
|
Registry |
var9 |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(var10.x = var8.min.x; var10.x < var8.max.x; var10.x++) |
|
|
for for(var10.z = var8.min.z; var10.z < var8.max.z; var10.z++) |
|
|
for for(BiomeWeights.Entry var18 : var16.entries) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.stages;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.GridUtils;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.Registry;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.TintUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.biome.Biome;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.biometransitionutils.BiomeTransitionUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.biometransitionutils.BiomeWeights;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.BufferBundle;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.CountedPixelBuffer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.SimplePixelBuffer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.type.BufferType;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.type.ParametrizedBufferType;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.views.PixelBufferView;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.tintproviders.TintProvider;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.workerindexer.WorkerIndexer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.worldstructure.WorldStructure;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import com.hypixel.hytale.server.core.asset.util.ColorParseUtil;
class="kw">import it.unimi.dsi.fastutil.doubles.DoubleArrayList;
class="kw">import it.unimi.dsi.fastutil.doubles.DoubleList;
class="kw">import java.util.ArrayList;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class TintStage class="kw">implements Stage {
@Nonnull
class="kw">public class="kw">static class="kw">final Class<CountedPixelBuffer> biomeBufferClass = CountedPixelBuffer.class;
@Nonnull
class="kw">public class="kw">static class="kw">final Class<Integer> biomeClass = Integer.class;
@Nonnull
class="kw">public class="kw">static class="kw">final Class<SimplePixelBuffer> biomeDistanceBufferClass = SimplePixelBuffer.class;
@Nonnull
class="kw">public class="kw">static class="kw">final Class<BiomeDistanceStage.BiomeDistanceEntries> biomeDistanceClass = BiomeDistanceStage.BiomeDistanceEntries.class;
@Nonnull
class="kw">public class="kw">static class="kw">final Class<SimplePixelBuffer> tintBufferClass = SimplePixelBuffer.class;
@Nonnull
class="kw">public class="kw">static class="kw">final Class<Integer> tintClass = Integer.class;
@Nonnull
class="kw">private class="kw">final ParametrizedBufferType biomeInputBufferType;
@Nonnull
class="kw">private class="kw">final ParametrizedBufferType biomeDistanceInputBufferType;
@Nonnull
class="kw">private class="kw">final ParametrizedBufferType tintOutputBufferType;
@Nonnull
class="kw">private class="kw">final Bounds3i inputBounds_bufferGrid;
@Nonnull
class="kw">private class="kw">final String stageName;
class="kw">private class="kw">final int maxInterpolationRadius_voxelGrid;
@Nonnull
class="kw">private class="kw">final WorkerIndexer.Data<WorldStructure> worldStructure_workerData;
class="kw">public TintStage(
@Nonnull String var1,
@Nonnull ParametrizedBufferType var2,
@Nonnull ParametrizedBufferType var3,
@Nonnull ParametrizedBufferType var4,
int var5,
@Nonnull WorkerIndexer.Data<WorldStructure> var6
) {
assert var2.isValidType(biomeBufferClass, biomeClass);
assert var3.isValidType(biomeDistanceBufferClass, biomeDistanceClass);
assert var4.isValidType(tintBufferClass, tintClass);
assert var5 >= 0;
this.biomeInputBufferType = var2;
this.biomeDistanceInputBufferType = var3;
this.tintOutputBufferType = var4;
this.stageName = var1;
this.maxInterpolationRadius_voxelGrid = var5;
this.worldStructure_workerData = var6;
this.inputBounds_bufferGrid = GridUtils.createUnitBounds3i(Vector3iUtil.ZERO);
}
@Override
class="kw">public void run(@Nonnull Stage.Context var1) {
BufferBundle.Access.View var2 = var1.bufferAccess.get(this.biomeInputBufferType);
PixelBufferView var3 = new PixelBufferView<>(var2, biomeClass);
BufferBundle.Access.View var4 = var1.bufferAccess.get(this.biomeDistanceInputBufferType);
PixelBufferView var5 = new PixelBufferView<>(var4, biomeDistanceClass);
BufferBundle.Access.View var6 = var1.bufferAccess.get(this.tintOutputBufferType);
PixelBufferView var7 = new PixelBufferView<>(var6, tintClass);
Bounds3i var8 = var7.getBounds();
Registry var9 = this.worldStructure_workerData.get(var1.workerId).getBiomeRegistry();
Vector3i var10 = new Vector3i(var8.min);
var10.y = 0;
TintProvider.Context var11 = new TintProvider.Context(var10, Double.MAX_VALUE, var1.workerId);
List var12 = new ArrayList<>(3);
DoubleList var13 = new DoubleArrayList(3);
for (var10.x = var8.min.x; var10.x < var8.max.x; var10.x++) {
for (var10.z = var8.min.z; var10.z < var8.max.z; var10.z++) {
Integer var14 = var3.get(var10);
assert var14 != null;
BiomeDistanceStage.BiomeDistanceEntries var15 = var5.get(var10);
BiomeWeights var16 = BiomeTransitionUtil.createWeights(var15, var14, this.maxInterpolationRadius_voxelGrid);
var11.distanceToBiomeEdge = var15.distanceToClosestOtherBiome(var14);
var12.clear();
var13.clear();
for (BiomeWeights.Entry var18 : var16.entries) {
Biome var19 = var9.getObject(var18.biomeId);
TintProvider var20 = var19.getTintProvider();
TintProvider.Result var21 = var20.getValue(var11);
var12.add(ColorParseUtil.argbIntToColor(var21.tint));
var13.add(var18.weight);
}
Color var22 = TintUtil.blend(var12, var13);
var7.set(ColorParseUtil.colorToARGBInt(var22), var10);
}
}
}
@Nonnull
@Override
class="kw">public Map<BufferType, Bounds3i> getInputTypesAndBounds_bufferGrid() {
Map var1 = new HashMap<>();
var1.put(this.biomeInputBufferType, this.inputBounds_bufferGrid);
var1.put(this.biomeDistanceInputBufferType, this.inputBounds_bufferGrid);
class="kw">return var1;
}
@Nonnull
@Override
class="kw">public List<BufferType> getOutputTypes() {
class="kw">return List.of(this.tintOutputBufferType);
}
@Nonnull
@Override
class="kw">public String getName() {
class="kw">return this.stageName;
}
}