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