From 331d75a3bce92c0fc7df6401f52dd2f195ecee2e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 15 May 2024 07:50:52 -0400 Subject: [PATCH] Rename DhSectionPos -> OldDhSectionPos before rewrite --- .../methods/data/DhApiTerrainDataRepo.java | 8 +- .../distanthorizons/core/config/Config.java | 4 +- .../fullData/FullDataPointIdMap.java | 12 +- .../fullData/sources/FullDataSourceV1.java | 16 +- .../fullData/sources/FullDataSourceV2.java | 24 +- .../render/ColumnRenderSource.java | 18 +- .../ColumnRenderBufferBuilder.java | 4 +- .../FullDataToRenderDataTransformer.java | 6 +- .../transformers/LodDataBuilder.java | 6 +- .../core/file/AbstractDataSourceHandler.java | 29 +-- .../core/file/DataSourcePool.java | 15 +- .../core/file/IDataSource.java | 6 +- .../DelayedFullDataSourceSaveCache.java | 8 +- .../FullDataSourceProviderV1.java | 14 +- .../FullDataSourceProviderV2.java | 26 +- .../GeneratedFullDataSourceProvider.java | 26 +- .../SubDimensionLevelMatcher.java | 10 +- .../IFullDataSourceRetrievalQueue.java | 6 +- .../core/generation/WorldGenerationQueue.java | 26 +- .../core/generation/tasks/WorldGenResult.java | 8 +- .../core/generation/tasks/WorldGenTask.java | 7 +- .../generation/tasks/WorldGenTaskGroup.java | 6 +- .../core/level/AbstractDhLevel.java | 6 +- .../core/level/ClientLevelModule.java | 4 +- .../core/level/DhClientServerLevel.java | 4 +- .../core/level/DhServerLevel.java | 4 +- .../distanthorizons/core/pos/DhLodPos.java | 8 +- ...DhSectionPos.java => OldDhSectionPos.java} | 66 ++--- .../core/render/LodQuadTree.java | 26 +- .../core/render/LodRenderSection.java | 12 +- .../core/render/RenderBufferHandler.java | 8 +- .../core/render/renderer/DebugRenderer.java | 6 +- .../core/sql/dto/FullDataSourceV1DTO.java | 12 +- .../core/sql/dto/FullDataSourceV2DTO.java | 12 +- .../core/sql/repo/AbstractDhRepo.java | 1 - .../core/sql/repo/FullDataSourceV1Repo.java | 22 +- .../core/sql/repo/FullDataSourceV2Repo.java | 45 ++-- .../core/util/objects/quadTree/QuadNode.java | 22 +- .../core/util/objects/quadTree/QuadTree.java | 38 +-- .../QuadNodeDirectChildPosIterator.java | 10 +- .../threading/PositionalLockProvider.java | 12 +- core/src/test/java/tests/CompressionTest.java | 6 +- .../src/test/java/tests/DhSectionPosTest.java | 164 ++++++------ core/src/test/java/tests/QuadTreeTest.java | 240 +++++++++--------- 44 files changed, 503 insertions(+), 510 deletions(-) rename core/src/main/java/com/seibel/distanthorizons/core/pos/{DhSectionPos.java => OldDhSectionPos.java} (86%) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java index e3f4f5210..5d8ea494a 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java @@ -31,7 +31,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.pos.DhLodPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.RayCastUtil; @@ -202,10 +202,10 @@ public class DhApiTerrainDataRepo implements IDhApiTerrainDataRepo // get the detail levels for this request byte requestedDetailLevel = requestedColumnPos.detailLevel; - byte sectionDetailLevel = (byte) (requestedDetailLevel + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); + byte sectionDetailLevel = (byte) (requestedDetailLevel + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); // get the positions for this request - DhSectionPos sectionPos = requestedColumnPos.getSectionPosWithSectionDetailLevel(sectionDetailLevel); + OldDhSectionPos sectionPos = requestedColumnPos.getSectionPosWithSectionDetailLevel(sectionDetailLevel); DhLodPos relativePos = requestedColumnPos.getDhSectionRelativePositionForDetailLevel(); @@ -215,7 +215,7 @@ public class DhApiTerrainDataRepo implements IDhApiTerrainDataRepo FullDataSourceV2 dataSource = level.getFullDataProvider().getAsync(sectionPos).get(); if (dataSource == null) { - return DhApiResult.createFail("Unable to find/generate any data at the " + DhSectionPos.class.getSimpleName() + " [" + sectionPos + "]."); + return DhApiResult.createFail("Unable to find/generate any data at the " + OldDhSectionPos.class.getSimpleName() + " [" + sectionPos + "]."); } else { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index 341cb9f3f..739482c8b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -30,7 +30,7 @@ import com.seibel.distanthorizons.core.config.types.*; import com.seibel.distanthorizons.core.config.types.enums.*; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper; import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.coreapi.util.StringUtil; @@ -1208,7 +1208,7 @@ public class Config .addListener(DebugColumnConfigEventHandler.INSTANCE) .build(); public static ConfigEntry columnBuilderDebugDetailLevel = new ConfigEntry.Builder() - .set((int) DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL) + .set((int) OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL) .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) .addListener(DebugColumnConfigEventHandler.INSTANCE) .build(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java index 229fbbea7..7eb637b05 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java @@ -20,7 +20,7 @@ package com.seibel.distanthorizons.core.dataObjects.fullData; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.objects.DataCorruptedException; import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataInputStream; @@ -67,7 +67,7 @@ public class FullDataPointIdMap private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock(); /** should only be used for debugging */ - private DhSectionPos pos; + private OldDhSectionPos pos; /** The index should be the same as the Entry's ID */ private final ArrayList entryList = new ArrayList<>(); @@ -79,7 +79,7 @@ public class FullDataPointIdMap // constructor // //=============// - public FullDataPointIdMap(DhSectionPos pos) { this.pos = pos; } + public FullDataPointIdMap(OldDhSectionPos pos) { this.pos = pos; } @@ -123,7 +123,7 @@ public class FullDataPointIdMap public boolean isEmpty() { return this.entryList.isEmpty(); } - public DhSectionPos getPos() { return this.pos; } + public OldDhSectionPos getPos() { return this.pos; } @@ -270,7 +270,7 @@ public class FullDataPointIdMap } /** Should only be used if this map is going to be reused, otherwise bad things will happen. */ - public void clear(DhSectionPos pos) + public void clear(OldDhSectionPos pos) { this.pos = pos; this.entryList.clear(); @@ -321,7 +321,7 @@ public class FullDataPointIdMap } /** Creates a new IdBiomeBlockStateMap from the given UTF formatted stream */ - public static FullDataPointIdMap deserialize(DhDataInputStream inputStream, DhSectionPos pos, ILevelWrapper levelWrapper) throws IOException, InterruptedException, DataCorruptedException + public static FullDataPointIdMap deserialize(DhDataInputStream inputStream, OldDhSectionPos pos, ILevelWrapper levelWrapper) throws IOException, InterruptedException, DataCorruptedException { int entityCount = inputStream.readInt(); if (entityCount < 0) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java index 4f782837b..53625d118 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java @@ -23,7 +23,7 @@ import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGeneratio import com.seibel.distanthorizons.core.file.IDataSource; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV1DTO; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; @@ -51,7 +51,7 @@ public class FullDataSourceV1 implements IDataSource { private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - public static final byte SECTION_SIZE_OFFSET = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; + public static final byte SECTION_SIZE_OFFSET = OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; /** measured in dataPoints */ public static final int WIDTH = BitShiftUtil.powerOfTwo(SECTION_SIZE_OFFSET); @@ -75,7 +75,7 @@ public class FullDataSourceV1 implements IDataSource /** A flattened 2D array (for the X and Z directions) containing an array for the Y direction. */ private final long[][] dataArrays; - private DhSectionPos sectionPos; + private OldDhSectionPos sectionPos; private boolean isEmpty = true; @@ -85,8 +85,8 @@ public class FullDataSourceV1 implements IDataSource // constructors // //==============// - public static FullDataSourceV1 createEmpty(DhSectionPos pos) { return new FullDataSourceV1(pos); } - private FullDataSourceV1(DhSectionPos sectionPos) + public static FullDataSourceV1 createEmpty(OldDhSectionPos pos) { return new FullDataSourceV1(pos); } + private FullDataSourceV1(OldDhSectionPos sectionPos) { this.dataArrays = new long[WIDTH * WIDTH][0]; this.mapping = new FullDataPointIdMap(sectionPos); @@ -111,12 +111,12 @@ public class FullDataSourceV1 implements IDataSource //=====================// @Override - public DhSectionPos getKey() { return this.sectionPos; } + public OldDhSectionPos getKey() { return this.sectionPos; } @Override - public DhSectionPos getPos() { return this.sectionPos; } + public OldDhSectionPos getPos() { return this.sectionPos; } - public void resizeDataStructuresForRepopulation(DhSectionPos pos) + public void resizeDataStructuresForRepopulation(OldDhSectionPos pos) { // no data structures need to be changed, only the source's position this.sectionPos = pos; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java index 6db6b6411..c61887add 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.file.DataSourcePool; import com.seibel.distanthorizons.core.file.IDataSource; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.RenderDataPointUtil; @@ -43,7 +43,7 @@ import javax.annotation.Nullable; import java.util.Arrays; /** - * This data source contains every datapoint over its given {@link DhSectionPos}.

+ * This data source contains every datapoint over its given {@link OldDhSectionPos}.

* * @see FullDataPointUtil * @see FullDataSourceV1 @@ -71,9 +71,9 @@ public class FullDataSourceV2 implements IDataSource private int cachedHashCode = 0; - private DhSectionPos pos; + private OldDhSectionPos pos; @Override - public DhSectionPos getKey() { return this.pos; } + public OldDhSectionPos getKey() { return this.pos; } public final FullDataPointIdMap mapping; @@ -112,8 +112,8 @@ public class FullDataSourceV2 implements IDataSource // constructors // //==============// - public static FullDataSourceV2 createEmpty(DhSectionPos pos) { return new FullDataSourceV2(pos); } - private FullDataSourceV2(DhSectionPos pos) + public static FullDataSourceV2 createEmpty(OldDhSectionPos pos) { return new FullDataSourceV2(pos); } + private FullDataSourceV2(OldDhSectionPos pos) { this.pos = pos; this.dataPoints = new LongArrayList[WIDTH * WIDTH]; @@ -126,8 +126,8 @@ public class FullDataSourceV2 implements IDataSource this.columnWorldCompressionMode = new byte[WIDTH * WIDTH]; } - public static FullDataSourceV2 createWithData(DhSectionPos pos, FullDataPointIdMap mapping, LongArrayList[] data, byte[] columnGenerationStep, byte[] columnWorldCompressionMode) { return new FullDataSourceV2(pos, mapping, data, columnGenerationStep, columnWorldCompressionMode); } - private FullDataSourceV2(DhSectionPos pos, FullDataPointIdMap mapping, LongArrayList[] data, byte[] columnGenerationSteps, byte[] columnWorldCompressionMode) + public static FullDataSourceV2 createWithData(OldDhSectionPos pos, FullDataPointIdMap mapping, LongArrayList[] data, byte[] columnGenerationStep, byte[] columnWorldCompressionMode) { return new FullDataSourceV2(pos, mapping, data, columnGenerationStep, columnWorldCompressionMode); } + private FullDataSourceV2(OldDhSectionPos pos, FullDataPointIdMap mapping, LongArrayList[] data, byte[] columnGenerationSteps, byte[] columnWorldCompressionMode) { LodUtil.assertTrue(data.length == WIDTH * WIDTH); @@ -783,7 +783,7 @@ public class FullDataSourceV2 implements IDataSource * * @see FullDataSourceV2#dataPoints */ - public static void throwIfDataColumnInWrongOrder(DhSectionPos pos, LongArrayList dataArray) throws IllegalStateException + public static void throwIfDataColumnInWrongOrder(OldDhSectionPos pos, LongArrayList dataArray) throws IllegalStateException { long firstDataPoint = dataArray.getLong(0); int firstBottomY = FullDataPointUtil.getBottomY(firstDataPoint); @@ -829,7 +829,7 @@ public class FullDataSourceV2 implements IDataSource // pooling // //=========// - private static void prepPooledDataSource(DhSectionPos pos, boolean clearData, FullDataSourceV2 dataSource) + private static void prepPooledDataSource(OldDhSectionPos pos, boolean clearData, FullDataSourceV2 dataSource) { dataSource.pos = pos; @@ -857,10 +857,10 @@ public class FullDataSourceV2 implements IDataSource //=====================// @Override - public DhSectionPos getPos() { return this.pos; } + public OldDhSectionPos getPos() { return this.pos; } @Override - public byte getDataDetailLevel() { return (byte) (this.pos.getDetailLevel() - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); } + public byte getDataDetailLevel() { return (byte) (this.pos.getDetailLevel() - OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); } public EDhApiWorldGenerationStep getWorldGenStepAtRelativePos(int relX, int relZ) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java index 453f5b490..b1fed9355 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java @@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.file.DataSourcePool; import com.seibel.distanthorizons.core.file.IDataSource; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.core.dataObjects.render.columnViews.ColumnArrayView; import com.seibel.distanthorizons.core.dataObjects.render.columnViews.ColumnQuadView; @@ -50,7 +50,7 @@ public class ColumnRenderSource implements IDataSource private static final Logger LOGGER = DhLoggerBuilder.getLogger(); public static final boolean DO_SAFETY_CHECKS = ModInfo.IS_DEV_BUILD; - public static final byte SECTION_SIZE_OFFSET = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; + public static final byte SECTION_SIZE_OFFSET = OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; public static final int SECTION_SIZE = BitShiftUtil.powerOfTwo(SECTION_SIZE_OFFSET); public static final DataSourcePool DATA_SOURCE_POOL = new DataSourcePool<>(ColumnRenderSource::createEmptyRenderSource, null /* data source prep/cleanup needs to be done outside the pool since it requires additional inputs */); @@ -59,7 +59,7 @@ public class ColumnRenderSource implements IDataSource /** will be zero if an empty data source was created */ public int verticalDataCount; - public DhSectionPos pos; + public OldDhSectionPos pos; public int yOffset; public LongArrayList renderDataContainer; @@ -77,11 +77,11 @@ public class ColumnRenderSource implements IDataSource //==============// /** - * This is separate from {@link DataSourcePool#getPooledSource(DhSectionPos, boolean)} + * This is separate from {@link DataSourcePool#getPooledSource(OldDhSectionPos, boolean)} * because we need to pass in a couple extra values, * specifically maxVerticalSize and yOffset. */ - public static ColumnRenderSource getPooledRenderSource(DhSectionPos pos, int maxVerticalSize, int yOffset, boolean clearData) + public static ColumnRenderSource getPooledRenderSource(OldDhSectionPos pos, int maxVerticalSize, int yOffset, boolean clearData) { ColumnRenderSource renderSource = DATA_SOURCE_POOL.getPooledSource(pos); @@ -109,14 +109,14 @@ public class ColumnRenderSource implements IDataSource } - private static ColumnRenderSource createEmptyRenderSource(DhSectionPos sectionPos) { return new ColumnRenderSource(sectionPos, 0, 0); } + private static ColumnRenderSource createEmptyRenderSource(OldDhSectionPos sectionPos) { return new ColumnRenderSource(sectionPos, 0, 0); } /** * Creates an empty ColumnRenderSource. * * @param pos the relative position of the container * @param maxVerticalSize the maximum vertical size of the container */ - private ColumnRenderSource(DhSectionPos pos, int maxVerticalSize, int yOffset) + private ColumnRenderSource(OldDhSectionPos pos, int maxVerticalSize, int yOffset) { this.verticalDataCount = maxVerticalSize; this.renderDataContainer = new LongArrayList(new long[SECTION_SIZE * SECTION_SIZE * this.verticalDataCount]); @@ -215,9 +215,9 @@ public class ColumnRenderSource implements IDataSource // data helper methods // //=====================// - public DhSectionPos getPos() { return this.pos; } + public OldDhSectionPos getPos() { return this.pos; } @Override - public DhSectionPos getKey() { return this.pos; } + public OldDhSectionPos getKey() { return this.pos; } public byte getDataDetailLevel() { return (byte) (this.pos.getDetailLevel() - SECTION_SIZE_OFFSET); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java index aad029d2b..3c0e9f681 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java @@ -27,7 +27,7 @@ import com.seibel.distanthorizons.core.level.IDhClientLevel; import com.seibel.distanthorizons.core.logging.ConfigBasedLogger; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.glObject.GLProxy; import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; import com.seibel.distanthorizons.core.util.LodUtil; @@ -98,7 +98,7 @@ public class ColumnRenderBufferBuilder && !clientLevel.getLevelWrapper().getDimensionType().isTheEnd() // FIXME temporary fix // Cave culling is currently broken for any detail level above 0 - && renderSource.pos.getDetailLevel() == DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + && renderSource.pos.getDetailLevel() == OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL ); int skyLightCullingBelow = Config.Client.Advanced.Graphics.AdvancedGraphics.caveCullingHeight.get(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java index f66e26262..2d498d681 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java @@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.level.IDhClientLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.ColorUtil; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.RenderDataPointUtil; @@ -52,7 +52,7 @@ public class FullDataToRenderDataTransformer private static final IWrapperFactory WRAPPER_FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class); private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class); - private static final HashSet brokenPos = new HashSet<>(); + private static final HashSet brokenPos = new HashSet<>(); @@ -98,7 +98,7 @@ public class FullDataToRenderDataTransformer */ private static ColumnRenderSource transformCompleteFullDataToColumnData(IDhClientLevel level, FullDataSourceV2 fullDataSource) throws InterruptedException { - final DhSectionPos pos = fullDataSource.getPos(); + final OldDhSectionPos pos = fullDataSource.getPos(); final byte dataDetail = fullDataSource.getDataDetailLevel(); final int vertSize = Config.Client.Advanced.Graphics.Quality.verticalQuality.get().calculateMaxVerticalData(fullDataSource.getDataDetailLevel()); final ColumnRenderSource columnSource = ColumnRenderSource.getPooledRenderSource(pos, vertSize, level.getMinY(), true); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java index bc6da58f6..d73f7d860 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java @@ -32,7 +32,7 @@ import com.seibel.distanthorizons.core.enums.EDhDirection; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.objects.DataCorruptedException; @@ -73,7 +73,7 @@ public class LodDataBuilder sectionPosX = (sectionPosX < 0) ? ((sectionPosX + 1) / NUMB_OF_CHUNKS_WIDE) - 1 : (sectionPosX / NUMB_OF_CHUNKS_WIDE); int sectionPosZ = chunkWrapper.getChunkPos().z; sectionPosZ = (sectionPosZ < 0) ? ((sectionPosZ + 1) / NUMB_OF_CHUNKS_WIDE) - 1 : (sectionPosZ / NUMB_OF_CHUNKS_WIDE); - DhSectionPos pos = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, sectionPosX, sectionPosZ); + OldDhSectionPos pos = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, sectionPosX, sectionPosZ); FullDataSourceV2 dataSource = FullDataSourceV2.createEmpty(pos); dataSource.isEmpty = false; @@ -303,7 +303,7 @@ public class LodDataBuilder /** @throws ClassCastException if an API user returns the wrong object type(s) */ public static FullDataSourceV2 createFromApiChunkData(DhApiChunk dataPoints) throws ClassCastException, DataCorruptedException { - FullDataSourceV2 accessor = FullDataSourceV2.createEmpty(new DhSectionPos(new DhChunkPos(dataPoints.chunkPosX, dataPoints.chunkPosZ))); + FullDataSourceV2 accessor = FullDataSourceV2.createEmpty(new OldDhSectionPos(new DhChunkPos(dataPoints.chunkPosX, dataPoints.chunkPosZ))); for (int relZ = 0; relZ < LodUtil.CHUNK_WIDTH; relZ++) { for (int relX = 0; relX < LodUtil.CHUNK_WIDTH; relX++) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java index 207068e2b..f26434a91 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java @@ -4,7 +4,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.repo.AbstractDhRepo; import com.seibel.distanthorizons.core.sql.dto.IBaseDTO; import com.seibel.distanthorizons.core.util.LodUtil; @@ -17,7 +17,6 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; -import java.io.StreamCorruptedException; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; @@ -27,8 +26,8 @@ import java.util.concurrent.locks.ReentrantLock; // We shouldn't need multiple data source handlers public abstract class AbstractDataSourceHandler , - TDTO extends IBaseDTO, - TRepo extends AbstractDhRepo, + TDTO extends IBaseDTO, + TRepo extends AbstractDhRepo, TDhLevel extends IDhLevel> implements AutoCloseable { @@ -42,13 +41,13 @@ public abstract class AbstractDataSourceHandler * * @see AbstractDataSourceHandler#MIN_SECTION_DETAIL_LEVEL */ - public static final byte TOP_SECTION_DETAIL_LEVEL = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + LodUtil.REGION_DETAIL_LEVEL; + public static final byte TOP_SECTION_DETAIL_LEVEL = OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + LodUtil.REGION_DETAIL_LEVEL; /** * The lowest numerical detail level possible. * * @see AbstractDataSourceHandler#TOP_SECTION_DETAIL_LEVEL * */ - public static final byte MIN_SECTION_DETAIL_LEVEL = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; + public static final byte MIN_SECTION_DETAIL_LEVEL = OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; protected final PositionalLockProvider updateLockProvider = new PositionalLockProvider(); @@ -56,8 +55,8 @@ public abstract class AbstractDataSourceHandler * generally just used for debugging, * keeps track of which positions are currently locked. */ - public final Set lockedPosSet = ConcurrentHashMap.newKeySet(); - public final ConcurrentHashMap queuedUpdateCountsByPos = new ConcurrentHashMap<>(); + public final Set lockedPosSet = ConcurrentHashMap.newKeySet(); + public final ConcurrentHashMap queuedUpdateCountsByPos = new ConcurrentHashMap<>(); protected final ReentrantLock closeLock = new ReentrantLock(); @@ -102,7 +101,7 @@ public abstract class AbstractDataSourceHandler protected abstract TDataSource createDataSourceFromDto(TDTO dto) throws InterruptedException, IOException, DataCorruptedException; protected abstract TDTO createDtoFromDataSource(TDataSource dataSource); - protected abstract TDataSource makeEmptyDataSource(DhSectionPos pos); + protected abstract TDataSource makeEmptyDataSource(OldDhSectionPos pos); @@ -116,7 +115,7 @@ public abstract class AbstractDataSourceHandler * * This call is concurrent. I.e. it supports being called by multiple threads at the same time. */ - public CompletableFuture getAsync(DhSectionPos pos) + public CompletableFuture getAsync(OldDhSectionPos pos) { ThreadPoolExecutor executor = ThreadPoolUtil.getFileHandlerExecutor(); if (executor == null || executor.isTerminated()) @@ -138,10 +137,10 @@ public abstract class AbstractDataSourceHandler /** * Should only be used in internal file handler methods where we are already running on a file handler thread. * Can return null if the repo is in the process of being shut down - * @see AbstractDataSourceHandler#getAsync(DhSectionPos) + * @see AbstractDataSourceHandler#getAsync(OldDhSectionPos) */ @Nullable - public TDataSource get(DhSectionPos pos) + public TDataSource get(OldDhSectionPos pos) { TDataSource dataSource = null; try @@ -231,7 +230,7 @@ public abstract class AbstractDataSourceHandler * After this method returns the inputData will be written to file. * @param updatePos the position to update */ - protected void updateDataSourceAtPos(DhSectionPos updatePos, @NotNull FullDataSourceV2 inputData, boolean lockOnUpdatePos) + protected void updateDataSourceAtPos(OldDhSectionPos updatePos, @NotNull FullDataSourceV2 inputData, boolean lockOnUpdatePos) { boolean methodLocked = false; // a lock is necessary to prevent two threads from writing to the same position at once, @@ -293,7 +292,7 @@ public abstract class AbstractDataSourceHandler //================// /** used for debugging to track which positions are queued for updating */ - private void markUpdateStart(DhSectionPos dataSourcePos) + private void markUpdateStart(OldDhSectionPos dataSourcePos) { this.queuedUpdateCountsByPos.compute(dataSourcePos, (pos, atomicCount) -> { @@ -306,7 +305,7 @@ public abstract class AbstractDataSourceHandler }); } /** used for debugging to track which positions are queued for updating */ - private void markUpdateEnd(DhSectionPos dataSourcePos) + private void markUpdateEnd(OldDhSectionPos dataSourcePos) { this.queuedUpdateCountsByPos.compute(dataSourcePos, (pos, atomicCount) -> { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/DataSourcePool.java b/core/src/main/java/com/seibel/distanthorizons/core/file/DataSourcePool.java index fa6b80fdf..0c5b35dc6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/DataSourcePool.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/DataSourcePool.java @@ -1,8 +1,7 @@ package com.seibel.distanthorizons.core.file; import com.seibel.distanthorizons.core.level.IDhLevel; -import com.seibel.distanthorizons.core.pos.DhSectionPos; -import com.seibel.distanthorizons.core.util.ThreadUtil; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -27,7 +26,7 @@ public class DataSourcePool, TDhLevel private final ArrayList pooledDataSources = new ArrayList<>(); private final ReentrantLock poolLock = new ReentrantLock(); - private final Function createEmptyDatasourceFunc; + private final Function createEmptyDatasourceFunc; @Nullable private final IPrepPooledDataSourceFunc prepDatasourceFunc; @@ -37,7 +36,7 @@ public class DataSourcePool, TDhLevel // constructor // //=============// - public DataSourcePool(Function createEmptyDatasourceFunc, @Nullable IPrepPooledDataSourceFunc prepDatasourceFunc) + public DataSourcePool(Function createEmptyDatasourceFunc, @Nullable IPrepPooledDataSourceFunc prepDatasourceFunc) { this.createEmptyDatasourceFunc = createEmptyDatasourceFunc; this.prepDatasourceFunc = prepDatasourceFunc; @@ -51,12 +50,12 @@ public class DataSourcePool, TDhLevel /** * Returns a cleared data source. - * @see DataSourcePool#getPooledSource(DhSectionPos, boolean) + * @see DataSourcePool#getPooledSource(OldDhSectionPos, boolean) */ - public TDataSource getPooledSource(DhSectionPos pos) { return this.getPooledSource(pos, true);} + public TDataSource getPooledSource(OldDhSectionPos pos) { return this.getPooledSource(pos, true);} /** @return an empty data source if non are cached */ - public TDataSource getPooledSource(DhSectionPos pos, boolean clearData) + public TDataSource getPooledSource(OldDhSectionPos pos, boolean clearData) { try { @@ -133,7 +132,7 @@ public class DataSourcePool, TDhLevel public interface IPrepPooledDataSourceFunc, TDhLevel extends IDhLevel> { /** @param clearData will be false if the data will be immediately overwritten anyway */ - void prepDataSource(DhSectionPos pos, boolean clearData, TDataSource dataSource); + void prepDataSource(OldDhSectionPos pos, boolean clearData, TDataSource dataSource); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/IDataSource.java b/core/src/main/java/com/seibel/distanthorizons/core/file/IDataSource.java index 09d4d4ee8..0abb28372 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/IDataSource.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/IDataSource.java @@ -3,7 +3,7 @@ package com.seibel.distanthorizons.core.file; import com.seibel.distanthorizons.api.enums.EDhApiDetailLevel; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; import com.seibel.distanthorizons.core.level.IDhLevel; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.IBaseDTO; /** @@ -13,9 +13,9 @@ import com.seibel.distanthorizons.core.sql.dto.IBaseDTO; * * @param there are times when we need specifically a client level vs a more generic level */ -public interface IDataSource extends IBaseDTO, AutoCloseable +public interface IDataSource extends IBaseDTO, AutoCloseable { - DhSectionPos getPos(); + OldDhSectionPos getPos(); /** @return true if the data was changed */ boolean update(FullDataSourceV2 chunkData, TDhLevel level); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java index aa87662f8..193ed399e 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java @@ -2,7 +2,7 @@ package com.seibel.distanthorizons.core.file.fullDatafile; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.TimerUtil; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; @@ -22,8 +22,8 @@ public class DelayedFullDataSourceSaveCache private static final Timer DELAY_UPDATE_TIMER = TimerUtil.CreateTimer("Delayed Full Datasource Save Timer"); - public final ConcurrentHashMap dataSourceByPosition = new ConcurrentHashMap<>(); - private final ConcurrentHashMap saveTimerTasksBySectionPos = new ConcurrentHashMap<>(); + public final ConcurrentHashMap dataSourceByPosition = new ConcurrentHashMap<>(); + private final ConcurrentHashMap saveTimerTasksBySectionPos = new ConcurrentHashMap<>(); private final ISaveDataSourceFunc onSaveTimeoutFunc; private final int saveDelayInMs; @@ -48,7 +48,7 @@ public class DelayedFullDataSourceSaveCache public void queueDataSourceForUpdateAndSave(FullDataSourceV2 inputDataSource) { - DhSectionPos dataSourcePos = inputDataSource.getPos(); + OldDhSectionPos dataSourcePos = inputDataSource.getPos(); this.dataSourceByPosition.compute(dataSourcePos, (inputPos, temporaryDataSource) -> { if (temporaryDataSource == null) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java index 1ee291fcc..2a82f73af 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java @@ -4,7 +4,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV1DTO; import com.seibel.distanthorizons.core.sql.repo.FullDataSourceV1Repo; import com.seibel.distanthorizons.core.util.objects.DataCorruptedException; @@ -92,7 +92,7 @@ public class FullDataSourceProviderV1 * * This call is concurrent. I.e. it supports being called by multiple threads at the same time. */ - public CompletableFuture getAsync(DhSectionPos pos) + public CompletableFuture getAsync(OldDhSectionPos pos) { ThreadPoolExecutor executor = ThreadPoolUtil.getFileHandlerExecutor(); if (executor == null || executor.isTerminated()) @@ -113,10 +113,10 @@ public class FullDataSourceProviderV1 /** * Should only be used in internal file handler methods where we are already running on a file handler thread. * Can return null. - * @see FullDataSourceProviderV1#getAsync(DhSectionPos) + * @see FullDataSourceProviderV1#getAsync(OldDhSectionPos) */ @Nullable - public FullDataSourceV1 get(DhSectionPos pos) + public FullDataSourceV1 get(OldDhSectionPos pos) { FullDataSourceV1 dataSource = null; try @@ -156,10 +156,10 @@ public class FullDataSourceProviderV1 { ArrayList dataSourceList = new ArrayList<>(); - ArrayList migrationPosList = this.repo.getPositionsToMigrate(limit); + ArrayList migrationPosList = this.repo.getPositionsToMigrate(limit); for (int i = 0; i < migrationPosList.size(); i++) { - DhSectionPos pos = migrationPosList.get(i); + OldDhSectionPos pos = migrationPosList.get(i); FullDataSourceV1 dataSource = this.get(pos); if (dataSource != null) { @@ -170,7 +170,7 @@ public class FullDataSourceProviderV1 return dataSourceList; } - public void markMigrationFailed(DhSectionPos pos) { ((FullDataSourceV1Repo) this.repo).markMigrationFailed(pos); } + public void markMigrationFailed(OldDhSectionPos pos) { ((FullDataSourceV1Repo) this.repo).markMigrationFailed(pos); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java index a8fbd40c9..acb80535c 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java @@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure; import com.seibel.distanthorizons.core.file.AbstractDataSourceHandler; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.renderer.DebugRenderer; import com.seibel.distanthorizons.core.render.renderer.IDebugRenderable; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO; @@ -97,7 +97,7 @@ public class FullDataSourceProviderV2 * Tracks which positions are currently being updated * to prevent duplicate concurrent updates. */ - public final Set parentUpdatingPosSet = ConcurrentHashMap.newKeySet(); + public final Set parentUpdatingPosSet = ConcurrentHashMap.newKeySet(); // TODO only run thread if modifications happened recently /** @@ -172,7 +172,7 @@ public class FullDataSourceProviderV2 { return dto.createPooledDataSource(this.level.getLevelWrapper()); } @Override - protected FullDataSourceV2 makeEmptyDataSource(DhSectionPos pos) { return FullDataSourceV2.DATA_SOURCE_POOL.getPooledSource(pos, true); } + protected FullDataSourceV2 makeEmptyDataSource(OldDhSectionPos pos) { return FullDataSourceV2.DATA_SOURCE_POOL.getPooledSource(pos, true); } @@ -201,11 +201,11 @@ public class FullDataSourceProviderV2 && this.parentUpdatingPosSet.size() < MAX_UPDATE_TASK_COUNT) { // get the positions that need to be applied to their parents - ArrayList parentUpdatePosList = this.repo.getPositionsToUpdate(MAX_UPDATE_TASK_COUNT); + ArrayList parentUpdatePosList = this.repo.getPositionsToUpdate(MAX_UPDATE_TASK_COUNT); // combine updates together based on their parent - HashMap> updatePosByParentPos = new HashMap<>(); - for (DhSectionPos pos : parentUpdatePosList) + HashMap> updatePosByParentPos = new HashMap<>(); + for (OldDhSectionPos pos : parentUpdatePosList) { updatePosByParentPos.compute(pos.getParentPos(), (parentPos, updatePosSet) -> { @@ -219,7 +219,7 @@ public class FullDataSourceProviderV2 } // queue the updates - for (DhSectionPos parentUpdatePos : updatePosByParentPos.keySet()) + for (OldDhSectionPos parentUpdatePos : updatePosByParentPos.keySet()) { // stop if there are already a bunch of updates queued if (this.parentUpdatingPosSet.size() > MAX_UPDATE_TASK_COUNT @@ -246,7 +246,7 @@ public class FullDataSourceProviderV2 this.lockedPosSet.add(parentUpdatePos); // apply each child pos to the parent - for (DhSectionPos childPos : updatePosByParentPos.get(parentUpdatePos)) + for (OldDhSectionPos childPos : updatePosByParentPos.get(parentUpdatePos)) { ReentrantLock childReadLock = this.updateLockProvider.getLock(childPos); try @@ -423,7 +423,7 @@ public class FullDataSourceProviderV2 } catch (Exception e) { - DhSectionPos migrationPos = legacyDataSource.getPos(); + OldDhSectionPos migrationPos = legacyDataSource.getPos(); LOGGER.warn("Unexpected issue migrating data source at pos " + migrationPos + ". Error: " + e.getMessage(), e); this.legacyFileHandler.markMigrationFailed(migrationPos); } @@ -555,18 +555,18 @@ public class FullDataSourceProviderV2 * an empty array if all positions were generated */ @Nullable - public ArrayList getPositionsToRetrieve(DhSectionPos pos) { return null; } + public ArrayList getPositionsToRetrieve(OldDhSectionPos pos) { return null; } /** * Returns how many positions could potentially be generated for this position assuming the position is empty. * Used when estimating the total number of retrieval requests. */ - public int getMaxPossibleRetrievalPositionCountForPos(DhSectionPos pos) { return -1; } + public int getMaxPossibleRetrievalPositionCountForPos(OldDhSectionPos pos) { return -1; } /** @return true if the position was queued, false if not */ - public boolean queuePositionForRetrieval(DhSectionPos genPos) { return false; } + public boolean queuePositionForRetrieval(OldDhSectionPos genPos) { return false; } /** does nothing if the given position isn't present in the queue */ - public void removeRetrievalRequestIf(Function removeIf) { } + public void removeRetrievalRequestIf(Function removeIf) { } public void clearRetrievalQueue() { } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java index ca5594c33..c7dfba6a2 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.generation.tasks.IWorldGenTaskTracker; import com.seibel.distanthorizons.core.generation.tasks.WorldGenResult; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.renderer.DebugRenderer; import com.seibel.distanthorizons.core.render.renderer.IDebugRenderable; import com.seibel.distanthorizons.core.util.LodUtil; @@ -116,7 +116,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im } // TODO only fire after the section has finished generated or once every X seconds - private void fireOnGenPosSuccessListeners(DhSectionPos pos) + private void fireOnGenPosSuccessListeners(OldDhSectionPos pos) { // fire the event listeners for (IOnWorldGenCompleteListener listener : this.onWorldGenTaskCompleteListeners) @@ -205,7 +205,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im } @Override - public boolean queuePositionForRetrieval(DhSectionPos genPos) + public boolean queuePositionForRetrieval(OldDhSectionPos genPos) { IFullDataSourceRetrievalQueue worldGenQueue = this.worldGenQueueRef.get(); if (worldGenQueue == null) @@ -214,14 +214,14 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im } GenTask genTask = new GenTask(genPos); - CompletableFuture worldGenFuture = worldGenQueue.submitGenTask(genPos, (byte) (genPos.getDetailLevel() - DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTask); + CompletableFuture worldGenFuture = worldGenQueue.submitGenTask(genPos, (byte) (genPos.getDetailLevel() - OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL), genTask); worldGenFuture.whenComplete((genTaskResult, ex) -> this.onWorldGenTaskComplete(genTaskResult, ex)); return true; } @Override - public void removeRetrievalRequestIf(Function removeIf) + public void removeRetrievalRequestIf(Function removeIf) { IFullDataSourceRetrievalQueue worldGenQueue = this.worldGenQueueRef.get(); if (worldGenQueue != null) @@ -238,7 +238,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im @Override - public ArrayList getPositionsToRetrieve(DhSectionPos pos) + public ArrayList getPositionsToRetrieve(OldDhSectionPos pos) { IFullDataSourceRetrievalQueue worldGenQueue = this.worldGenQueueRef.get(); if (worldGenQueue == null) @@ -277,8 +277,8 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im // this section is missing one or more columns, queue the missing ones for generation. // TODO speed up this logic by only checking ungenerated columns - ArrayList generationList = new ArrayList<>(); - byte minGeneratorSectionDetailLevel = (byte) (worldGenQueue.highestDataDetail() + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); + ArrayList generationList = new ArrayList<>(); + byte minGeneratorSectionDetailLevel = (byte) (worldGenQueue.highestDataDetail() + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); pos.forEachChildAtDetailLevel(minGeneratorSectionDetailLevel, (genPos) -> { if (!this.repo.existsWithKey(genPos)) @@ -336,7 +336,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im } @Override - public int getMaxPossibleRetrievalPositionCountForPos(DhSectionPos pos) + public int getMaxPossibleRetrievalPositionCountForPos(OldDhSectionPos pos) { IFullDataSourceRetrievalQueue worldGenQueue = this.worldGenQueueRef.get(); if (worldGenQueue == null) @@ -344,7 +344,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im return -1; } - int minGeneratorSectionDetailLevel = worldGenQueue.highestDataDetail() + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; + int minGeneratorSectionDetailLevel = worldGenQueue.highestDataDetail() + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL; int detailLevelDiff = pos.getDetailLevel() - minGeneratorSectionDetailLevel; return BitShiftUtil.powerOfTwo(detailLevelDiff); @@ -375,9 +375,9 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im // TODO may not be needed private class GenTask implements IWorldGenTaskTracker { - private final DhSectionPos pos; + private final OldDhSectionPos pos; - public GenTask(DhSectionPos pos) + public GenTask(OldDhSectionPos pos) { this.pos = pos; } @@ -406,7 +406,7 @@ public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 im public interface IOnWorldGenCompleteListener { /** Fired whenever a section has completed generating */ - void onWorldGenTaskComplete(DhSectionPos pos); + void onWorldGenTaskComplete(OldDhSectionPos pos); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/subDimMatching/SubDimensionLevelMatcher.java b/core/src/main/java/com/seibel/distanthorizons/core/file/subDimMatching/SubDimensionLevelMatcher.java index a808e5e8b..60dbbe45e 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/file/subDimMatching/SubDimensionLevelMatcher.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/file/subDimMatching/SubDimensionLevelMatcher.java @@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.level.DhClientLevel; import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.ConfigBasedLogger; import com.seibel.distanthorizons.core.pos.DhChunkPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.dataObjects.transformers.LodDataBuilder; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; @@ -190,7 +190,7 @@ public class SubDimensionLevelMatcher implements AutoCloseable } FullDataSourceV2 newChunkSizedFullDataView = FullDataSourceV2.createFromChunk(newlyLoadedChunk); // convert to a data source for easier comparing - FullDataSourceV2 newDataSource = FullDataSourceV2.createEmpty(new DhSectionPos(this.playerData.playerBlockPos)); + FullDataSourceV2 newDataSource = FullDataSourceV2.createEmpty(new OldDhSectionPos(this.playerData.playerBlockPos)); newDataSource.update(newChunkSizedFullDataView); @@ -215,7 +215,7 @@ public class SubDimensionLevelMatcher implements AutoCloseable // get the data source to compare against try (IDhLevel tempLevel = new DhClientLevel(new ClientOnlySaveStructure(), this.currentClientLevel, testLevelFolder, false)) { - testFullDataSource = tempLevel.getFullDataProvider().getAsync(new DhSectionPos(this.playerData.playerBlockPos)).join(); + testFullDataSource = tempLevel.getFullDataProvider().getAsync(new OldDhSectionPos(this.playerData.playerBlockPos)).join(); if (testFullDataSource == null) { continue; @@ -224,8 +224,8 @@ public class SubDimensionLevelMatcher implements AutoCloseable // confirm both data sources have the same section pos - DhSectionPos newSectionChunkPos = newDataSource.getPos().convertNewToDetailLevel(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); - DhSectionPos testSectionChunkPos = testFullDataSource.getPos().convertNewToDetailLevel(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); + OldDhSectionPos newSectionChunkPos = newDataSource.getPos().convertNewToDetailLevel(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); + OldDhSectionPos testSectionChunkPos = testFullDataSource.getPos().convertNewToDetailLevel(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); LodUtil.assertTrue(newSectionChunkPos.equals(testSectionChunkPos), "data source positions don't match"); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/IFullDataSourceRetrievalQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/IFullDataSourceRetrievalQueue.java index ade0d524e..9a36f8e75 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/IFullDataSourceRetrievalQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/IFullDataSourceRetrievalQueue.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.generation; import com.seibel.distanthorizons.core.generation.tasks.IWorldGenTaskTracker; import com.seibel.distanthorizons.core.generation.tasks.WorldGenResult; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.LodQuadTree; import java.io.Closeable; @@ -80,9 +80,9 @@ public interface IFullDataSourceRetrievalQueue extends Closeable * Generally the retrieval queue should be fairly small, so its faster to iterate over the existing list * and check if each one is valid vs dumbly attempting to remove every position that just went out of range. */ - void removeRetrievalRequestIf(Function removeIf); + void removeRetrievalRequestIf(Function removeIf); - CompletableFuture submitGenTask(DhSectionPos pos, byte requiredDataDetail, IWorldGenTaskTracker tracker); + CompletableFuture submitGenTask(OldDhSectionPos pos, byte requiredDataDetail, IWorldGenTaskTracker tracker); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java index da1595893..6036f7a4f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java @@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.generation.tasks.*; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; import com.seibel.distanthorizons.core.pos.DhChunkPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.dataObjects.transformers.LodDataBuilder; import com.seibel.distanthorizons.core.render.renderer.DebugRenderer; @@ -58,9 +58,9 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb private final IDhApiWorldGenerator generator; /** contains the positions that need to be generated */ - private final ConcurrentHashMap waitingTasks = new ConcurrentHashMap<>(); + private final ConcurrentHashMap waitingTasks = new ConcurrentHashMap<>(); - private final ConcurrentHashMap inProgressGenTasksByLodPos = new ConcurrentHashMap<>(); + private final ConcurrentHashMap inProgressGenTasksByLodPos = new ConcurrentHashMap<>(); // granularity is the detail level for batching world generator requests together public final byte maxGranularity; @@ -89,8 +89,8 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb // debug variables to test for duplicate world generator requests // /** limits how many of the previous world gen requests we should track */ private static final int MAX_ALREADY_GENERATED_COUNT = 100; - private final HashMap alreadyGeneratedPosHashSet = new HashMap<>(MAX_ALREADY_GENERATED_COUNT); - private final Queue alreadyGeneratedPosQueue = new LinkedList<>(); + private final HashMap alreadyGeneratedPosHashSet = new HashMap<>(MAX_ALREADY_GENERATED_COUNT); + private final Queue alreadyGeneratedPosQueue = new LinkedList<>(); /** just used for rendering to the F3 menu */ private int estimatedTotalTaskCount = 0; @@ -131,7 +131,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb //=================// @Override - public CompletableFuture submitGenTask(DhSectionPos pos, byte requiredDataDetail, IWorldGenTaskTracker tracker) + public CompletableFuture submitGenTask(OldDhSectionPos pos, byte requiredDataDetail, IWorldGenTaskTracker tracker) { // the generator is shutting down, don't add new tasks if (this.generatorClosingFuture != null) @@ -160,7 +160,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb } @Override - public void removeRetrievalRequestIf(Function removeIf) + public void removeRetrievalRequestIf(Function removeIf) { this.waitingTasks.forEachKey(100, (genPos) -> { @@ -307,7 +307,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb // split up the task and add each one to the tree LinkedList> childFutures = new LinkedList<>(); - DhSectionPos sectionPos = new DhSectionPos(closestTask.pos.getDetailLevel(), closestTask.pos.getX(), closestTask.pos.getZ()); + OldDhSectionPos sectionPos = new OldDhSectionPos(closestTask.pos.getDetailLevel(), closestTask.pos.getX(), closestTask.pos.getZ()); WorldGenTask finalClosestTask = closestTask; sectionPos.forEachChild((childDhSectionPos) -> { @@ -329,7 +329,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb private boolean tryStartingWorldGenTaskGroup(InProgressWorldGenTaskGroup newTaskGroup) { byte taskDetailLevel = newTaskGroup.group.dataDetail; - DhSectionPos taskPos = newTaskGroup.group.pos; + OldDhSectionPos taskPos = newTaskGroup.group.pos; byte granularity = (byte) (taskPos.getDetailLevel() - taskDetailLevel); LodUtil.assertTrue(granularity >= this.minGranularity && granularity <= this.maxGranularity); LodUtil.assertTrue(taskDetailLevel >= this.highestDataDetail && taskDetailLevel <= this.lowestDataDetail); @@ -343,7 +343,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb //LOGGER.trace("Duplicate generation section " + taskPos + " with granularity [" + granularity + "] at " + chunkPosMin + ". Skipping..."); // sending a success result is necessary to make sure the render sections are reloaded correctly - newTaskGroup.group.worldGenTasks.forEach(worldGenTask -> worldGenTask.future.complete(WorldGenResult.CreateSuccess(new DhSectionPos(granularity, taskPos.getX(), taskPos.getZ())))); + newTaskGroup.group.worldGenTasks.forEach(worldGenTask -> worldGenTask.future.complete(WorldGenResult.CreateSuccess(new OldDhSectionPos(granularity, taskPos.getX(), taskPos.getZ())))); return false; } this.alreadyGeneratedPosHashSet.put(newTaskGroup.group.pos, Thread.currentThread().getStackTrace()); @@ -352,7 +352,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb // remove extra tracked duplicate positions while (this.alreadyGeneratedPosQueue.size() > MAX_ALREADY_GENERATED_COUNT) { - DhSectionPos posToRemove = this.alreadyGeneratedPosQueue.poll(); + OldDhSectionPos posToRemove = this.alreadyGeneratedPosQueue.poll(); this.alreadyGeneratedPosHashSet.remove(posToRemove); } @@ -381,7 +381,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb else { //LOGGER.info("Section generation at "+pos+" completed"); - newTaskGroup.group.worldGenTasks.forEach(worldGenTask -> worldGenTask.future.complete(WorldGenResult.CreateSuccess(new DhSectionPos(granularity, taskPos.getX(), taskPos.getZ())))); + newTaskGroup.group.worldGenTasks.forEach(worldGenTask -> worldGenTask.future.complete(WorldGenResult.CreateSuccess(new OldDhSectionPos(granularity, taskPos.getX(), taskPos.getZ())))); } boolean worked = this.inProgressGenTasksByLodPos.remove(taskPos, newTaskGroup); LodUtil.assertTrue(worked); @@ -624,7 +624,7 @@ public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDeb // helper methods // //================// - private boolean canGeneratePos(byte worldGenTaskGroupDetailLevel /*when in doubt use 0*/ , DhSectionPos taskPos) + private boolean canGeneratePos(byte worldGenTaskGroupDetailLevel /*when in doubt use 0*/ , OldDhSectionPos taskPos) { byte granularity = (byte) (taskPos.getDetailLevel() - worldGenTaskGroupDetailLevel); return (granularity >= this.minGranularity && granularity <= this.maxGranularity); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenResult.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenResult.java index 27ffd37ef..b5b994e73 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenResult.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenResult.java @@ -19,7 +19,7 @@ package com.seibel.distanthorizons.core.generation.tasks; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import java.util.Collection; import java.util.LinkedList; @@ -30,15 +30,15 @@ public class WorldGenResult /** true if terrain was generated */ public final boolean success; /** the position that was generated, will be null if nothing was generated */ - public final DhSectionPos pos; + public final OldDhSectionPos pos; /** if a position is too high detail for world generator to handle it, these futures are for its 4 children positions after being split up. */ public final LinkedList> childFutures = new LinkedList<>(); public static WorldGenResult CreateSplit(Collection> siblingFutures) { return new WorldGenResult(false, null, siblingFutures); } public static WorldGenResult CreateFail() { return new WorldGenResult(false, null, null); } - public static WorldGenResult CreateSuccess(DhSectionPos pos) { return new WorldGenResult(true, pos, null); } - private WorldGenResult(boolean success, DhSectionPos pos, Collection> childFutures) + public static WorldGenResult CreateSuccess(OldDhSectionPos pos) { return new WorldGenResult(true, pos, null); } + private WorldGenResult(boolean success, OldDhSectionPos pos, Collection> childFutures) { this.success = success; this.pos = pos; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java index c9f52c617..ad85df4c6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTask.java @@ -19,8 +19,7 @@ package com.seibel.distanthorizons.core.generation.tasks; -import com.seibel.distanthorizons.core.pos.DhLodPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import java.util.concurrent.CompletableFuture; @@ -30,14 +29,14 @@ import java.util.concurrent.CompletableFuture; */ public final class WorldGenTask { - public final DhSectionPos pos; + public final OldDhSectionPos pos; public final byte dataDetailLevel; public final IWorldGenTaskTracker taskTracker; public final CompletableFuture future; - public WorldGenTask(DhSectionPos pos, byte dataDetail, IWorldGenTaskTracker taskTracker, CompletableFuture future) + public WorldGenTask(OldDhSectionPos pos, byte dataDetail, IWorldGenTaskTracker taskTracker, CompletableFuture future) { this.dataDetailLevel = dataDetail; this.pos = pos; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java index ea7b5b91e..413512a8e 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/tasks/WorldGenTaskGroup.java @@ -20,7 +20,7 @@ package com.seibel.distanthorizons.core.generation.tasks; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import java.util.Iterator; import java.util.LinkedList; @@ -33,14 +33,14 @@ import java.util.function.Consumer; @Deprecated // TODO look into how these are used and if they should continue to be used public final class WorldGenTaskGroup { - public final DhSectionPos pos; + public final OldDhSectionPos pos; public byte dataDetail; /** Only accessed by the generator polling thread */ public final LinkedList worldGenTasks = new LinkedList<>(); - public WorldGenTaskGroup(DhSectionPos pos, byte dataDetail) + public WorldGenTaskGroup(OldDhSectionPos pos, byte dataDetail) { this.pos = pos; this.dataDetail = dataDetail; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java index ccaba1934..7b197e509 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java @@ -24,7 +24,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour import com.seibel.distanthorizons.core.dataObjects.transformers.ChunkToLodBuilder; import com.seibel.distanthorizons.core.file.fullDatafile.DelayedFullDataSourceSaveCache; import com.seibel.distanthorizons.core.pos.DhChunkPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector; @@ -36,8 +36,8 @@ public abstract class AbstractDhLevel implements IDhLevel public final ChunkToLodBuilder chunkToLodBuilder; protected final DelayedFullDataSourceSaveCache delayedFullDataSourceSaveCache = new DelayedFullDataSourceSaveCache(this::onDataSourceSave, 2_000); - /** contains the {@link DhChunkPos} for each {@link DhSectionPos} that are queued to save via {@link AbstractDhLevel#delayedFullDataSourceSaveCache} */ - protected final ConcurrentHashMap> updatedChunkPosSetBySectionPos = new ConcurrentHashMap<>(); + /** contains the {@link DhChunkPos} for each {@link OldDhSectionPos} that are queued to save via {@link AbstractDhLevel#delayedFullDataSourceSaveCache} */ + protected final ConcurrentHashMap> updatedChunkPosSetBySectionPos = new ConcurrentHashMap<>(); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java index c24341d62..c4fab8db3 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java @@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.logging.f3.F3Screen; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.LodQuadTree; import com.seibel.distanthorizons.core.render.RenderBufferHandler; import com.seibel.distanthorizons.core.render.renderer.LodRenderer; @@ -313,7 +313,7 @@ public class ClientLevelModule implements Closeable, AbstractDataSourceHandler.I } } - public void reloadPos(DhSectionPos pos) + public void reloadPos(OldDhSectionPos pos) { ClientRenderState clientRenderState = this.ClientRenderStateRef.get(); if (clientRenderState != null && clientRenderState.quadtree != null) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java index 0527f61c9..26eec2a53 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper; @@ -199,7 +199,7 @@ public class DhClientServerLevel extends AbstractDhLevel implements IDhClientLev } @Override - public void onWorldGenTaskComplete(DhSectionPos pos) + public void onWorldGenTaskComplete(OldDhSectionPos pos) { DebugRenderer.makeParticle( new DebugRenderer.BoxParticle( diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java index 8b591258a..b7e8599c1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhServerLevel.java @@ -23,7 +23,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSour import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2; import com.seibel.distanthorizons.core.file.structure.AbstractSaveStructure; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper; @@ -105,7 +105,7 @@ public class DhServerLevel extends AbstractDhLevel implements IDhServerLevel public boolean hasSkyLight() { return this.serverLevelWrapper.hasSkyLight(); } @Override - public void onWorldGenTaskComplete(DhSectionPos pos) + public void onWorldGenTaskComplete(OldDhSectionPos pos) { //TODO: Send packet to client } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhLodPos.java b/core/src/main/java/com/seibel/distanthorizons/core/pos/DhLodPos.java index 2709fc6de..62a27e9c1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhLodPos.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/pos/DhLodPos.java @@ -53,7 +53,7 @@ public class DhLodPos implements Comparable this.x = x; this.z = z; } - public DhLodPos(DhSectionPos sectionPos) { this(sectionPos.getDetailLevel(), sectionPos.getX(), sectionPos.getZ()); } + public DhLodPos(OldDhSectionPos sectionPos) { this(sectionPos.getDetailLevel(), sectionPos.getX(), sectionPos.getZ()); } @@ -162,10 +162,10 @@ public class DhLodPos implements Comparable } /** - * @param sectionDetailLevel This is different from the normal LOD Detail level, see {@link DhSectionPos} for more information + * @param sectionDetailLevel This is different from the normal LOD Detail level, see {@link OldDhSectionPos} for more information * @throws IllegalArgumentException if this position's detail level is lower than the output detail level */ - public DhSectionPos getSectionPosWithSectionDetailLevel(byte sectionDetailLevel) throws IllegalArgumentException + public OldDhSectionPos getSectionPosWithSectionDetailLevel(byte sectionDetailLevel) throws IllegalArgumentException { if (sectionDetailLevel < this.detailLevel) { @@ -174,7 +174,7 @@ public class DhLodPos implements Comparable DhLodPos lodPos = new DhLodPos(this.detailLevel, this.x, this.z); lodPos = lodPos.convertToDetailLevel(sectionDetailLevel); - return new DhSectionPos(lodPos.detailLevel, lodPos.x, lodPos.z); + return new OldDhSectionPos(lodPos.detailLevel, lodPos.x, lodPos.z); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java b/core/src/main/java/com/seibel/distanthorizons/core/pos/OldDhSectionPos.java similarity index 86% rename from core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java rename to core/src/main/java/com/seibel/distanthorizons/core/pos/OldDhSectionPos.java index 8be858116..ce5544afa 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/pos/OldDhSectionPos.java @@ -43,7 +43,7 @@ import java.util.function.Function; * * @author Leetom */ -public class DhSectionPos +public class OldDhSectionPos { /** * The lowest detail level a Section position can hold. @@ -69,31 +69,31 @@ public class DhSectionPos // constructors // //==============// - public DhSectionPos(byte detailLevel, int x, int z) + public OldDhSectionPos(byte detailLevel, int x, int z) { this.detailLevel = detailLevel; this.x = x; this.z = z; } - public DhSectionPos(DhBlockPos blockPos) + public OldDhSectionPos(DhBlockPos blockPos) { this(LodUtil.BLOCK_DETAIL_LEVEL, blockPos.x, blockPos.z); - this.convertSelfToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + this.convertSelfToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); } - public DhSectionPos(DhBlockPos2D blockPos) + public OldDhSectionPos(DhBlockPos2D blockPos) { this(LodUtil.BLOCK_DETAIL_LEVEL, blockPos.x, blockPos.z); - this.convertSelfToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + this.convertSelfToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); } - public DhSectionPos(DhChunkPos chunkPos) + public OldDhSectionPos(DhChunkPos chunkPos) { this(LodUtil.CHUNK_DETAIL_LEVEL, chunkPos.x, chunkPos.z); - this.convertSelfToDetailLevel(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); + this.convertSelfToDetailLevel(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL); } - public DhSectionPos(byte detailLevel, DhLodPos dhLodPos) + public OldDhSectionPos(byte detailLevel, DhLodPos dhLodPos) { this.detailLevel = detailLevel; this.x = dhLodPos.x; @@ -111,9 +111,9 @@ public class DhSectionPos * * @return the new position closest to negative infinity with the new detail level */ - public DhSectionPos convertNewToDetailLevel(byte newSectionDetailLevel) + public OldDhSectionPos convertNewToDetailLevel(byte newSectionDetailLevel) { - DhSectionPos newPos = new DhSectionPos(this.detailLevel, this.x, this.z); + OldDhSectionPos newPos = new OldDhSectionPos(this.detailLevel, this.x, this.z); newPos.convertSelfToDetailLevel(newSectionDetailLevel); return newPos; @@ -175,12 +175,12 @@ public class DhSectionPos this.z * BitShiftUtil.powerOfTwo(offset)); } - public DhSectionPos getMinCornerPos(byte returnDetailLevel) + public OldDhSectionPos getMinCornerPos(byte returnDetailLevel) { LodUtil.assertTrue(returnDetailLevel <= this.detailLevel, "returnDetailLevel must be less than sectionDetail"); byte offset = (byte) (this.detailLevel - returnDetailLevel); - return new DhSectionPos(returnDetailLevel, + return new OldDhSectionPos(returnDetailLevel, this.x * BitShiftUtil.powerOfTwo(offset), this.z * BitShiftUtil.powerOfTwo(offset)); } @@ -193,7 +193,7 @@ public class DhSectionPos * 3 -> 8
* etc. * - * @return how many {@link DhSectionPos}'s at the given detail level it would take to span the width of this section. + * @return how many {@link OldDhSectionPos}'s at the given detail level it would take to span the width of this section. */ public int getWidthCountForLowerDetailedSection(byte returnDetailLevel) { @@ -253,7 +253,7 @@ public class DhSectionPos * * @param child0to3 must be an int between 0 and 3 */ - public DhSectionPos getChildByIndex(int child0to3) throws IllegalArgumentException, IllegalStateException + public OldDhSectionPos getChildByIndex(int child0to3) throws IllegalArgumentException, IllegalStateException { if (child0to3 < 0 || child0to3 > 3) { @@ -264,21 +264,21 @@ public class DhSectionPos throw new IllegalStateException("section detail must be greater than 0"); } - return new DhSectionPos((byte) (this.detailLevel - 1), + return new OldDhSectionPos((byte) (this.detailLevel - 1), this.x * 2 + (child0to3 & 1), this.z * 2 + BitShiftUtil.half(child0to3 & 2)); } /** Returns this position's child index in its parent */ public int getChildIndexOfParent() { return (this.x & 1) + BitShiftUtil.square(this.z & 1); } - public DhSectionPos getParentPos() { return new DhSectionPos((byte) (this.detailLevel + 1), BitShiftUtil.half(this.x), BitShiftUtil.half(this.z)); } + public OldDhSectionPos getParentPos() { return new OldDhSectionPos((byte) (this.detailLevel + 1), BitShiftUtil.half(this.x), BitShiftUtil.half(this.z)); } - public DhSectionPos getAdjacentPos(EDhDirection dir) + public OldDhSectionPos getAdjacentPos(EDhDirection dir) { - return new DhSectionPos(this.detailLevel, + return new OldDhSectionPos(this.detailLevel, this.x + dir.getNormal().x, this.z + dir.getNormal().z); } @@ -291,7 +291,7 @@ public class DhSectionPos // comparisons // //=============// - public boolean overlapsExactly(DhSectionPos other) + public boolean overlapsExactly(OldDhSectionPos other) { // original logic from DhLodPos if (this.equals(other)) @@ -312,7 +312,7 @@ public class DhSectionPos } } - public boolean contains(DhSectionPos otherPos) + public boolean contains(OldDhSectionPos otherPos) { DhBlockPos2D thisMinBlockPos = this.getMinCornerLodPos(LodUtil.BLOCK_DETAIL_LEVEL).getCornerBlockPos(); DhBlockPos2D otherCornerBlockPos = otherPos.getMinCornerLodPos(LodUtil.BLOCK_DETAIL_LEVEL).getCornerBlockPos(); @@ -331,7 +331,7 @@ public class DhSectionPos //===========// /** Applies the given consumer to all 4 of this position's children. */ - public void forEachChild(Consumer callback) + public void forEachChild(Consumer callback) { for (int i = 0; i < 4; i++) { @@ -340,7 +340,7 @@ public class DhSectionPos } /** Applies the given consumer to all children of the position at the given section detail level. */ - public void forEachChildDownToDetailLevel(byte minSectionDetailLevel, Function callback) + public void forEachChildDownToDetailLevel(byte minSectionDetailLevel, Function callback) { boolean stop = callback.apply(this); if (stop || minSectionDetailLevel == this.detailLevel) @@ -355,7 +355,7 @@ public class DhSectionPos } /** Applies the given consumer to all children of the position at the given section detail level. */ - public void forEachChildAtDetailLevel(byte sectionDetailLevel, Consumer callback) + public void forEachChildAtDetailLevel(byte sectionDetailLevel, Consumer callback) { if (sectionDetailLevel == this.detailLevel) { @@ -370,7 +370,7 @@ public class DhSectionPos } /** Applies the given consumer to all children of the position at the given section detail level. */ - public void forEachPosUpToDetailLevel(byte maxSectionDetailLevel, Consumer callback) + public void forEachPosUpToDetailLevel(byte maxSectionDetailLevel, Consumer callback) { callback.accept(this); if (maxSectionDetailLevel == this.detailLevel) @@ -393,12 +393,12 @@ public class DhSectionPos public String serialize() { return "[" + this.detailLevel + ',' + this.x + ',' + this.z + ']'; } @Nullable - public static DhSectionPos deserialize(String value) + public static OldDhSectionPos deserialize(String value) { if (value.charAt(0) != '[' || value.charAt(value.length() - 1) != ']') return null; String[] split = value.substring(1, value.length() - 1).split(","); if (split.length != 3) return null; - return new DhSectionPos(Byte.parseByte(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])); + return new OldDhSectionPos(Byte.parseByte(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])); } @@ -418,12 +418,12 @@ public class DhSectionPos { return true; } - if (obj == null || obj.getClass() != DhSectionPos.class) + if (obj == null || obj.getClass() != OldDhSectionPos.class) { return false; } - DhSectionPos that = (DhSectionPos) obj; + OldDhSectionPos that = (OldDhSectionPos) obj; return this.detailLevel == that.detailLevel && this.x == that.x && this.z == that.z; @@ -444,12 +444,12 @@ public class DhSectionPos //=============// /** - * Identical to {@link DhSectionPos} except it is mutable. - * See {@link DhSectionPos} for full documentation. + * Identical to {@link OldDhSectionPos} except it is mutable. + * See {@link OldDhSectionPos} for full documentation. * - * @see DhSectionPos + * @see OldDhSectionPos */ - public static class DhMutableSectionPos extends DhSectionPos + public static class DhMutableSectionPos extends OldDhSectionPos { //==============// diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java index 681aba2c1..2441fadfe 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV import com.seibel.distanthorizons.core.level.IDhClientLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.renderer.DebugRenderer; import com.seibel.distanthorizons.core.render.renderer.IDebugRenderable; import com.seibel.distanthorizons.core.util.LodUtil; @@ -68,10 +68,10 @@ public class LodQuadTree extends QuadTree implements IDebugRen private final FullDataSourceProviderV2 fullDataSourceProvider; /** - * This holds every {@link DhSectionPos} that should be reloaded next tick.
+ * This holds every {@link OldDhSectionPos} that should be reloaded next tick.
* This is a {@link ConcurrentLinkedQueue} because new sections can be added to this list via the world generator threads. */ - private final ConcurrentLinkedQueue sectionsToReload = new ConcurrentLinkedQueue<>(); + private final ConcurrentLinkedQueue sectionsToReload = new ConcurrentLinkedQueue<>(); private final IDhClientLevel level; //FIXME: Proper hierarchy to remove this reference! private final ConfigChangeListener horizontalScaleChangeListener; private final ReentrantLock treeReadWriteLock = new ReentrantLock(); @@ -181,7 +181,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen // reload any sections that need it - DhSectionPos pos; + OldDhSectionPos pos; while ((pos = this.sectionsToReload.poll()) != null) { // walk up the tree until we hit the root node @@ -207,11 +207,11 @@ public class LodQuadTree extends QuadTree implements IDebugRen // walk through each root node ArrayList nodesNeedingRetrieval = new ArrayList<>(); ArrayList nodesNeedingLoading = new ArrayList<>(); - Iterator rootPosIterator = this.rootNodePosIterator(); + Iterator rootPosIterator = this.rootNodePosIterator(); while (rootPosIterator.hasNext()) { // make sure all root nodes have been created - DhSectionPos rootPos = rootPosIterator.next(); + OldDhSectionPos rootPos = rootPosIterator.next(); if (this.getNode(rootPos) == null) { this.setValue(rootPos, new LodRenderSection(rootPos, this, this.level, this.fullDataSourceProvider)); @@ -250,7 +250,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen /** @return whether the current position is able to render (note: not if it IS rendering, just if it is ABLE to.) */ private boolean recursivelyUpdateRenderSectionNode( DhBlockPos2D playerPos, - QuadNode rootNode, QuadNode quadNode, DhSectionPos sectionPos, + QuadNode rootNode, QuadNode quadNode, OldDhSectionPos sectionPos, boolean parentSectionIsRendering, ArrayList nodesNeedingRetrieval, ArrayList nodesNeedingLoading) @@ -292,7 +292,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen //byte expectedDetailLevel = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL + 3; // can be used instead of the following logic for testing byte expectedDetailLevel = this.calculateExpectedDetailLevel(playerPos, sectionPos); expectedDetailLevel = (byte) Math.min(expectedDetailLevel, this.minRenderDetailLevel); - expectedDetailLevel += DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL; + expectedDetailLevel += OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL; if (sectionPos.getDetailLevel() > expectedDetailLevel) @@ -302,10 +302,10 @@ public class LodQuadTree extends QuadTree implements IDebugRen boolean allChildrenSectionsAreLoaded = true; // recursively update all child render sections - Iterator childPosIterator = quadNode.getChildPosIterator(); + Iterator childPosIterator = quadNode.getChildPosIterator(); while (childPosIterator.hasNext()) { - DhSectionPos childPos = childPosIterator.next(); + OldDhSectionPos childPos = childPosIterator.next(); QuadNode childNode = rootNode.getNode(childPos); boolean childSectionLoaded = this.recursivelyUpdateRenderSectionNode(playerPos, rootNode, childNode, childPos, thisPosIsRendering || parentSectionIsRendering, nodesNeedingRetrieval, nodesNeedingLoading); @@ -338,7 +338,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen childPosIterator = quadNode.getChildPosIterator(); while (childPosIterator.hasNext()) { - DhSectionPos childPos = childPosIterator.next(); + OldDhSectionPos childPos = childPosIterator.next(); QuadNode childNode = rootNode.getNode(childPos); boolean childSectionLoaded = this.recursivelyUpdateRenderSectionNode(playerPos, rootNode, childNode, childPos, parentSectionIsRendering, nodesNeedingRetrieval, nodesNeedingLoading); @@ -445,7 +445,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen * @param sectionPos section position * @return detail level of this section pos */ - public byte calculateExpectedDetailLevel(DhBlockPos2D playerPos, DhSectionPos sectionPos) { return this.getDetailLevelFromDistance(playerPos.dist(sectionPos.getCenterBlockPosX(), sectionPos.getCenterBlockPosZ())); } + public byte calculateExpectedDetailLevel(DhBlockPos2D playerPos, OldDhSectionPos sectionPos) { return this.getDetailLevelFromDistance(playerPos.dist(sectionPos.getCenterBlockPosX(), sectionPos.getCenterBlockPosZ())); } private byte getDetailLevelFromDistance(double distance) { double maxDetailDistance = this.getDrawDistanceFromDetail(Byte.MAX_VALUE - 1); @@ -537,7 +537,7 @@ public class LodQuadTree extends QuadTree implements IDebugRen * Can be called whenever a render section's data needs to be refreshed.
* This should be called whenever a world generation task is completed or if the connected server has new data to show. */ - public void reloadPos(@NotNull DhSectionPos pos) + public void reloadPos(@NotNull OldDhSectionPos pos) { if (pos == null) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java index 2a9210c74..f27b503a6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.enums.EDhDirection; import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2; import com.seibel.distanthorizons.core.level.IDhClientLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.glObject.GLProxy; import com.seibel.distanthorizons.core.render.renderer.IDebugRenderable; import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.ColumnRenderBuffer; @@ -56,7 +56,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable - public final DhSectionPos pos; + public final OldDhSectionPos pos; private final IDhClientLevel level; @WillNotClose @@ -85,7 +85,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable private boolean missingPositionsCalculated = false; /** should be an empty array if no positions need to be generated */ - private ArrayList missingGenerationPos = null; + private ArrayList missingGenerationPos = null; @@ -93,7 +93,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable // constructor // //=============// - public LodRenderSection(DhSectionPos pos, LodQuadTree quadTree, IDhClientLevel level, FullDataSourceProviderV2 fullDataSourceProvider) + public LodRenderSection(OldDhSectionPos pos, LodQuadTree quadTree, IDhClientLevel level, FullDataSourceProviderV2 fullDataSourceProvider) { this.pos = pos; this.quadTree = quadTree; @@ -236,7 +236,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable EDhDirection direction = EDhDirection.ADJ_DIRECTIONS[i]; int arrayIndex = direction.ordinal() - 2; - DhSectionPos adjPos = this.pos.getAdjacentPos(direction); + OldDhSectionPos adjPos = this.pos.getAdjacentPos(direction); try { LodRenderSection adjRenderSection = this.quadTree.getValue(adjPos); @@ -350,7 +350,7 @@ public class LodRenderSection implements IDebugRenderable, AutoCloseable break; } - DhSectionPos pos = this.missingGenerationPos.remove(i); + OldDhSectionPos pos = this.missingGenerationPos.remove(i); boolean positionQueued = this.fullDataSourceProvider.queuePositionForRetrieval(pos); if (!positionQueued) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java index e7c8524dc..b727ed8a0 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java @@ -31,7 +31,7 @@ import com.seibel.distanthorizons.core.enums.EDhDirection; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.logging.f3.F3Screen; import com.seibel.distanthorizons.core.pos.DhLodPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.pos.Pos2D; import com.seibel.distanthorizons.core.render.renderer.LodRenderer; import com.seibel.distanthorizons.core.util.LodUtil; @@ -309,7 +309,7 @@ public class RenderBufferHandler implements AutoCloseable { QuadNode node = nodeIterator.next(); - DhSectionPos sectionPos = node.sectionPos; + OldDhSectionPos sectionPos = node.sectionPos; LodRenderSection renderSection = node.value; if (renderSection == null) { @@ -425,9 +425,9 @@ public class RenderBufferHandler implements AutoCloseable private static class LoadedRenderBuffer { public final ColumnRenderBuffer buffer; - public final DhSectionPos pos; + public final OldDhSectionPos pos; - LoadedRenderBuffer(ColumnRenderBuffer buffer, DhSectionPos pos) + LoadedRenderBuffer(ColumnRenderBuffer buffer, OldDhSectionPos pos) { this.buffer = buffer; this.pos = pos; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java index c6fa77bbc..938014339 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java @@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.logging.ConfigBasedLogger; import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; import com.seibel.distanthorizons.core.pos.DhLodPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.render.glObject.GLState; import com.seibel.distanthorizons.core.render.glObject.buffer.GLElementBuffer; import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; @@ -288,12 +288,12 @@ public class DebugRenderer this.color = color; } - public Box(DhSectionPos pos, float minY, float maxY, float marginPercent, Color color) + public Box(OldDhSectionPos pos, float minY, float maxY, float marginPercent, Color color) { this(pos.getSectionBBoxPos(), minY, maxY, marginPercent, color); } - public Box(DhSectionPos pos, float y, float yDiff, Object hash, float marginPercent, Color color) + public Box(OldDhSectionPos pos, float y, float yDiff, Object hash, float marginPercent, Color color) { this(pos.getSectionBBoxPos(), y, yDiff, hash, marginPercent, color); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV1DTO.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV1DTO.java index 6c5d1d7ce..af9263a07 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV1DTO.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV1DTO.java @@ -22,21 +22,19 @@ package com.seibel.distanthorizons.core.sql.dto; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV1; -import com.seibel.distanthorizons.core.dataObjects.render.ColumnRenderSource; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.concurrent.atomic.AtomicLong; /** * Handles storing{@link FullDataSourceV1}'s in the database. */ -public class FullDataSourceV1DTO implements IBaseDTO +public class FullDataSourceV1DTO implements IBaseDTO { - public DhSectionPos pos; + public OldDhSectionPos pos; public int checksum; public byte dataDetailLevel; public EDhApiWorldGenerationStep worldGenStep; @@ -54,7 +52,7 @@ public class FullDataSourceV1DTO implements IBaseDTO // constructor // //=============// - public FullDataSourceV1DTO(DhSectionPos pos, int checksum, byte dataDetailLevel, EDhApiWorldGenerationStep worldGenStep, String dataType, byte binaryDataFormatVersion, byte[] dataArray) + public FullDataSourceV1DTO(OldDhSectionPos pos, int checksum, byte dataDetailLevel, EDhApiWorldGenerationStep worldGenStep, String dataType, byte binaryDataFormatVersion, byte[] dataArray) { this.pos = pos; this.checksum = checksum; @@ -83,7 +81,7 @@ public class FullDataSourceV1DTO implements IBaseDTO //===========// @Override - public DhSectionPos getKey() { return this.pos; } + public OldDhSectionPos getKey() { return this.pos; } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java index 99ba7e88a..55eef4062 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/dto/FullDataSourceV2DTO.java @@ -24,7 +24,7 @@ import com.seibel.distanthorizons.api.enums.config.EDhApiWorldCompressionMode; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep; import com.seibel.distanthorizons.core.dataObjects.fullData.FullDataPointIdMap; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.FullDataPointUtil; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.objects.DataCorruptedException; @@ -39,12 +39,12 @@ import java.util.zip.Adler32; import java.util.zip.CheckedOutputStream; /** handles storing {@link FullDataSourceV2}'s in the database. */ -public class FullDataSourceV2DTO implements IBaseDTO +public class FullDataSourceV2DTO implements IBaseDTO { public static final boolean VALIDATE_INPUT_DATAPOINTS = true; - public DhSectionPos pos; + public OldDhSectionPos pos; public int levelMinY; @@ -91,7 +91,7 @@ public class FullDataSourceV2DTO implements IBaseDTO } public FullDataSourceV2DTO( - DhSectionPos pos, + OldDhSectionPos pos, int dataChecksum, byte[] compressedColumnGenStepByteArray, byte[] compressedWorldCompressionModeByteArray, byte dataFormatVersion, byte compressionModeValue, byte[] compressedDataByteArray, long lastModifiedUnixDateTime, long createdUnixDateTime, byte[] compressedMappingByteArray, boolean applyToParent, @@ -342,7 +342,7 @@ public class FullDataSourceV2DTO implements IBaseDTO return byteArrayOutputStream.toByteArray(); } - private static FullDataPointIdMap readBlobToDataMapping(byte[] compressedMappingByteArray, DhSectionPos pos, @NotNull ILevelWrapper levelWrapper, EDhApiDataCompressionMode compressionModeEnum) throws IOException, InterruptedException, DataCorruptedException + private static FullDataPointIdMap readBlobToDataMapping(byte[] compressedMappingByteArray, OldDhSectionPos pos, @NotNull ILevelWrapper levelWrapper, EDhApiDataCompressionMode compressionModeEnum) throws IOException, InterruptedException, DataCorruptedException { ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(compressedMappingByteArray); DhDataInputStream compressedIn = new DhDataInputStream(byteArrayInputStream, compressionModeEnum); @@ -358,7 +358,7 @@ public class FullDataSourceV2DTO implements IBaseDTO //===========// @Override - public DhSectionPos getKey() { return this.pos; } + public OldDhSectionPos getKey() { return this.pos; } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java index 20e5e7014..5b3316748 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java @@ -20,7 +20,6 @@ package com.seibel.distanthorizons.core.sql.repo; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; import com.seibel.distanthorizons.core.sql.DatabaseUpdater; import com.seibel.distanthorizons.core.sql.DbConnectionClosedException; import com.seibel.distanthorizons.core.sql.dto.IBaseDTO; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV1Repo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV1Repo.java index 03a9f232c..65d1f10c4 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV1Repo.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV1Repo.java @@ -20,7 +20,7 @@ package com.seibel.distanthorizons.core.sql.repo; import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV1DTO; import com.seibel.distanthorizons.coreapi.util.StringUtil; @@ -30,7 +30,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class FullDataSourceV1Repo extends AbstractDhRepo +public class FullDataSourceV1Repo extends AbstractDhRepo { public static final String TABLE_NAME = "Legacy_FullData_V1"; @@ -55,7 +55,7 @@ public class FullDataSourceV1Repo extends AbstractDhRepo objectMap) throws ClassCastException { String posString = (String) objectMap.get("DhSectionPos"); - DhSectionPos pos = DhSectionPos.deserialize(posString); + OldDhSectionPos pos = OldDhSectionPos.deserialize(posString); // meta data int checksum = (Integer) objectMap.get("Checksum"); @@ -162,7 +162,7 @@ public class FullDataSourceV1Repo extends AbstractDhRepo - * Returns {@link DhSectionPos#SECTION_MINIMUM_DETAIL_LEVEL} if no data is present. + * Returns {@link OldDhSectionPos#SECTION_MINIMUM_DETAIL_LEVEL} if no data is present. */ public int getMaxSectionDetailLevel() { @@ -177,7 +177,7 @@ public class FullDataSourceV1Repo extends AbstractDhRepo getPositionsToMigrate(int returnCount) + public ArrayList getPositionsToMigrate(int returnCount) { - ArrayList list = new ArrayList<>(); + ArrayList list = new ArrayList<>(); List> resultMapList = this.queryDictionary( "select DhSectionPos " + @@ -218,14 +218,14 @@ public class FullDataSourceV1Repo extends AbstractDhRepo resultMap : resultMapList) { // returned in the format [sectionDetailLevel,x,z] IE [6,0,0] - DhSectionPos sectionPos = DhSectionPos.deserialize((String) resultMap.get("DhSectionPos")); + OldDhSectionPos sectionPos = OldDhSectionPos.deserialize((String) resultMap.get("DhSectionPos")); list.add(sectionPos); } return list; } - public void markMigrationFailed(DhSectionPos pos) + public void markMigrationFailed(OldDhSectionPos pos) { String sql = "UPDATE "+this.getTableName()+" \n" + @@ -260,7 +260,7 @@ public class FullDataSourceV1Repo extends AbstractDhRepo getUnusedDataSourcePositionStringList(int deleteCount) { List> deletePosResultMapList = this.queryDictionary( diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java index 7f3df8519..1b44e0cfc 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java @@ -22,9 +22,8 @@ package com.seibel.distanthorizons.core.sql.repo; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO; -import com.seibel.distanthorizons.core.util.objects.DataCorruptedException; import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataInputStream; import org.apache.logging.log4j.Logger; @@ -36,7 +35,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -public class FullDataSourceV2Repo extends AbstractDhRepo +public class FullDataSourceV2Repo extends AbstractDhRepo { private static final Logger LOGGER = DhLoggerBuilder.getLogger(); @@ -61,9 +60,9 @@ public class FullDataSourceV2Repo extends AbstractDhRepo objectMap) throws ClassCastException { byte detailLevel = (Byte) objectMap.get("DetailLevel"); - byte sectionDetailLevel = (byte) (detailLevel + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); + byte sectionDetailLevel = (byte) (detailLevel + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); int posX = (Integer) objectMap.get("PosX"); int posZ = (Integer) objectMap.get("PosZ"); - DhSectionPos pos = new DhSectionPos(sectionDetailLevel, posX, posZ); + OldDhSectionPos pos = new OldDhSectionPos(sectionDetailLevel, posX, posZ); int minY = (Integer) objectMap.get("MinY"); int dataChecksum = (Integer) objectMap.get("DataChecksum"); @@ -128,7 +127,7 @@ public class FullDataSourceV2Repo extends AbstractDhRepo getPositionsToUpdate(int returnCount) + public ArrayList getPositionsToUpdate(int returnCount) { - ArrayList list = new ArrayList<>(); + ArrayList list = new ArrayList<>(); List> resultMapList = this.queryDictionary( "select DetailLevel, PosX, PosZ " + @@ -226,11 +225,11 @@ public class FullDataSourceV2Repo extends AbstractDhRepo resultMap : resultMapList) { byte detailLevel = (Byte) resultMap.get("DetailLevel"); - byte sectionDetailLevel = (byte) (detailLevel + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); + byte sectionDetailLevel = (byte) (detailLevel + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); int posX = (Integer) resultMap.get("PosX"); int posZ = (Integer) resultMap.get("PosZ"); - DhSectionPos pos = new DhSectionPos(sectionDetailLevel, posX, posZ); + OldDhSectionPos pos = new OldDhSectionPos(sectionDetailLevel, posX, posZ); list.add(pos); } @@ -238,9 +237,9 @@ public class FullDataSourceV2Repo extends AbstractDhRepo resultMap = this.queryDictionaryFirst( "select ColumnGenerationStep, CompressionMode " + @@ -284,9 +283,9 @@ public class FullDataSourceV2Repo extends AbstractDhRepo getAllPositions() + public ArrayList getAllPositions() { - ArrayList list = new ArrayList<>(); + ArrayList list = new ArrayList<>(); List> resultMapList = this.queryDictionary( "select DetailLevel, PosX, PosZ " + @@ -295,11 +294,11 @@ public class FullDataSourceV2Repo extends AbstractDhRepo resultMap : resultMapList) { byte detailLevel = (Byte) resultMap.get("DetailLevel"); - byte sectionDetailLevel = (byte) (detailLevel + DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); + byte sectionDetailLevel = (byte) (detailLevel + OldDhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL); int posX = (Integer) resultMap.get("PosX"); int posZ = (Integer) resultMap.get("PosZ"); - DhSectionPos pos = new DhSectionPos(sectionDetailLevel, posX, posZ); + OldDhSectionPos pos = new OldDhSectionPos(sectionDetailLevel, posX, posZ); list.add(pos); } @@ -310,9 +309,9 @@ public class FullDataSourceV2Repo extends AbstractDhRepo resultMap = this.queryDictionaryFirst( "select LENGTH(Data) as dataSize " + diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java index a8794be82..7754b3dbb 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java @@ -20,7 +20,7 @@ package com.seibel.distanthorizons.core.util.objects.quadTree; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.util.objects.quadTree.iterators.QuadNodeDirectChildIterator; import com.seibel.distanthorizons.core.util.objects.quadTree.iterators.QuadNodeDirectChildPosIterator; @@ -35,7 +35,7 @@ public class QuadNode private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - public final DhSectionPos sectionPos; + public final OldDhSectionPos sectionPos; public final byte minimumDetailLevel; public T value; @@ -67,7 +67,7 @@ public class QuadNode - public QuadNode(DhSectionPos sectionPos, byte minimumDetailLevel) + public QuadNode(OldDhSectionPos sectionPos, byte minimumDetailLevel) { this.sectionPos = sectionPos; this.minimumDetailLevel = minimumDetailLevel; @@ -145,14 +145,14 @@ public class QuadNode * @return the node at the given position * @throws IllegalArgumentException if childSectionPos has the wrong detail level or is outside the bounds of this node */ - public QuadNode getNode(DhSectionPos sectionPos) throws IllegalArgumentException { return this.getOrSetValue(sectionPos, false, null); } + public QuadNode getNode(OldDhSectionPos sectionPos) throws IllegalArgumentException { return this.getOrSetValue(sectionPos, false, null); } /** * @param sectionPos must be 1 detail level lower than this node's detail level * @return the value at the given position before the new value was set * @throws IllegalArgumentException if childSectionPos has the wrong detail level or is outside the bounds of this node */ - public T setValue(DhSectionPos sectionPos, T newValue) throws IllegalArgumentException + public T setValue(OldDhSectionPos sectionPos, T newValue) throws IllegalArgumentException { QuadNode previousNode = this.getNode(sectionPos); if (previousNode != null) @@ -173,7 +173,7 @@ public class QuadNode * @return the node at the given position before the new node was set (if the new node should be set) * @throws IllegalArgumentException if childSectionPos has the wrong detail level or is outside the bounds of this */ - private QuadNode getOrSetValue(DhSectionPos inputSectionPos, boolean replaceValue, T newValue) throws IllegalArgumentException + private QuadNode getOrSetValue(OldDhSectionPos inputSectionPos, boolean replaceValue, T newValue) throws IllegalArgumentException { // debug validation @@ -217,10 +217,10 @@ public class QuadNode // LOGGER.info((replaceValue ? "set " : "get ")+inputSectionPos+" center block: "+inputSectionPos.getCenter().getCornerBlockPos()+", this pos: "+this.sectionPos+" this center block: "+this.sectionPos.getCenter().getCornerBlockPos()); - DhSectionPos nwPos = this.sectionPos.getChildByIndex(0); - DhSectionPos swPos = this.sectionPos.getChildByIndex(1); - DhSectionPos nePos = this.sectionPos.getChildByIndex(2); - DhSectionPos sePos = this.sectionPos.getChildByIndex(3); + OldDhSectionPos nwPos = this.sectionPos.getChildByIndex(0); + OldDhSectionPos swPos = this.sectionPos.getChildByIndex(1); + OldDhSectionPos nePos = this.sectionPos.getChildByIndex(2); + OldDhSectionPos sePos = this.sectionPos.getChildByIndex(3); // look for the child that contains the input position (there may be a faster way to do this, but this works for now) QuadNode childNode; @@ -293,7 +293,7 @@ public class QuadNode public Iterator> getLeafNodeIterator() { return new QuadTreeNodeIterator<>(this, true); } /** positions can point to null children */ - public Iterator getChildPosIterator() { return new QuadNodeDirectChildPosIterator<>(this); } + public Iterator getChildPosIterator() { return new QuadNodeDirectChildPosIterator<>(this); } public Iterator> getChildNodeIterator() { return new QuadNodeDirectChildIterator<>(this); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java index d9bf38804..51d730410 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java @@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.util.objects.quadTree; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; import com.seibel.distanthorizons.core.pos.DhLodPos; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.pos.Pos2D; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.coreapi.util.BitShiftUtil; @@ -93,9 +93,9 @@ public class QuadTree //=====================// /** @return the node at the given section position */ - public final QuadNode getNode(DhSectionPos pos) throws IndexOutOfBoundsException { return this.getOrSetNode(pos, false, null, true); } + public final QuadNode getNode(OldDhSectionPos pos) throws IndexOutOfBoundsException { return this.getOrSetNode(pos, false, null, true); } /** @return the value at the given section position */ - public final T getValue(DhSectionPos pos) throws IndexOutOfBoundsException + public final T getValue(OldDhSectionPos pos) throws IndexOutOfBoundsException { QuadNode node = this.getNode(pos); if (node != null) @@ -106,7 +106,7 @@ public class QuadTree } /** @return the value that was previously in the given position, null if nothing */ - public final T setValue(DhSectionPos pos, T value) throws IndexOutOfBoundsException + public final T setValue(OldDhSectionPos pos, T value) throws IndexOutOfBoundsException { T previousValue = this.getValue(pos); this.getOrSetNode(pos, true, value, true); @@ -114,7 +114,7 @@ public class QuadTree } /** @param runBoundaryChecks should only ever be set to true internally for removing out of bound nodes */ - protected final QuadNode getOrSetNode(DhSectionPos pos, boolean setNewValue, T newValue, boolean runBoundaryChecks) throws IndexOutOfBoundsException + protected final QuadNode getOrSetNode(OldDhSectionPos pos, boolean setNewValue, T newValue, boolean runBoundaryChecks) throws IndexOutOfBoundsException { if (runBoundaryChecks && !this.isSectionPosInBounds(pos)) { @@ -126,7 +126,7 @@ public class QuadTree - DhSectionPos rootPos = pos.convertNewToDetailLevel(this.treeMinDetailLevel); + OldDhSectionPos rootPos = pos.convertNewToDetailLevel(this.treeMinDetailLevel); int ringListPosX = rootPos.getX(); int ringListPosZ = rootPos.getZ(); @@ -160,7 +160,7 @@ public class QuadTree return returnNode; } - public boolean isSectionPosInBounds(DhSectionPos testPos) + public boolean isSectionPosInBounds(OldDhSectionPos testPos) { // check if the testPos is within the detail level limits of the tree boolean detailLevelWithinBounds = this.treeMaxDetailLevel <= testPos.getDetailLevel() && testPos.getDetailLevel() <= this.treeMinDetailLevel; @@ -174,7 +174,7 @@ public class QuadTree DhBlockPos2D treeBlockCorner = this.centerBlockPos.add(new DhBlockPos2D(-this.diameterInBlocks / 2, -this.diameterInBlocks / 2)); DhLodPos treeCornerPos = new DhLodPos((byte) 0, treeBlockCorner.x, treeBlockCorner.z); - DhSectionPos inputSectionCorner = testPos.convertNewToDetailLevel((byte) 0); + OldDhSectionPos inputSectionCorner = testPos.convertNewToDetailLevel((byte) 0); DhLodPos inputCornerPos = new DhLodPos((byte) 0, inputSectionCorner.getX(), inputSectionCorner.getZ()); int inputBlockWidth = BitShiftUtil.powerOfTwo(testPos.getDetailLevel()); @@ -202,13 +202,13 @@ public class QuadTree } - public int getNonNullChildCountAtPos(DhSectionPos pos) { return this.getChildCountAtPos(pos, false); } - public int getChildCountAtPos(DhSectionPos pos, boolean includeNullValues) + public int getNonNullChildCountAtPos(OldDhSectionPos pos) { return this.getChildCountAtPos(pos, false); } + public int getChildCountAtPos(OldDhSectionPos pos, boolean includeNullValues) { int childCount = 0; for (int i = 0; i < 4; i++) { - DhSectionPos childPos = pos.getChildByIndex(i); + OldDhSectionPos childPos = pos.getChildByIndex(i); if (this.isSectionPosInBounds(childPos)) { T value = this.getValue(childPos); @@ -229,7 +229,7 @@ public class QuadTree //===========// /** can include null nodes */ - public Iterator rootNodePosIterator() { return new QuadTreeRootPosIterator(true); } + public Iterator rootNodePosIterator() { return new QuadTreeRootPosIterator(true); } public Iterator> nodeIterator() { return new QuadTreeNodeIterator(false); } public Iterator> leafNodeIterator() { return new QuadTreeNodeIterator(true); } @@ -394,9 +394,9 @@ public class QuadTree // iterator classes // //==================// - private class QuadTreeRootPosIterator implements Iterator + private class QuadTreeRootPosIterator implements Iterator { - private final Queue iteratorPosQueue = new ArrayDeque<>(); + private final Queue iteratorPosQueue = new ArrayDeque<>(); @@ -407,7 +407,7 @@ public class QuadTree if (node != null || includeNullNodes) { // TODO can these DhSectionPos be pooled? - DhSectionPos rootPos = new DhSectionPos(QuadTree.this.treeMinDetailLevel, pos2D.x, pos2D.y); + OldDhSectionPos rootPos = new OldDhSectionPos(QuadTree.this.treeMinDetailLevel, pos2D.x, pos2D.y); if (QuadTree.this.isSectionPosInBounds(rootPos)) { this.iteratorPosQueue.add(rootPos); @@ -422,7 +422,7 @@ public class QuadTree public boolean hasNext() { return this.iteratorPosQueue.size() != 0; } @Override - public DhSectionPos next() + public OldDhSectionPos next() { if (this.iteratorPosQueue.size() == 0) { @@ -430,7 +430,7 @@ public class QuadTree } - DhSectionPos sectionPos = this.iteratorPosQueue.poll(); + OldDhSectionPos sectionPos = this.iteratorPosQueue.poll(); return sectionPos; } @@ -440,7 +440,7 @@ public class QuadTree public void remove() { throw new UnsupportedOperationException("remove"); } @Override - public void forEachRemaining(Consumer action) { Iterator.super.forEachRemaining(action); } + public void forEachRemaining(Consumer action) { Iterator.super.forEachRemaining(action); } } @@ -498,7 +498,7 @@ public class QuadTree Iterator> nodeIterator = null; while ((nodeIterator == null || !nodeIterator.hasNext()) && this.rootNodeIterator.hasNext()) { - DhSectionPos sectionPos = this.rootNodeIterator.next(); + OldDhSectionPos sectionPos = this.rootNodeIterator.next(); QuadNode rootNode = QuadTree.this.getNode(sectionPos); if (rootNode != null) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/iterators/QuadNodeDirectChildPosIterator.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/iterators/QuadNodeDirectChildPosIterator.java index 87dba9afe..804430d6c 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/iterators/QuadNodeDirectChildPosIterator.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/iterators/QuadNodeDirectChildPosIterator.java @@ -19,14 +19,14 @@ package com.seibel.distanthorizons.core.util.objects.quadTree.iterators; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.objects.quadTree.QuadNode; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.function.Consumer; -public class QuadNodeDirectChildPosIterator implements Iterator +public class QuadNodeDirectChildPosIterator implements Iterator { private final QuadNodeChildIndexIterator childIndexIterator; private final QuadNode parentNode; @@ -44,7 +44,7 @@ public class QuadNodeDirectChildPosIterator implements Iterator public boolean hasNext() { return this.childIndexIterator.hasNext(); } @Override - public DhSectionPos next() + public OldDhSectionPos next() { if (!this.hasNext()) { @@ -53,7 +53,7 @@ public class QuadNodeDirectChildPosIterator implements Iterator int childIndex = this.childIndexIterator.next(); - DhSectionPos sectionPos = this.parentNode.sectionPos.getChildByIndex(childIndex); + OldDhSectionPos sectionPos = this.parentNode.sectionPos.getChildByIndex(childIndex); return sectionPos; } @@ -63,6 +63,6 @@ public class QuadNodeDirectChildPosIterator implements Iterator public void remove() { throw new UnsupportedOperationException("remove"); } @Override - public void forEachRemaining(Consumer action) { Iterator.super.forEachRemaining(action); } + public void forEachRemaining(Consumer action) { Iterator.super.forEachRemaining(action); } } \ No newline at end of file diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java index 515c8c04a..eed050857 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java @@ -1,7 +1,7 @@ package com.seibel.distanthorizons.core.util.threading; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.util.ThreadUtil; import org.apache.logging.log4j.Logger; @@ -15,7 +15,7 @@ import java.util.concurrent.locks.ReentrantLock; /** * Handles creating and destroying {@link ReentrantLock}'s for - * a given {@link DhSectionPos}. + * a given {@link OldDhSectionPos}. * This is necessary since we need an unlimited number of locks * when handling data updating, but we don't want to infinitely create locks. * This provider will create/destroy locks as necessary given the current requirements by the file handlers. @@ -32,7 +32,7 @@ public class PositionalLockProvider private static final int MAX_NUMBER_OF_LOCKS = 100; - private final ConcurrentHashMap lockByPos = new ConcurrentHashMap<>(); + private final ConcurrentHashMap lockByPos = new ConcurrentHashMap<>(); private final AtomicBoolean lockRemovalThreadRunning = new AtomicBoolean(false); @@ -50,7 +50,7 @@ public class PositionalLockProvider // getter // //========// - public ReentrantLock getLock(DhSectionPos pos) + public ReentrantLock getLock(OldDhSectionPos pos) { return this.lockByPos.compute(pos, (ignorePos, lock) -> { @@ -76,14 +76,14 @@ public class PositionalLockProvider Thread.sleep(CLEANUP_THREAD_MAX_FREQUENCY_IN_MS); // walk over every lock and check which ones need to be removed - Iterator keySet = this.lockByPos.keySet().iterator(); + Iterator keySet = this.lockByPos.keySet().iterator(); while (keySet.hasNext()) { try { long currentTime = System.currentTimeMillis(); - DhSectionPos pos = keySet.next(); + OldDhSectionPos pos = keySet.next(); ExpiringLock lock = this.lockByPos.get(pos); // don't try removing a lock that's currently in use diff --git a/core/src/test/java/tests/CompressionTest.java b/core/src/test/java/tests/CompressionTest.java index b3d3de3a8..0db0e148b 100644 --- a/core/src/test/java/tests/CompressionTest.java +++ b/core/src/test/java/tests/CompressionTest.java @@ -21,7 +21,7 @@ package tests; import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode; import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO; import com.seibel.distanthorizons.core.sql.repo.FullDataSourceV2Repo; import org.junit.Assert; @@ -272,7 +272,7 @@ public class CompressionTest - ArrayList positionList = uncompressedRepo.getAllPositions(); + ArrayList positionList = uncompressedRepo.getAllPositions(); totalUncompressedFileSizeInBytes = uncompressedRepo.getTotalDataSizeInBytes(); System.out.println("Found [" + positionList.size() + "] DTOs."); @@ -282,7 +282,7 @@ public class CompressionTest { try { - DhSectionPos pos = positionList.get(i); + OldDhSectionPos pos = positionList.get(i); if (i % 20 == 0) { System.out.println(i + "/" + maxTestPosition); diff --git a/core/src/test/java/tests/DhSectionPosTest.java b/core/src/test/java/tests/DhSectionPosTest.java index ff2419d1b..23bd48819 100644 --- a/core/src/test/java/tests/DhSectionPosTest.java +++ b/core/src/test/java/tests/DhSectionPosTest.java @@ -28,36 +28,36 @@ public class DhSectionPosTest @Test public void ContainsPosTest() { - DhSectionPos root = new DhSectionPos((byte) 10, 0, 0); - DhSectionPos child = new DhSectionPos((byte) 9, 1, 1); + OldDhSectionPos root = new OldDhSectionPos((byte) 10, 0, 0); + OldDhSectionPos child = new OldDhSectionPos((byte) 9, 1, 1); Assert.assertTrue("section pos contains fail", root.contains(child)); Assert.assertFalse("section pos contains fail", child.contains(root)); - root = new DhSectionPos((byte) 10, 1, 0); + root = new OldDhSectionPos((byte) 10, 1, 0); // out of bounds - child = new DhSectionPos((byte) 9, 0, 0); + child = new OldDhSectionPos((byte) 9, 0, 0); Assert.assertFalse("position should be out of bounds", root.contains(child)); - child = new DhSectionPos((byte) 9, 1, 1); + child = new OldDhSectionPos((byte) 9, 1, 1); Assert.assertFalse("position should be out of bounds", root.contains(child)); // in bounds - child = new DhSectionPos((byte) 9, 2, 0); + child = new OldDhSectionPos((byte) 9, 2, 0); Assert.assertTrue("position should be in bounds", root.contains(child)); - child = new DhSectionPos((byte) 9, 3, 1); + child = new OldDhSectionPos((byte) 9, 3, 1); Assert.assertTrue("position should be in bounds", root.contains(child)); // out of bounds - child = new DhSectionPos((byte) 9, 2, 2); + child = new OldDhSectionPos((byte) 9, 2, 2); Assert.assertFalse("position should be out of bounds", root.contains(child)); - child = new DhSectionPos((byte) 9, 3, 3); + child = new OldDhSectionPos((byte) 9, 3, 3); Assert.assertFalse("position should be out of bounds", root.contains(child)); - child = new DhSectionPos((byte) 9, 4, 4); + child = new OldDhSectionPos((byte) 9, 4, 4); Assert.assertFalse("position should be out of bounds", root.contains(child)); - child = new DhSectionPos((byte) 9, 5, 5); + child = new OldDhSectionPos((byte) 9, 5, 5); Assert.assertFalse("position should be out of bounds", root.contains(child)); } @@ -65,15 +65,15 @@ public class DhSectionPosTest public void ContainsAdjacentPosTest() { // neither should contain the other, they are single blocks that are next to each other - DhSectionPos left = new DhSectionPos((byte) 0, 4606, 0); - DhSectionPos right = new DhSectionPos((byte) 0, 4607, 0); + OldDhSectionPos left = new OldDhSectionPos((byte) 0, 4606, 0); + OldDhSectionPos right = new OldDhSectionPos((byte) 0, 4607, 0); Assert.assertFalse(left.contains(right)); Assert.assertFalse(right.contains(left)); // 512 block wide sections that are adjacent, but not overlapping - left = new DhSectionPos((byte) 9, 0, 0); - right = new DhSectionPos((byte) 9, 1, 0); + left = new OldDhSectionPos((byte) 9, 0, 0); + right = new OldDhSectionPos((byte) 9, 1, 0); Assert.assertFalse(left.contains(right)); Assert.assertFalse(right.contains(left)); @@ -82,24 +82,24 @@ public class DhSectionPosTest @Test public void ParentPosTest() { - DhSectionPos leaf = new DhSectionPos((byte) 0, 0, 0); - DhSectionPos convert = leaf.convertNewToDetailLevel((byte) 1); - DhSectionPos parent = leaf.getParentPos(); + OldDhSectionPos leaf = new OldDhSectionPos((byte) 0, 0, 0); + OldDhSectionPos convert = leaf.convertNewToDetailLevel((byte) 1); + OldDhSectionPos parent = leaf.getParentPos(); Assert.assertEquals("get parent at 0,0 fail", convert, parent); - leaf = new DhSectionPos((byte) 0, 1, 1); + leaf = new OldDhSectionPos((byte) 0, 1, 1); convert = leaf.convertNewToDetailLevel((byte) 1); parent = leaf.getParentPos(); Assert.assertEquals("get parent at 1,1 fail", convert, parent); - leaf = new DhSectionPos((byte) 1, 2, 2); + leaf = new OldDhSectionPos((byte) 1, 2, 2); convert = leaf.convertNewToDetailLevel((byte) 2); parent = leaf.getParentPos(); Assert.assertEquals("parent upscale fail", convert, parent); convert = leaf.convertNewToDetailLevel((byte) 0); - DhSectionPos childIndex = leaf.getChildByIndex(0); + OldDhSectionPos childIndex = leaf.getChildByIndex(0); Assert.assertEquals("child detail fail", convert, childIndex); } @@ -107,11 +107,11 @@ public class DhSectionPosTest @Test public void ChildPosTest() { - DhSectionPos node = new DhSectionPos((byte) 1, 2302, 0); - DhSectionPos nw = node.getChildByIndex(0); - DhSectionPos sw = node.getChildByIndex(1); - DhSectionPos ne = node.getChildByIndex(2); - DhSectionPos se = node.getChildByIndex(3); + OldDhSectionPos node = new OldDhSectionPos((byte) 1, 2302, 0); + OldDhSectionPos nw = node.getChildByIndex(0); + OldDhSectionPos sw = node.getChildByIndex(1); + OldDhSectionPos ne = node.getChildByIndex(2); + OldDhSectionPos se = node.getChildByIndex(3); // confirm no children have the same values Assert.assertNotEquals(nw, sw); @@ -119,24 +119,24 @@ public class DhSectionPosTest Assert.assertNotEquals(ne, se); // confirm each child has the correct value - Assert.assertEquals(nw, new DhSectionPos((byte) 0, 4604, 0)); - Assert.assertEquals(sw, new DhSectionPos((byte) 0, 4605, 0)); - Assert.assertEquals(ne, new DhSectionPos((byte) 0, 4604, 1)); - Assert.assertEquals(se, new DhSectionPos((byte) 0, 4605, 1)); + Assert.assertEquals(nw, new OldDhSectionPos((byte) 0, 4604, 0)); + Assert.assertEquals(sw, new OldDhSectionPos((byte) 0, 4605, 0)); + Assert.assertEquals(ne, new OldDhSectionPos((byte) 0, 4604, 1)); + Assert.assertEquals(se, new OldDhSectionPos((byte) 0, 4605, 1)); } @Test public void GetCenterTest() { - DhSectionPos node = new DhSectionPos((byte) 1, 2303, 0); + OldDhSectionPos node = new OldDhSectionPos((byte) 1, 2303, 0); DhBlockPos2D centerBlockPos = node.getCenterBlockPos(); DhBlockPos2D expectedCenterNode = new DhBlockPos2D(4606, 0); Assert.assertEquals("", expectedCenterNode, centerBlockPos); - node = new DhSectionPos((byte) 10, 0, 0); // 1024 blocks wide + node = new OldDhSectionPos((byte) 10, 0, 0); // 1024 blocks wide centerBlockPos = node.getCenterBlockPos(); expectedCenterNode = new DhBlockPos2D(1024 / 2, 1024 / 2); Assert.assertEquals("", expectedCenterNode, centerBlockPos); @@ -146,8 +146,8 @@ public class DhSectionPosTest @Test public void GetCenter2Test() { - DhSectionPos parentNode = new DhSectionPos((byte) 2, 1151, 0); // width 4 blocks - DhSectionPos inputPos = new DhSectionPos((byte) 0, 4606, 0); // width 1 block + OldDhSectionPos parentNode = new OldDhSectionPos((byte) 2, 1151, 0); // width 4 blocks + OldDhSectionPos inputPos = new OldDhSectionPos((byte) 0, 4606, 0); // width 1 block Assert.assertTrue(parentNode.contains(inputPos)); DhBlockPos2D parentCenter = parentNode.getCenterBlockPos(); @@ -164,19 +164,19 @@ public class DhSectionPosTest // origin pos // DhBlockPos originBlockPos = new DhBlockPos(0, 0, 0); - DhSectionPos originSectionPos = new DhSectionPos(originBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); + OldDhSectionPos originSectionPos = new OldDhSectionPos(originBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); // offset pos // DhBlockPos offsetBlockPos = new DhBlockPos(1000, 0, 42000); - DhSectionPos offsetSectionPos = new DhSectionPos(offsetBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 15, 656), offsetSectionPos); + OldDhSectionPos offsetSectionPos = new OldDhSectionPos(offsetBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 15, 656), offsetSectionPos); offsetBlockPos = new DhBlockPos(-987654, 0, 46); - offsetSectionPos = new DhSectionPos(offsetBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); + offsetSectionPos = new OldDhSectionPos(offsetBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); } @@ -186,19 +186,19 @@ public class DhSectionPosTest // origin pos // DhBlockPos2D originBlockPos = new DhBlockPos2D(0, 0); - DhSectionPos originSectionPos = new DhSectionPos(originBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); + OldDhSectionPos originSectionPos = new OldDhSectionPos(originBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); // offset pos // DhBlockPos2D offsetBlockPos = new DhBlockPos2D(1000, 42000); - DhSectionPos offsetSectionPos = new DhSectionPos(offsetBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 15, 656), offsetSectionPos); + OldDhSectionPos offsetSectionPos = new OldDhSectionPos(offsetBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 15, 656), offsetSectionPos); offsetBlockPos = new DhBlockPos2D(-987654, 46); - offsetSectionPos = new DhSectionPos(offsetBlockPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); + offsetSectionPos = new OldDhSectionPos(offsetBlockPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); } @@ -208,19 +208,19 @@ public class DhSectionPosTest // origin pos // DhChunkPos originChunkPos = new DhChunkPos(0,0); - DhSectionPos originSectionPos = new DhSectionPos(originChunkPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, 0, 0), originSectionPos); + OldDhSectionPos originSectionPos = new OldDhSectionPos(originChunkPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, 0, 0), originSectionPos); // offset pos // DhChunkPos offsetChunkPos = new DhChunkPos(1000, 42000); - DhSectionPos offsetSectionPos = new DhSectionPos(offsetChunkPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, 15, 656), offsetSectionPos); + OldDhSectionPos offsetSectionPos = new OldDhSectionPos(offsetChunkPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, 15, 656), offsetSectionPos); offsetChunkPos = new DhChunkPos(-987654, 46); - offsetSectionPos = new DhSectionPos(offsetChunkPos); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); + offsetSectionPos = new OldDhSectionPos(offsetChunkPos); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_CHUNK_DETAIL_LEVEL, -15433, 0), offsetSectionPos); } @@ -229,38 +229,38 @@ public class DhSectionPosTest { // origin pos // - DhSectionPos originSectionPos = new DhSectionPos((byte) 0,0,0); + OldDhSectionPos originSectionPos = new OldDhSectionPos((byte) 0,0,0); originSectionPos = originSectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(new DhSectionPos((byte) 1, 0, 0), originSectionPos); + Assert.assertEquals(new OldDhSectionPos((byte) 1, 0, 0), originSectionPos); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0), originSectionPos); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_REGION_DETAIL_LEVEL, 0, 0), originSectionPos); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL, 0, 0), originSectionPos); // offset pos // - DhSectionPos sectionPos = new DhSectionPos((byte) 0,-10000,5000); + OldDhSectionPos sectionPos = new OldDhSectionPos((byte) 0,-10000,5000); sectionPos = sectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(new DhSectionPos((byte) 1, -5000, 2500), sectionPos); + Assert.assertEquals(new OldDhSectionPos((byte) 1, -5000, 2500), sectionPos); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -157, 78), sectionPos); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, -157, 78), sectionPos); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(new DhSectionPos(DhSectionPos.SECTION_REGION_DETAIL_LEVEL, -1, 0), sectionPos); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); + Assert.assertEquals(new OldDhSectionPos(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL, -1, 0), sectionPos); } @Test public void GetOffsetWidth() { - DhSectionPos originSectionPos = new DhSectionPos((byte) 0,0,0); - DhSectionPos sectionPos = new DhSectionPos((byte) 0,-10000,5000); + OldDhSectionPos originSectionPos = new OldDhSectionPos((byte) 0,0,0); + OldDhSectionPos sectionPos = new OldDhSectionPos((byte) 0,-10000,5000); @@ -284,19 +284,19 @@ public class DhSectionPosTest // Block -> 0 returnDetailLevel = 0; - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(64, originSectionPos.getWidthCountForLowerDetailedSection(returnDetailLevel)); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(64, sectionPos.getWidthCountForLowerDetailedSection(returnDetailLevel)); // Region -> 3 returnDetailLevel = 3; - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(4096, originSectionPos.getWidthCountForLowerDetailedSection(returnDetailLevel)); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(4096, sectionPos.getWidthCountForLowerDetailedSection(returnDetailLevel)); } @@ -304,8 +304,8 @@ public class DhSectionPosTest @Test public void GetBlockWidth() { - DhSectionPos originSectionPos = new DhSectionPos((byte) 0,0,0); - DhSectionPos sectionPos = new DhSectionPos((byte) 0,-10000,5000); + OldDhSectionPos originSectionPos = new OldDhSectionPos((byte) 0,0,0); + OldDhSectionPos sectionPos = new OldDhSectionPos((byte) 0,-10000,5000); Assert.assertEquals(1, originSectionPos.getBlockWidth()); @@ -316,14 +316,14 @@ public class DhSectionPosTest sectionPos = sectionPos.convertNewToDetailLevel((byte) 1); Assert.assertEquals(2, sectionPos.getBlockWidth()); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(64, originSectionPos.getBlockWidth()); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(64, sectionPos.getBlockWidth()); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(32768, originSectionPos.getBlockWidth()); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(32768, sectionPos.getBlockWidth()); } @@ -331,8 +331,8 @@ public class DhSectionPosTest @Test public void GetCenterBlockPos() { - DhSectionPos originSectionPos = new DhSectionPos((byte) 0,0,0); - DhSectionPos sectionPos = new DhSectionPos((byte) 0,-10000,5000); + OldDhSectionPos originSectionPos = new OldDhSectionPos((byte) 0,0,0); + OldDhSectionPos sectionPos = new OldDhSectionPos((byte) 0,-10000,5000); Assert.assertEquals(new DhBlockPos2D(0, 0), originSectionPos.getCenterBlockPos()); @@ -345,15 +345,15 @@ public class DhSectionPosTest Assert.assertEquals(new DhBlockPos2D(-10000, 5000), sectionPos.getCenterBlockPos()); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(new DhBlockPos2D(32, 32), originSectionPos.getCenterBlockPos()); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); Assert.assertEquals(new DhBlockPos2D(-10016, 5024), sectionPos.getCenterBlockPos()); - originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + originSectionPos = originSectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(new DhBlockPos2D(16384, 16384), originSectionPos.getCenterBlockPos()); - sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); + sectionPos = sectionPos.convertNewToDetailLevel(OldDhSectionPos.SECTION_REGION_DETAIL_LEVEL); Assert.assertEquals(new DhBlockPos2D(-16384, 16384), sectionPos.getCenterBlockPos()); } diff --git a/core/src/test/java/tests/QuadTreeTest.java b/core/src/test/java/tests/QuadTreeTest.java index 722dfbaec..1fa54eb17 100644 --- a/core/src/test/java/tests/QuadTreeTest.java +++ b/core/src/test/java/tests/QuadTreeTest.java @@ -21,7 +21,7 @@ package tests; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos2D; -import com.seibel.distanthorizons.core.pos.DhSectionPos; +import com.seibel.distanthorizons.core.pos.OldDhSectionPos; import com.seibel.distanthorizons.coreapi.util.BitShiftUtil; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.coreapi.util.MathUtil; @@ -59,30 +59,30 @@ public class QuadTreeTest // (pseudo) root node // - testSet(tree, new DhSectionPos((byte) 10, 0, 0), 0); + testSet(tree, new OldDhSectionPos((byte) 10, 0, 0), 0); // first child (0,0) // - testSet(tree, new DhSectionPos((byte) 9, 0, 0), 1); - testSet(tree, new DhSectionPos((byte) 9, 1, 0), 2); - testSet(tree, new DhSectionPos((byte) 9, 0, 1), 3); - testSet(tree, new DhSectionPos((byte) 9, 1, 1), 4); + testSet(tree, new OldDhSectionPos((byte) 9, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 9, 1, 0), 2); + testSet(tree, new OldDhSectionPos((byte) 9, 0, 1), 3); + testSet(tree, new OldDhSectionPos((byte) 9, 1, 1), 4); // second child (0,0) (0,0) // - testSet(tree, new DhSectionPos((byte) 8, 0, 0), 5); - testSet(tree, new DhSectionPos((byte) 8, 1, 0), 6); - testSet(tree, new DhSectionPos((byte) 8, 0, 1), 7); - testSet(tree, new DhSectionPos((byte) 8, 1, 1), 8); + testSet(tree, new OldDhSectionPos((byte) 8, 0, 0), 5); + testSet(tree, new OldDhSectionPos((byte) 8, 1, 0), 6); + testSet(tree, new OldDhSectionPos((byte) 8, 0, 1), 7); + testSet(tree, new OldDhSectionPos((byte) 8, 1, 1), 8); // second child (0,0) (1,1) // - testSet(tree, new DhSectionPos((byte) 8, 2, 2), 9); - testSet(tree, new DhSectionPos((byte) 8, 3, 2), 10); - testSet(tree, new DhSectionPos((byte) 8, 2, 3), 11); - testSet(tree, new DhSectionPos((byte) 8, 3, 3), 12); + testSet(tree, new OldDhSectionPos((byte) 8, 2, 2), 9); + testSet(tree, new OldDhSectionPos((byte) 8, 3, 2), 10); + testSet(tree, new OldDhSectionPos((byte) 8, 2, 3), 11); + testSet(tree, new OldDhSectionPos((byte) 8, 3, 3), 12); // third child (0,0) (1,0) (0,0) // - testSet(tree, new DhSectionPos((byte) 7, 5, 0), 9); - testSet(tree, new DhSectionPos((byte) 7, 6, 0), 10); - testSet(tree, new DhSectionPos((byte) 7, 5, 1), 11); - testSet(tree, new DhSectionPos((byte) 7, 6, 1), 12); + testSet(tree, new OldDhSectionPos((byte) 7, 5, 0), 9); + testSet(tree, new OldDhSectionPos((byte) 7, 6, 0), 10); + testSet(tree, new OldDhSectionPos((byte) 7, 5, 1), 11); + testSet(tree, new OldDhSectionPos((byte) 7, 6, 1), 12); } @@ -94,13 +94,13 @@ public class QuadTreeTest // root node // - testSet(tree, new DhSectionPos((byte) 10, -1, -1), 0); + testSet(tree, new OldDhSectionPos((byte) 10, -1, -1), 0); // first child (-1,-1) // - testSet(tree, new DhSectionPos((byte) 9, -2, -1), 1); - testSet(tree, new DhSectionPos((byte) 9, -1, -1), 2); - testSet(tree, new DhSectionPos((byte) 9, -2, -2), 3); - testSet(tree, new DhSectionPos((byte) 9, -1, -2), 4); + testSet(tree, new OldDhSectionPos((byte) 9, -2, -1), 1); + testSet(tree, new OldDhSectionPos((byte) 9, -1, -1), 2); + testSet(tree, new OldDhSectionPos((byte) 9, -2, -2), 3); + testSet(tree, new OldDhSectionPos((byte) 9, -1, -2), 4); // TODO // // second child (-1,-1) (0,0) // @@ -131,36 +131,36 @@ public class QuadTreeTest // wrong detail level on purpose, if the detail level was 0 (block) this should work - DhSectionPos outOfBoundsPos = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2), 0); + OldDhSectionPos outOfBoundsPos = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2), 0); testSet(tree, outOfBoundsPos, -1, IndexOutOfBoundsException.class); Assert.assertEquals("incorrect leaf node count", 0, tree.leafNodeCount()); // out of bounds // - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) + 1, 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) + 1, 0); testSet(tree, outOfBoundsPos, -1, IndexOutOfBoundsException.class); Assert.assertEquals("incorrect leaf node count", 0, tree.leafNodeCount()); - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2), 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2), 0); testSet(tree, outOfBoundsPos, -1, IndexOutOfBoundsException.class); Assert.assertEquals("incorrect leaf node count", 0, tree.leafNodeCount()); // in bounds // - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 1, 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 1, 0); testSet(tree, outOfBoundsPos, 0); Assert.assertEquals("incorrect leaf node count", 1, tree.leafNodeCount()); - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 3, 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 3, 0); testSet(tree, outOfBoundsPos, 0); Assert.assertEquals("incorrect leaf node count", 2, tree.leafNodeCount()); // TODO this position probably has trouble with getting the center. - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 2, 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 2, 0); testSet(tree, outOfBoundsPos, 0); Assert.assertEquals("incorrect leaf node count", 3, tree.leafNodeCount()); - outOfBoundsPos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 4, 0); + outOfBoundsPos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (treeParams.getWidthInBlocks() / 2) - 4, 0); testSet(tree, outOfBoundsPos, 0); Assert.assertEquals("incorrect leaf node count", 4, tree.leafNodeCount()); @@ -173,15 +173,15 @@ public class QuadTreeTest Assert.assertEquals("Test may need to be re-calculated for different max detail level.", 9, tree.treeMinDetailLevel); - DhSectionPos rootPos = new DhSectionPos((byte) 9, 0, -1); + OldDhSectionPos rootPos = new OldDhSectionPos((byte) 9, 0, -1); testSet(tree, rootPos, 1); // pos is in tree, but out of range - DhSectionPos midPos = new DhSectionPos((byte) 8, 0, -1); + OldDhSectionPos midPos = new OldDhSectionPos((byte) 8, 0, -1); testSet(tree, midPos, 2, IndexOutOfBoundsException.class); // pos is in tree, but out of range - DhSectionPos leafPos = new DhSectionPos((byte) 7, 0, -2); + OldDhSectionPos leafPos = new OldDhSectionPos((byte) 7, 0, -2); testSet(tree, leafPos, 3, IndexOutOfBoundsException.class); } @@ -197,13 +197,13 @@ public class QuadTreeTest // (pseudo) root nodes // - testSet(tree, new DhSectionPos((byte) 10, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 10, 0, 0), 1); // first child (0,0) // - DhSectionPos nw = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0); - DhSectionPos ne = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 1, 0); - DhSectionPos sw = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 1); - DhSectionPos se = new DhSectionPos(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 1, 1); + OldDhSectionPos nw = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 0); + OldDhSectionPos ne = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 1, 0); + OldDhSectionPos sw = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 0, 1); + OldDhSectionPos se = new OldDhSectionPos(OldDhSectionPos.SECTION_BLOCK_DETAIL_LEVEL, 1, 1); testSet(tree, nw, 2); testSet(tree, ne, 3); @@ -259,12 +259,12 @@ public class QuadTreeTest Assert.assertEquals("Tree center incorrect", DhBlockPos2D.ZERO, tree.getCenterBlockPos()); // on the negative X edge - DhSectionPos edgePos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, -treeParams.getWidthInBlocks() / 2, 0); + OldDhSectionPos edgePos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, -treeParams.getWidthInBlocks() / 2, 0); testSet(tree, edgePos, 1); Assert.assertEquals("incorrect leaf node count", 1, tree.leafNodeCount()); // +1 root node from the negative X edge - DhSectionPos adjacentEdgePos = new DhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (-treeParams.getWidthInBlocks() / 2) + pseudoRootNodeWidthInBlocks, 0); + OldDhSectionPos adjacentEdgePos = new OldDhSectionPos(LodUtil.BLOCK_DETAIL_LEVEL, (-treeParams.getWidthInBlocks() / 2) + pseudoRootNodeWidthInBlocks, 0); testSet(tree, adjacentEdgePos, 2); Assert.assertEquals("incorrect leaf node count", 2, tree.leafNodeCount()); @@ -284,21 +284,21 @@ public class QuadTreeTest // (pseudo) root nodes // - testSet(tree, new DhSectionPos((byte) 10, 0, 0), 1); - testSet(tree, new DhSectionPos((byte) 10, 1, 0), 2); + testSet(tree, new OldDhSectionPos((byte) 10, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 10, 1, 0), 2); // first child (0,0) // - testSet(tree, new DhSectionPos((byte) 9, 0, 0), 3); - testSet(tree, new DhSectionPos((byte) 9, 1, 0), 4); - testSet(tree, new DhSectionPos((byte) 9, 0, 1), 5); - testSet(tree, new DhSectionPos((byte) 9, 1, 1), 6); + testSet(tree, new OldDhSectionPos((byte) 9, 0, 0), 3); + testSet(tree, new OldDhSectionPos((byte) 9, 1, 0), 4); + testSet(tree, new OldDhSectionPos((byte) 9, 0, 1), 5); + testSet(tree, new OldDhSectionPos((byte) 9, 1, 1), 6); // root nodes int rootNodeCount = 0; - Iterator rootNodePosIterator = tree.rootNodePosIterator(); + Iterator rootNodePosIterator = tree.rootNodePosIterator(); while (rootNodePosIterator.hasNext()) { QuadNode rootNode = tree.getNode(rootNodePosIterator.next()); @@ -332,19 +332,19 @@ public class QuadTreeTest public void NewQuadTreeIterationTest() { AbstractTestTreeParams treeParams = new LargeTestTree(); - QuadNode rootNode = new QuadNode<>(new DhSectionPos((byte) 10, 0, 0), LodUtil.BLOCK_DETAIL_LEVEL); + QuadNode rootNode = new QuadNode<>(new OldDhSectionPos((byte) 10, 0, 0), LodUtil.BLOCK_DETAIL_LEVEL); - rootNode.setValue(new DhSectionPos((byte) 10, 0, 0), 0); + rootNode.setValue(new OldDhSectionPos((byte) 10, 0, 0), 0); - rootNode.setValue(new DhSectionPos((byte) 9, 0, 0), 1); - rootNode.setValue(new DhSectionPos((byte) 9, 1, 0), 1); - rootNode.setValue(new DhSectionPos((byte) 9, 0, 1), 1); - rootNode.setValue(new DhSectionPos((byte) 9, 1, 1), null); + rootNode.setValue(new OldDhSectionPos((byte) 9, 0, 0), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 1, 0), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 0, 1), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 1, 1), null); - rootNode.setValue(new DhSectionPos((byte) 8, 0, 0), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 1, 0), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 0, 1), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 1, 1), null); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 0), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 0), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 1), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 1), null); @@ -411,11 +411,11 @@ public class QuadTreeTest { AbstractTestTreeParams treeParams = new TinyTestTree(); final QuadTree tree = new QuadTree<>(treeParams.getWidthInBlocks(), treeParams.getPositiveEdgeCenterPos(), LodUtil.BLOCK_DETAIL_LEVEL); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); // confirm the root node were added int rootNodeCount = 0; - Iterator rootNodePosIterator = tree.rootNodePosIterator(); + Iterator rootNodePosIterator = tree.rootNodePosIterator(); while (rootNodePosIterator.hasNext()) { QuadNode rootNode = tree.getNode(rootNodePosIterator.next()); @@ -431,7 +431,7 @@ public class QuadTreeTest rootNodePosIterator = tree.rootNodePosIterator(); while (rootNodePosIterator.hasNext()) { - DhSectionPos rootNodePos = rootNodePosIterator.next(); + OldDhSectionPos rootNodePos = rootNodePosIterator.next(); QuadNode rootNode = tree.getNode(rootNodePos); if (rootNode != null) { @@ -468,7 +468,7 @@ public class QuadTreeTest tree.setCenterBlockPos(treeMovePos); Assert.assertEquals("tree move failed, incorrect position after move", treeMovePos, tree.getCenterBlockPos()); - Iterator rootNodePosIterator = tree.rootNodePosIterator(); + Iterator rootNodePosIterator = tree.rootNodePosIterator(); while (rootNodePosIterator.hasNext()) { testSet(tree, rootNodePosIterator.next(), 0); @@ -499,13 +499,13 @@ public class QuadTreeTest Assert.assertEquals("incorrect tree width", treeParams.getWidthInBlocks(), tree.diameterInBlocks()); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, -1, -1), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 1, 1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, -1, -1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 1, 1), -1, IndexOutOfBoundsException.class); int rootNodeCount = 0; - Iterator rootNodeIterator = tree.rootNodePosIterator(); + Iterator rootNodeIterator = tree.rootNodePosIterator(); while (rootNodeIterator.hasNext()) { QuadNode rootNode = tree.getNode(rootNodeIterator.next()); @@ -529,22 +529,22 @@ public class QuadTreeTest // 2x2 valid positions (overlap the tree's width) - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, -1, 0), 0); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 0, -1), 0); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, -1, -1), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 0, 0), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, -1, 0), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 0, -1), 0); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, -1, -1), 0); // invalid positions - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, -1, 1), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 0, 1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, -1, 1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 0, 1), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 1, 0), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 1, 1), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos(tree.treeMinDetailLevel, 1, -1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 1, 0), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 1, 1), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos(tree.treeMinDetailLevel, 1, -1), -1, IndexOutOfBoundsException.class); int rootNodeCount = 0; - Iterator rootNodeIterator = tree.rootNodePosIterator(); + Iterator rootNodeIterator = tree.rootNodePosIterator(); while (rootNodeIterator.hasNext()) { QuadNode rootNode = tree.getNode(rootNodeIterator.next()); @@ -565,17 +565,17 @@ public class QuadTreeTest Assert.assertEquals("Test detail level's need to be adjusted. This isn't necessarily a failed test.", 10, tree.treeMinDetailLevel); // valid detail levels - testSet(tree, new DhSectionPos((byte) 10, 0, 0), 1); - testSet(tree, new DhSectionPos((byte) 9, 0, 0), 2); - testSet(tree, new DhSectionPos((byte) 8, 0, 0), 3); + testSet(tree, new OldDhSectionPos((byte) 10, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 9, 0, 0), 2); + testSet(tree, new OldDhSectionPos((byte) 8, 0, 0), 3); // detail level too low - testSet(tree, new DhSectionPos((byte) 7, 0, 0), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos((byte) 6, 0, 0), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos((byte) 7, 0, 0), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos((byte) 6, 0, 0), -1, IndexOutOfBoundsException.class); // detail level too high - testSet(tree, new DhSectionPos((byte) 11, 0, 0), -1, IndexOutOfBoundsException.class); - testSet(tree, new DhSectionPos((byte) 12, 0, 0), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos((byte) 11, 0, 0), -1, IndexOutOfBoundsException.class); + testSet(tree, new OldDhSectionPos((byte) 12, 0, 0), -1, IndexOutOfBoundsException.class); } @@ -587,25 +587,25 @@ public class QuadTreeTest Assert.assertEquals("Test detail level's need to be adjusted. This isn't necessarily a failed test.", 10, tree.treeMinDetailLevel); // create the root node - testSet(tree, new DhSectionPos((byte) 10, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 10, 0, 0), 1); AtomicInteger minimumDetailLevelReachedRef = new AtomicInteger(tree.treeMinDetailLevel); // recurse down the tree - Iterator rootNodePosIterator = tree.rootNodePosIterator(); + Iterator rootNodePosIterator = tree.rootNodePosIterator(); while (rootNodePosIterator.hasNext()) { - DhSectionPos sectionPos = rootNodePosIterator.next(); + OldDhSectionPos sectionPos = rootNodePosIterator.next(); QuadNode rootNode = tree.getNode(sectionPos); if (rootNode != null) { // fill in the root node's direct children - Iterator childPosIterator = rootNode.getChildPosIterator(); + Iterator childPosIterator = rootNode.getChildPosIterator(); while (childPosIterator.hasNext()) { - DhSectionPos rootChildPos = childPosIterator.next(); + OldDhSectionPos rootChildPos = childPosIterator.next(); rootNode.setValue(rootChildPos, 0); } @@ -634,7 +634,7 @@ public class QuadTreeTest // fill in the null children - Iterator directChildIterator = node.getChildPosIterator(); + Iterator directChildIterator = node.getChildPosIterator(); while (directChildIterator.hasNext()) { node.setValue(directChildIterator.next(), 0); @@ -646,7 +646,7 @@ public class QuadTreeTest directChildIterator = node.getChildPosIterator(); while (directChildIterator.hasNext()) { - DhSectionPos sectionPos = directChildIterator.next(); + OldDhSectionPos sectionPos = directChildIterator.next(); QuadNode childNode = node.getNode(sectionPos); Assert.assertTrue("Child node recurred too low. Min detail level: " + minDetailLevel + ", node detail level: " + childNode.sectionPos.getDetailLevel(), childNode.sectionPos.getDetailLevel() >= minDetailLevel); @@ -678,11 +678,11 @@ public class QuadTreeTest @Test public void quadNodeChildPositionIndexTest() { - QuadNode rootNode = new QuadNode<>(new DhSectionPos((byte) 10, 0, 0), (byte) 0); - Iterator directChildPosIterator = rootNode.getChildPosIterator(); + QuadNode rootNode = new QuadNode<>(new OldDhSectionPos((byte) 10, 0, 0), (byte) 0); + Iterator directChildPosIterator = rootNode.getChildPosIterator(); while (directChildPosIterator.hasNext()) { - DhSectionPos sectionPos = directChildPosIterator.next(); + OldDhSectionPos sectionPos = directChildPosIterator.next(); Assert.assertNotEquals("Root node pos shouldn't be included in direct child pos iteration", sectionPos, rootNode.sectionPos); rootNode.setValue(sectionPos, 1); @@ -692,9 +692,9 @@ public class QuadTreeTest for (int i = 0; i < 4; i++) { - DhSectionPos childPos = rootNode.sectionPos.getChildByIndex(i); + OldDhSectionPos childPos = rootNode.sectionPos.getChildByIndex(i); QuadNode childNode = rootNode.getChildByIndex(i); - Assert.assertEquals("child position not the same as " + DhSectionPos.class.getSimpleName() + "'s getChildByIndex()", childPos, childNode.sectionPos); + Assert.assertEquals("child position not the same as " + OldDhSectionPos.class.getSimpleName() + "'s getChildByIndex()", childPos, childNode.sectionPos); } } @@ -708,7 +708,7 @@ public class QuadTreeTest // center root node - DhSectionPos centerNodePos = new DhSectionPos((byte) 1, 0, 0); + OldDhSectionPos centerNodePos = new OldDhSectionPos((byte) 1, 0, 0); // create node tree.setValue(centerNodePos, 0); @@ -716,10 +716,10 @@ public class QuadTreeTest Assert.assertNotNull(centerRootNode); // child pos in bounds of the tree - Iterator childPosIterator = centerRootNode.getChildPosIterator(); + Iterator childPosIterator = centerRootNode.getChildPosIterator(); while (childPosIterator.hasNext()) { - DhSectionPos childPos = childPosIterator.next(); + OldDhSectionPos childPos = childPosIterator.next(); centerRootNode.setValue(childPos, 1); } Assert.assertEquals("center node not filled", 4, centerRootNode.getNonNullChildCount()); @@ -727,7 +727,7 @@ public class QuadTreeTest // edge root node - DhSectionPos offsetNodePos = new DhSectionPos((byte) 1, -17, -16); + OldDhSectionPos offsetNodePos = new OldDhSectionPos((byte) 1, -17, -16); // create node tree.setValue(offsetNodePos, 0); @@ -738,7 +738,7 @@ public class QuadTreeTest childPosIterator = offsetRootNode.getChildPosIterator(); while (childPosIterator.hasNext()) { - DhSectionPos childPos = childPosIterator.next(); + OldDhSectionPos childPos = childPosIterator.next(); offsetRootNode.setValue(childPos, 1); } // TODO James thought this shouldn't work for all 4 nodes, but he must've thought wrong. @@ -772,7 +772,7 @@ public class QuadTreeTest // - testSet(tree, new DhSectionPos((byte) 0, 0, 0), 1); + testSet(tree, new OldDhSectionPos((byte) 0, 0, 0), 1); Assert.assertEquals(1, tree.count()); tree.setCenterBlockPos(new DhBlockPos2D(treeWidth + (treeWidth / 2), 0)); Assert.assertEquals(0, tree.count()); @@ -783,21 +783,21 @@ public class QuadTreeTest //@Test public void autoDeleteNullQuadNodeChildTest() { - QuadNode rootNode = new QuadNode<>(new DhSectionPos((byte) 10, 0, 0), LodUtil.BLOCK_DETAIL_LEVEL); + QuadNode rootNode = new QuadNode<>(new OldDhSectionPos((byte) 10, 0, 0), LodUtil.BLOCK_DETAIL_LEVEL); - rootNode.setValue(new DhSectionPos((byte) 10, 0, 0), 0); + rootNode.setValue(new OldDhSectionPos((byte) 10, 0, 0), 0); - DhSectionPos midNodePos = new DhSectionPos((byte) 9, 0, 0); + OldDhSectionPos midNodePos = new OldDhSectionPos((byte) 9, 0, 0); //rootNode.setValue(midNodePos, null); // holds detail 8 - rootNode.setValue(new DhSectionPos((byte) 9, 1, 0), 1); - rootNode.setValue(new DhSectionPos((byte) 9, 0, 1), 1); - rootNode.setValue(new DhSectionPos((byte) 9, 1, 1), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 1, 0), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 0, 1), 1); + rootNode.setValue(new OldDhSectionPos((byte) 9, 1, 1), 1); - rootNode.setValue(new DhSectionPos((byte) 8, 0, 0), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 1, 0), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 0, 1), 2); - rootNode.setValue(new DhSectionPos((byte) 8, 1, 1), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 0), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 0), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 1), 2); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 1), 2); @@ -810,12 +810,12 @@ public class QuadTreeTest // test removing nodes // // remove two leaf nodes from the root - DhSectionPos leafPos = new DhSectionPos((byte) 9, 1, 1); + OldDhSectionPos leafPos = new OldDhSectionPos((byte) 9, 1, 1); rootNode.setValue(leafPos, null); Assert.assertEquals(3, rootNode.getNonNullChildCount()); Assert.assertNull("Node wasn't deleted", rootNode.getNode(leafPos)); - leafPos = new DhSectionPos((byte) 9, 0, 1); + leafPos = new OldDhSectionPos((byte) 9, 0, 1); rootNode.setValue(leafPos, null); Assert.assertEquals(2, rootNode.getNonNullChildCount()); Assert.assertNull("Node wasn't deleted", rootNode.getNode(leafPos)); @@ -827,13 +827,13 @@ public class QuadTreeTest Assert.assertEquals(4, rootNode.getNode(midNodePos).getNonNullChildCount()); // remove all but one, mid-node should still be present - rootNode.setValue(new DhSectionPos((byte) 8, 0, 0), null); - rootNode.setValue(new DhSectionPos((byte) 8, 0, 1), null); - rootNode.setValue(new DhSectionPos((byte) 8, 1, 0), null); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 0), null); + rootNode.setValue(new OldDhSectionPos((byte) 8, 0, 1), null); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 0), null); Assert.assertEquals(1, rootNode.getNode(midNodePos).getNonNullChildCount()); // remove last mid-node child, mid-node should now be removed - rootNode.setValue(new DhSectionPos((byte) 8, 1, 1), null); + rootNode.setValue(new OldDhSectionPos((byte) 8, 1, 1), null); Assert.assertNull("Mid node not deleted.", rootNode.getNode(midNodePos)); Assert.assertEquals(3, rootNode.getNonNullChildCount()); @@ -847,8 +847,8 @@ public class QuadTreeTest // helper methods // //================// - private static void testSet(QuadTree tree, DhSectionPos pos, Integer setValue) { testSet(tree, pos, setValue, null); } - private static void testSet(QuadTree tree, DhSectionPos pos, Integer setValue, Class expectedExceptionClass) + private static void testSet(QuadTree tree, OldDhSectionPos pos, Integer setValue) { testSet(tree, pos, setValue, null); } + private static void testSet(QuadTree tree, OldDhSectionPos pos, Integer setValue, Class expectedExceptionClass) { // set try @@ -869,8 +869,8 @@ public class QuadTreeTest testGet(tree, pos, setValue, expectedExceptionClass); } - private static void testGet(QuadTree tree, DhSectionPos pos, Integer getValue) { testSet(tree, pos, getValue, null); } - private static void testGet(QuadTree tree, DhSectionPos pos, Integer getValue, Class expectedExceptionClass) + private static void testGet(QuadTree tree, OldDhSectionPos pos, Integer getValue) { testSet(tree, pos, getValue, null); } + private static void testGet(QuadTree tree, OldDhSectionPos pos, Integer getValue, Class expectedExceptionClass) { try {