added region in image + various fix
This commit is contained in:
@@ -307,7 +307,10 @@ public class LodQuadTree {
|
||||
int min = distances.stream().mapToInt(Integer::intValue).min().getAsInt();
|
||||
int max = distances.stream().mapToInt(Integer::intValue).max().getAsInt();
|
||||
List<LodNodeData> nodeList = new ArrayList<>();
|
||||
if (min > maxDistance || max < minDistance || targetLevel > lodNodeData.level) {
|
||||
if (targetLevel > lodNodeData.level) {
|
||||
return nodeList;
|
||||
}
|
||||
if ((min > maxDistance || max < minDistance) && !isCoordinateInLevel(x,z)){
|
||||
return nodeList;
|
||||
}
|
||||
if (targetLevel == lodNodeData.level || !isNodeFull()) {
|
||||
|
||||
@@ -73,7 +73,17 @@ public class QuadTreeImage extends JPanel {
|
||||
}
|
||||
|
||||
private static void createAndShowGui() {
|
||||
LodQuadTree lodQuadTree = new LodQuadTree(0, 0);
|
||||
int playerX = 600;
|
||||
int playerZ = 260;
|
||||
LodQuadTree lodQuadTree1 = new LodQuadTree(0, 0);
|
||||
LodQuadTree lodQuadTree3 = new LodQuadTree(1, 0);
|
||||
LodQuadTree lodQuadTree2 = new LodQuadTree(0, 1);
|
||||
LodQuadTree lodQuadTree4 = new LodQuadTree(1, 1);
|
||||
List<LodQuadTree> lodQuadTreeList = new ArrayList<>();
|
||||
lodQuadTreeList.add(lodQuadTree1);
|
||||
lodQuadTreeList.add(lodQuadTree2);
|
||||
lodQuadTreeList.add(lodQuadTree3);
|
||||
lodQuadTreeList.add(lodQuadTree4);
|
||||
final QuadTreeImage quadTreeImage = new QuadTreeImage();
|
||||
|
||||
JFrame frame = new JFrame("DrawChit");
|
||||
@@ -82,68 +92,79 @@ public class QuadTreeImage extends JPanel {
|
||||
frame.pack();
|
||||
frame.setLocationByPlatform(true);
|
||||
frame.setVisible(true);
|
||||
System.out.println(lodQuadTree.getLodNodeData().endX);
|
||||
int playerX = 150;
|
||||
int playerZ = 260;
|
||||
List<Collection<LodNodeData>> listOfList = new ArrayList<>();
|
||||
OverworldBiomeSource biomeSource = new OverworldBiomeSource(MCVersion.v1_16_5, 0);
|
||||
OverworldBiomeSource biomeSource = new OverworldBiomeSource(MCVersion.v1_16_5, 100);
|
||||
for (int i = 0; i <= (9 - 2); i++) {
|
||||
for (int j = 0; j < 1; j++) {
|
||||
int dist;
|
||||
if (i == 9) {
|
||||
dist = 500;
|
||||
} else {
|
||||
dist = 500;
|
||||
}
|
||||
List<AbstractMap.SimpleEntry<LodQuadTree, Integer>> levelToGenerate = lodQuadTree.getLevelToGenerate(playerX, playerZ, (byte) (9 - i), (int) dist * (9 - i + 1), 0);
|
||||
System.out.println(levelToGenerate);
|
||||
for (AbstractMap.SimpleEntry<LodQuadTree, Integer> levelDist : levelToGenerate) {
|
||||
LodQuadTree level = levelDist.getKey();
|
||||
Color color;
|
||||
int startX = level.getLodNodeData().startX;
|
||||
int startZ = level.getLodNodeData().startZ;
|
||||
int endX = level.getLodNodeData().endX;
|
||||
int endZ = level.getLodNodeData().endZ;
|
||||
int centerX = level.getLodNodeData().centerX;
|
||||
int centerZ = level.getLodNodeData().centerZ;
|
||||
int width = level.getLodNodeData().width;
|
||||
byte otherLevel = LodNodeData.BLOCK_LEVEL;
|
||||
int otherWidth = LodNodeData.BLOCK_WIDTH;
|
||||
|
||||
List<Integer> posXs = new ArrayList<>();
|
||||
List<Integer> posZs = new ArrayList<>();
|
||||
if(level.getLodNodeData().level == 0){
|
||||
posXs.add(startX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
}else if(level.getLodNodeData().level == 2){
|
||||
posXs.add(startX / otherWidth);
|
||||
posXs.add(endX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
posZs.add(endZ / otherWidth);
|
||||
}else{
|
||||
posXs.add(startX / otherWidth);
|
||||
//posXs.add((centerX / otherWidth)-1);
|
||||
posXs.add(centerX / otherWidth);
|
||||
//posXs.add(endX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
//posZs.add((centerZ / otherWidth)-1);
|
||||
posZs.add(centerZ / otherWidth);
|
||||
//posZs.add(endZ / otherWidth);
|
||||
for (LodQuadTree lodQuadTree : lodQuadTreeList) {
|
||||
int dist;
|
||||
if (i == 9) {
|
||||
dist = 1000;
|
||||
} else {
|
||||
dist = 100;
|
||||
}
|
||||
List<AbstractMap.SimpleEntry<LodQuadTree, Integer>> levelToGenerate = lodQuadTree.getLevelToGenerate(playerX, playerZ, (byte) (9 - i), (int) dist * (9 - i + 1), 0);
|
||||
|
||||
for(Integer posXI : posXs){
|
||||
for(Integer posZI : posZs){
|
||||
int posX = posXI.intValue();
|
||||
int posZ = posZI.intValue();
|
||||
//color = BiomeColorsUtils.getColorFromBiomeManual(biomeSource.getBiome(posZ, 0, posX));
|
||||
color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ, 0, posX).getId());
|
||||
lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true);
|
||||
for (AbstractMap.SimpleEntry<LodQuadTree, Integer> levelDist : levelToGenerate) {
|
||||
LodQuadTree level = levelDist.getKey();
|
||||
Color color;
|
||||
int startX = level.getLodNodeData().startX;
|
||||
int startZ = level.getLodNodeData().startZ;
|
||||
int endX = level.getLodNodeData().endX;
|
||||
int endZ = level.getLodNodeData().endZ;
|
||||
int centerX = level.getLodNodeData().centerX;
|
||||
int centerZ = level.getLodNodeData().centerZ;
|
||||
int width = level.getLodNodeData().width;
|
||||
byte otherLevel = LodNodeData.BLOCK_LEVEL;
|
||||
int otherWidth = LodNodeData.BLOCK_WIDTH;
|
||||
|
||||
List<Integer> posXs = new ArrayList<>();
|
||||
List<Integer> posZs = new ArrayList<>();
|
||||
if (level.getLodNodeData().level == 0) {
|
||||
posXs.add(startX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
} else if (level.getLodNodeData().level == 2) {
|
||||
posXs.add(startX / otherWidth);
|
||||
posXs.add(endX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
posZs.add(endZ / otherWidth);
|
||||
} else {
|
||||
posXs.add(startX / otherWidth);
|
||||
//posXs.add((centerX / otherWidth)-1);
|
||||
posXs.add(centerX / otherWidth);
|
||||
//posXs.add(endX / otherWidth);
|
||||
posZs.add(startZ / otherWidth);
|
||||
//posZs.add((centerZ / otherWidth)-1);
|
||||
posZs.add(centerZ / otherWidth);
|
||||
//posZs.add(endZ / otherWidth);
|
||||
}
|
||||
|
||||
for (Integer posXI : posXs) {
|
||||
for (Integer posZI : posZs) {
|
||||
int posZ = posXI.intValue();
|
||||
int posX = posZI.intValue();
|
||||
//color = BiomeColorsUtils.getColorFromBiomeManual(biomeSource.getBiome(posZ, 0, posX));
|
||||
color = BiomeColorsUtils.getColorFromIdCB(biomeSource.getBiome(posZ, 0, posX).getId());
|
||||
lodQuadTree.setNodeAtLowerLevel(new LodNodeData(otherLevel, posX, posZ, 0, 0, color, true), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Collection<LodNodeData> lodList = new ArrayList<>();
|
||||
for (LodQuadTree lodQuadTree : lodQuadTreeList) {
|
||||
//lodList.addAll(lodQuadTree.getNodeList(false, false,true));
|
||||
lodList.addAll(lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 0, 10000, 0));
|
||||
/*
|
||||
lodList.addAll(lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 2, 100, 0));
|
||||
lodList.addAll(lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 3, 200, 100));
|
||||
lodList.addAll(lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 4, 400, 200));
|
||||
lodList.addAll(lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 5, 10000, 400));
|
||||
|
||||
Collection<LodNodeData> lodList = lodQuadTree.getNodeToRender(playerX, playerZ, (byte) 0, 10000, 0);
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
//lodList = lodQuadTree.getNodeList(false,false,false);
|
||||
listOfList.add(lodList);
|
||||
@@ -163,6 +184,11 @@ public class QuadTreeImage extends JPanel {
|
||||
*/
|
||||
}
|
||||
|
||||
for (LodQuadTree lodQuadTree : lodQuadTreeList) {
|
||||
System.out.println(lodQuadTree.getLodNodeData().posX + " " + lodQuadTree.getLodNodeData().posZ );
|
||||
System.out.println(lodQuadTree.getLodNodeData().startX + " " + lodQuadTree.getLodNodeData().startZ );
|
||||
}
|
||||
|
||||
int timerDelay = 500;
|
||||
new Timer(timerDelay, new ActionListener() {
|
||||
private int drawCount = 0;
|
||||
@@ -174,13 +200,13 @@ public class QuadTreeImage extends JPanel {
|
||||
quadTreeImage.clearAll();
|
||||
} else {
|
||||
final List<MyDrawable> myDrawables = new ArrayList<>();
|
||||
int amp = 2;
|
||||
int amp = 1;
|
||||
Collection<LodNodeData> lodList = listOfList.get(drawCount);
|
||||
for (LodNodeData data : lodList) {
|
||||
myDrawables.add(new MyDrawable(new Rectangle2D.Double(data.startX * amp, data.startZ * amp, data.width * amp, data.width * amp),
|
||||
data.color, new BasicStroke(1)));
|
||||
}
|
||||
myDrawables.add(new MyDrawable(new Rectangle2D.Double(playerZ * amp - 10, playerX * amp - 10, 20, 20),
|
||||
myDrawables.add(new MyDrawable(new Rectangle2D.Double(playerX * amp - 10, playerZ * amp - 10, 20, 20),
|
||||
Color.yellow, new BasicStroke(1)));
|
||||
for (int k = 0; k < myDrawables.size(); k++) {
|
||||
quadTreeImage.addMyDrawable(myDrawables.get(k));
|
||||
|
||||
Reference in New Issue
Block a user