/** * Returns a 3D representation of the workd, a region in this case. With the borders added to it. * @param region The region to be expanded with the borders. * @return The 3D world representation with the additional space added to it in the 3 dimensions. */ public Region3i expandTo3D(Region3i region) { return Region3i.createFromMinMax(new Vector3i(region.minX() - sides, region.minY() - bottom, region.minZ() - sides), new Vector3i(region.maxX() + sides, region.maxY() + top, region.maxZ() + sides)); }
private Region3i determineRequiredRegion(Region3i region) { int newMinX = region.minX() - IntMath.mod(region.minX(), sampleRate); int newMinY = region.minY() - IntMath.mod(region.minY(), sampleRate); int newMinZ = region.minZ() - IntMath.mod(region.minZ(), sampleRate); int newMaxX = region.maxX() + 4 - IntMath.mod(region.maxX(), sampleRate) - 1; int newMaxY = region.maxY() + 4 - IntMath.mod(region.maxY(), sampleRate) - 1; int newMaxZ = region.maxZ() + 4 - IntMath.mod(region.maxZ(), sampleRate) - 1; return Region3i.createFromMinMax(new Vector3i(newMinX, newMinY, newMinZ), new Vector3i(newMaxX, newMaxY, newMaxZ)); } }
private Region3i determineRequiredRegion(Region3i region) { int newMinX = region.minX() - IntMath.mod(region.minX(), sampleRate); int newMinY = region.minY() - IntMath.mod(region.minY(), sampleRate); int newMinZ = region.minZ() - IntMath.mod(region.minZ(), sampleRate); int newMaxX = region.maxX() + 4 - IntMath.mod(region.maxX(), sampleRate) - 1; int newMaxY = region.maxY() + 4 - IntMath.mod(region.maxY(), sampleRate) - 1; int newMaxZ = region.maxZ() + 4 - IntMath.mod(region.maxZ(), sampleRate) - 1; return Region3i.createFromMinMax(new Vector3i(newMinX, newMinY, newMinZ), new Vector3i(newMaxX, newMaxY, newMaxZ)); } }
public static Vector3i[] calcChunkPos(Region3i region, Vector3i chunkPower) { int minX = calcChunkPosX(region.minX(), chunkPower.x); int minY = calcChunkPosY(region.minY(), chunkPower.y); int minZ = calcChunkPosZ(region.minZ(), chunkPower.z); int maxX = calcChunkPosX(region.maxX(), chunkPower.x); int maxY = calcChunkPosY(region.maxY(), chunkPower.y); int maxZ = calcChunkPosZ(region.maxZ(), chunkPower.z); int size = (maxX - minX + 1) * (maxY - minY + 1) * (maxZ - minZ + 1); Vector3i[] result = new Vector3i[size]; int index = 0; for (int x = minX; x <= maxX; x++) { for (int y = minY; y <= maxY; y++) { for (int z = minZ; z <= maxZ; z++) { result[index++] = new Vector3i(x, y, z); } } } return result; }
private void propagateSide(LitChunk chunk, LitChunk adjChunk, Side side, IndexProvider indexProvider, Region3i edgeRegion, int[] depths) { Vector3i adjPos = new Vector3i(); for (int x = edgeRegion.minX(); x <= edgeRegion.maxX(); ++x) { for (int y = edgeRegion.minY(); y <= edgeRegion.maxY(); ++y) { for (int z = edgeRegion.minZ(); z <= edgeRegion.maxZ(); ++z) {
int maxY = worldRegion.maxY();
@Override public void process(GeneratingRegion region) { SurfaceHeightFacet surfaceHeight = region.getRegionFacet(SurfaceHeightFacet.class); DensityFacet facet = new DensityFacet(region.getRegion(), region.getBorderForFacet(DensityFacet.class)); Region3i area = region.getRegion(); Rect2i rect = Rect2i.createFromMinAndMax(facet.getRelativeRegion().minX(), facet.getRelativeRegion().minZ(), facet.getRelativeRegion().maxX(), facet.getRelativeRegion().maxZ()); for (BaseVector2i pos : rect.contents()) { float height = surfaceHeight.get(pos); for (int y = facet.getRelativeRegion().minY(); y <= facet.getRelativeRegion().maxY(); ++y) { facet.set(pos.x(), y, pos.y(), height - area.minY() - y); } } region.setRegionFacet(DensityFacet.class, facet); } }
Vector3f max = new Vector3f(region.maxX() + 0.5f, region.maxY() + 0.5f, region.maxZ() + 0.5f);