NodeEntry class

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

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

Поля (4)

МодификаторыТипИмя
private final String[] connections
private final GraphSpace.Content content
private final String name
private final Vector3d position

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3d;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.GraphSpace;
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 java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class ManualGraphPass class="kw">extends GraphPass {
   @Nonnull
   class="kw">private class="kw">final List<ManualGraphPass.NodeEntry> nodeEntries;
   class="kw">private class="kw">final double longestEdgeLength;

   class="kw">public ManualGraphPass(@Nonnull List<ManualGraphPass.NodeEntry> var1, @Nonnull String var2) {
      super(var2);
      this.nodeEntries = new ArrayList<>(var1);
      this.longestEdgeLength = this.getLongestEdgeLength();
   }

   @Override
   class="kw">public void run(@Nonnull GraphSpace var1, @Nonnull Bounds3d var2) {
      Map var3 = new HashMap<>();
      List var4 = new ArrayList<>();

      for (ManualGraphPass.NodeEntry var6 : this.nodeEntries) {
         if (var2.contains(var6.position)) {
            GraphSpace.Node var7 = var1.createNode(var6.position);
            var3.put(var6.name, var7);

            for (String var11 : var6.connections) {
               if (!var6.name.equals(var11)) {
                  var4.add(new ManualGraphPass.ConnectionEntry(var6.name, var11));
               }
            }

            var7.setContent(var6.content);
         }
      }

      for (ManualGraphPass.ConnectionEntry var13 : var4) {
         GraphSpace.Node var14 = var3.get(var13.name0);
         GraphSpace.Node var15 = var3.get(var13.name1);
         if (var14 != null && var15 != null) {
            GraphSpace.Edge var16 = var1.getOrCreateEdge(var14, var15);
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public Bounds3d getReadBounds(double var1) {
      class="kw">return Bounds3d.ZERO;
   }

   @Override
   class="kw">public double getLongestEdgeLength(double var1) {
      class="kw">return Math.max(var1, this.longestEdgeLength);
   }

   @Override
   class="kw">public void viewAllPossibleContent(@Nonnull Consumer<GraphSpace.Content> var1) {
      for (ManualGraphPass.NodeEntry var3 : this.nodeEntries) {
         var1.accept(var3.content);
      }
   }

   class="kw">private double getLongestEdgeLength() {
      double var1 = 0.0;
      Map var3 = new HashMap<>();
      List var4 = new ArrayList<>();

      for (ManualGraphPass.NodeEntry var6 : this.nodeEntries) {
         var3.put(var6.name, var6.position);

         for (String var10 : var6.connections) {
            if (!var6.name.equals(var10)) {
               var4.add(new ManualGraphPass.ConnectionEntry(var6.name, var10));
            }
         }
      }

      for (ManualGraphPass.ConnectionEntry var12 : var4) {
         Vector3d var13 = var3.get(var12.name0);
         Vector3d var14 = var3.get(var12.name1);
         if (var13 != null && var14 != null) {
            double var15 = Vector3d.distance(var13.x(), var13.y(), var13.z(), var14.x(), var14.y(), var14.z());
            var1 = Math.max(var1, var15);
         }
      }

      class="kw">return var1;
   }

   class="kw">public class="kw">static class ConnectionEntry {
      @Nonnull
      class="kw">private class="kw">final String name0;
      @Nonnull
      class="kw">private class="kw">final String name1;

      class="kw">public ConnectionEntry(@Nonnull String var1, @Nonnull String var2) {
         this.name0 = var1;
         this.name1 = var2;
      }
   }

   class="kw">public class="kw">static class NodeEntry {
      @Nonnull
      class="kw">private class="kw">final Vector3d position;
      @Nonnull
      class="kw">private class="kw">final GraphSpace.Content content;
      @Nonnull
      class="kw">private class="kw">final String name;
      @Nonnull
      class="kw">private class="kw">final String[] connections;

      class="kw">public NodeEntry(@Nonnull Vector3d var1, @Nonnull GraphSpace.Content var2, @Nonnull String var3, @Nonnull String[] var4) {
         this.position = var1;
         this.content = var2;
         this.name = var3;
         this.connections = var4;
      }
   }
}