GraphGenerator class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/graph/GraphGenerator.java

Поля (21)

МодификаторыТипИмя
Vector3d var10
int var11
String var11
var11
Bounds3d var12
Thread var13
GraphPass var15
GraphPass var17
Bounds3d var3
GraphPass var5
int var6
String var6
GraphPass var7
String var7
var7
var7
var7
String var8
var8
var8
Vector3d var8

Методы (14)

МодификаторыВозвратСигнатура
for for(double var9 : this.longestConnection)
for for(int var14 = var11 - 1; var14 >= 0; var14--)
for for(int var9 = 0; var9 < this.passWorkBoundsFrame.length; var9++)
for for(GraphPass var3 : this.passes)
abstract for for(int var5 = 0; var5 < var1.size()
abstract for for(int var12 = 1; var12 < this.passes.size()
abstract for for(int var4 = 0; var4 < this.passes.size()
public void generatevoid generate(@Nonnull GraphSpace var1, @Nonnull Bounds3d var2)
if if(this.printStats)
if if(this.printStats)
if if(this.printStats)
if if(this.printStats)
if if(this.printStats)
public void viewAllPossibleContentvoid viewAllPossibleContent(@Nonnull Consumer<GraphSpace.Content> var1)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.performanceinstruments.FlatTimingProfiler;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.passes.GraphPass;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class GraphGenerator {
   @Nonnull
   class="kw">public class="kw">static class="kw">final GraphGenerator EMPTY_INSTANCE = new GraphGenerator();
   class="kw">private class="kw">static class="kw">final int TOTAL_PROBE_ID = 0;
   class="kw">private class="kw">static class="kw">final int TRIM_PROBE_ID = 1;
   class="kw">private class="kw">static class="kw">final int FIRST_PASS_INDEX = 2;
   @Nonnull
   class="kw">private class="kw">final List<GraphPass> passes;
   @Nonnull
   class="kw">private class="kw">final Bounds3d[] passWorkBoundsFrame;
   @Nonnull
   class="kw">private class="kw">final double[] longestConnection;
   class="kw">private double maxEdgeLength;
   @Nonnull
   class="kw">private class="kw">final FlatTimingProfiler timeInstrument;
   @Nonnull
   class="kw">private class="kw">final String statsLabel;
   class="kw">private class="kw">final boolean printStats;
   class="kw">private class="kw">final int statsPrintInterval;

   class="kw">private GraphGenerator() {
      this(List.of(), false, 0, "");
   }

   class="kw">public GraphGenerator(@Nonnull List<GraphPass> var1, boolean var2, int var3, @Nonnull String var4) {
      assert var3 >= 0;
      this.printStats = var2;
      this.statsPrintInterval = var3;
      this.statsLabel = var4;
      this.timeInstrument = new FlatTimingProfiler(var1.size() + 2);
      this.timeInstrument.setProbeLabel(0, "Total");
      this.timeInstrument.setProbeLabel(1, "Trim");

      for (int var5 = 0; var5 < var1.size(); var5++) {
         int var6 = var5 + 2;
         GraphPass var7 = var1.get(var5);
         String var8 = var7.getLabel();
         if (var8.isEmpty()) {
            var8 = "Pass " + var5;
         } else {
            var8 = "Pass " + var8;
         }

         this.timeInstrument.setProbeLabel(var6, var8);
      }

      if (var1.isEmpty()) {
         this.passes = List.of();
         this.passWorkBoundsFrame = new Bounds3d[0];
         this.longestConnection = new double[0];
      } else {
         this.passes = new ArrayList<>(var1);
         int var11 = this.passes.size() - 1;
         this.longestConnection = new double[this.passes.size()];
         this.longestConnection[0] = this.passes.getFirst().getLongestEdgeLength(0.0);

         for (int var12 = 1; var12 < this.passes.size(); var12++) {
            GraphPass var15 = this.passes.get(var12);
            this.longestConnection[var12] = var15.getLongestEdgeLength(this.longestConnection[var12 - 1]);
         }

         for (double var9 : this.longestConnection) {
            this.maxEdgeLength = Math.max(var9, this.maxEdgeLength);
         }

         this.passWorkBoundsFrame = new Bounds3d[var1.size()];
         this.passWorkBoundsFrame[var11] = this.passes.getLast().getReadBounds(this.longestConnection[var11]);

         for (int var14 = var11 - 1; var14 >= 0; var14--) {
            GraphPass var17 = this.passes.get(var14);
            this.passWorkBoundsFrame[var14] = var17.getReadBounds(this.longestConnection[var14]).clone().stackOrAssign(this.passWorkBoundsFrame[var14 + 1]);
         }
      }
   }

   class="kw">public void generate(@Nonnull GraphSpace var1, @Nonnull Bounds3d var2) {
      if (!this.passes.isEmpty()) {
         if (this.printStats) {
            this.timeInstrument.start(0);
         }

         Bounds3d var3 = new Bounds3d();

         for (int var4 = 0; var4 < this.passes.size(); var4++) {
            if (this.printStats) {
               this.timeInstrument.start(var4 + 2);
            }

            var3.assign(var2);
            var3.stack(this.passWorkBoundsFrame[var4]);
            var3.expand(this.longestConnection[var4]);
            var1.trim(var3);
            GraphPass var5 = this.passes.get(var4);
            var5.run(var1, var3);
            var1.processTaskQueue();
            if (this.printStats) {
               this.timeInstrument.stop(var4 + 2);
            }
         }

         if (this.printStats) {
            this.timeInstrument.start(1);
         }

         Bounds3d var12 = new Bounds3d(var2).expand(this.maxEdgeLength);
         var1.trim(var12);
         if (this.printStats) {
            this.timeInstrument.stop(1);
            this.timeInstrument.stop(0);
            this.timeInstrument.save();
            if (this.timeInstrument.getSampleCount() >= this.statsPrintInterval) {
               Thread var13 = Thread.currentThread();
               String var6 = "[" + var13.getName() + "] GraphGenerator " + this.statsLabel + " Performance Report";
               String var7 = this.timeInstrument.toString(var6);
               this.timeInstrument.clear();
               var7 = var7 + "\nPass Work Bounds Frame (Blocks) :";
               Vector3d var8 = var2.getSize();
               var7 = var7 + "\n\tOutput Bounds : {x=" + var8.x + ", y=" + var8.y + ", z=" + var8.z + "}";

               for (int var9 = 0; var9 < this.passWorkBoundsFrame.length; var9++) {
                  Vector3d var10 = this.passWorkBoundsFrame[var9].getSize().div(2.0);
                  String var11 = this.passes.get(var9).getLabel();
                  if (var11.isEmpty()) {
                     var11 = Integer.toString(var9);
                  }

                  var7 = var7 + "\n\tPass " + var11 + " : {x=" + var10.x + ", y=" + var10.y + ", z=" + var10.z + "}";
               }

               LoggerUtil.getLogger().info(var7);
            }
         }
      }
   }

   class="kw">public void viewAllPossibleContent(@Nonnull Consumer<GraphSpace.Content> var1) {
      for (GraphPass var3 : this.passes) {
         var3.viewAllPossibleContent(var1);
      }
   }
}