private int distFromRegion(Vector3i pos, Vector3i regionCenter) { return pos.gridDistance(regionCenter); } }
private int distFromRegion(Vector3i pos, Vector3i regionCenter) { return pos.gridDistance(regionCenter); } }
private int distFromRegion(Vector3i pos, Vector3i regionCenter) { return pos.gridDistance(regionCenter); } }
@Test public void testManhattanDistance() { assertEquals(0, Vector3i.zero().gridDistance(Vector3i.zero())); assertEquals(1, Vector3i.zero().gridDistance(Vector3i.west())); assertEquals(1, Vector3i.zero().gridDistance(Vector3i.up())); assertEquals(1, Vector3i.zero().gridDistance(Vector3i.north())); assertEquals(3, Vector3i.zero().gridDistance(Vector3i.one())); assertEquals(3, Vector3i.zero().gridDistance(new Vector3i(1, -1, 1))); }
@Test public void testTwoDistanceIteration() { Set<Vector3i> iter = Sets.newHashSet(Diamond3iIterator.iterate(Vector3i.zero(), 2)); assertEquals(25, iter.size()); for (Vector3i pos : iter) { assertTrue(pos.gridDistance(new Vector3i()) <= 2); } }
@Test public void testThreeDistanceOnlyIteration() { Set<Vector3i> iter = Sets.newHashSet(Diamond3iIterator.iterateAtDistance(new Vector3i(), 3)); assertEquals(38, iter.size()); for (Vector3i pos : iter) { assertTrue(pos.gridDistance(new Vector3i()) == 3); } } }
@Test public void testAddAdjacentLights() { StubPropagatorWorldView worldView = new StubPropagatorWorldView(testingRegion, air); worldView.setBlockAt(new Vector3i(1, 0, 0), mediumLight); worldView.setBlockAt(new Vector3i(0, 0, 0), mediumLight); BatchPropagator propagator = new StandardBatchPropagator(lightRules, worldView); propagator.process(new BlockChange(new Vector3i(1, 0, 0), air, mediumLight), new BlockChange(new Vector3i(0, 0, 0), air, mediumLight)); for (int i = 0; i < fullLight.getLuminance() + 1; ++i) { for (Vector3i pos : Diamond3iIterator.iterateAtDistance(Vector3i.zero(), i)) { int dist = Math.min(Vector3i.zero().gridDistance(pos), new Vector3i(1, 0, 0).gridDistance(pos)); byte expectedLuminance = (byte) Math.max(mediumLight.getLuminance() - dist, 0); assertEquals(expectedLuminance, worldView.getValueAt(pos)); } } }