From 269b763b735501eb201f3f9b35ab5462c4db187d Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 14 Sep 2023 07:52:04 -0500 Subject: [PATCH] Add DhSectionPos.getNumberOfLodSectionsWide() --- .../coreapi/util/BitShiftUtil.java | 2 +- .../core/pos/DhSectionPos.java | 8 ++++ .../src/test/java/tests/DhSectionPosTest.java | 47 ++++++++++++++----- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/api/src/main/java/com/seibel/distanthorizons/coreapi/util/BitShiftUtil.java b/api/src/main/java/com/seibel/distanthorizons/coreapi/util/BitShiftUtil.java index 9ad2e34f8..8bd3b2512 100644 --- a/api/src/main/java/com/seibel/distanthorizons/coreapi/util/BitShiftUtil.java +++ b/api/src/main/java/com/seibel/distanthorizons/coreapi/util/BitShiftUtil.java @@ -30,7 +30,7 @@ public class BitShiftUtil { /** * Equivalent to:
- * {@literal 1 << value0, }
+ * {@literal 1 << value, }
* 2^value,
* Math.pow(2, value)

* diff --git a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java b/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java index b908d89ad..e7ecbb0a6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/pos/DhSectionPos.java @@ -189,6 +189,14 @@ public class DhSectionPos return new DhLodUnit(this.sectionDetailLevel, BitShiftUtil.powerOfTwo(offset)); } + public int getNumberOfLodSectionsWide() { return this.getNumberOfLodSectionsWide(this.sectionDetailLevel); } // TODO this always returns 1... + public int getNumberOfLodSectionsWide(byte returnDetailLevel) + { + LodUtil.assertTrue(returnDetailLevel <= this.sectionDetailLevel, "returnDetailLevel must be less than sectionDetail"); // TODO add something to the method name stating this + byte offset = (byte) (this.sectionDetailLevel - returnDetailLevel); + return BitShiftUtil.powerOfTwo(offset); + } + //==================// diff --git a/core/src/test/java/tests/DhSectionPosTest.java b/core/src/test/java/tests/DhSectionPosTest.java index 3d37e5239..37b0c7109 100644 --- a/core/src/test/java/tests/DhSectionPosTest.java +++ b/core/src/test/java/tests/DhSectionPosTest.java @@ -264,19 +264,30 @@ public class DhSectionPosTest // widths should be the same regardless of position in the world originSectionPos = originSectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(1, originSectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, originSectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(originSectionPos.getWidth().numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide()); + sectionPos = sectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(1, sectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, sectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(sectionPos.getWidth().numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide()); + originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(1, originSectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, originSectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(originSectionPos.getWidth().numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide()); + sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(1, sectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, sectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(sectionPos.getWidth().numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide()); + originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(1, originSectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, originSectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(originSectionPos.getWidth().numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide()); + sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(1, sectionPos.getWidth().numberOfLodSectionsWide); + Assert.assertEquals(1, sectionPos.getNumberOfLodSectionsWide()); + Assert.assertEquals(sectionPos.getWidth().numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide()); } @Test @@ -285,20 +296,32 @@ public class DhSectionPosTest DhSectionPos originSectionPos = new DhSectionPos((byte) 0,0,0); DhSectionPos sectionPos = new DhSectionPos((byte) 0,-10000,5000); + originSectionPos = originSectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(2, originSectionPos.getWidth((byte) 0).numberOfLodSectionsWide); + Assert.assertEquals(2, originSectionPos.getNumberOfLodSectionsWide((byte) 0)); + Assert.assertEquals(originSectionPos.getWidth((byte) 0).numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide((byte) 0)); + sectionPos = sectionPos.convertNewToDetailLevel((byte) 1); - Assert.assertEquals(2, sectionPos.getWidth((byte) 0).numberOfLodSectionsWide); + Assert.assertEquals(2, sectionPos.getNumberOfLodSectionsWide((byte) 0)); + Assert.assertEquals(sectionPos.getWidth((byte) 0).numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide((byte) 0)); + originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(64, originSectionPos.getWidth((byte) 0).numberOfLodSectionsWide); + Assert.assertEquals(64, originSectionPos.getNumberOfLodSectionsWide((byte) 0)); + Assert.assertEquals(originSectionPos.getWidth((byte) 0).numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide((byte) 0)); + sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_BLOCK_DETAIL_LEVEL); - Assert.assertEquals(64, sectionPos.getWidth((byte) 0).numberOfLodSectionsWide); + Assert.assertEquals(64, sectionPos.getNumberOfLodSectionsWide((byte) 0)); + Assert.assertEquals(sectionPos.getWidth((byte) 0).numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide((byte) 0)); + originSectionPos = originSectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(4096, originSectionPos.getWidth((byte) 3).numberOfLodSectionsWide); + Assert.assertEquals(4096, originSectionPos.getNumberOfLodSectionsWide((byte) 3)); + Assert.assertEquals(originSectionPos.getWidth((byte) 3).numberOfLodSectionsWide, originSectionPos.getNumberOfLodSectionsWide((byte) 3)); + sectionPos = sectionPos.convertNewToDetailLevel(DhSectionPos.SECTION_REGION_DETAIL_LEVEL); - Assert.assertEquals(4096, sectionPos.getWidth((byte) 3).numberOfLodSectionsWide); + Assert.assertEquals(4096, sectionPos.getNumberOfLodSectionsWide((byte) 3)); + Assert.assertEquals(sectionPos.getWidth((byte) 3).numberOfLodSectionsWide, sectionPos.getNumberOfLodSectionsWide((byte) 3)); }