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