@Override public float get(BaseVector2i pos) { return get(pos.x(), pos.y()); }
@Override public void setWorld(BaseVector2i pos, float value) { setWorld(pos.x(), pos.y(), value); }
@Override public float getWorld(BaseVector2i pos) { return getWorld(pos.x(), pos.y()); }
@Override public void set(BaseVector2i pos, float value) { set(pos.x(), pos.y(), value); }
@Override public T get(BaseVector2i pos) { return get(pos.x(), pos.y()); }
@Override public T getWorld(BaseVector2i pos) { return getWorld(pos.x(), pos.y()); }
@Override public void setWorld(BaseVector2i pos, T value) { setWorld(pos.x(), pos.y(), value); }
@Override public void process(GeneratingRegion region) { // Create our surface height facet (we will get into borders later) Border3D border = region.getBorderForFacet(SurfaceHeightFacet.class); SurfaceHeightFacet facet = new SurfaceHeightFacet(region.getRegion(), border); // loop through every position on our 2d array Rect2i processRegion = facet.getWorldRegion(); for (BaseVector2i position : processRegion.contents()) { facet.setWorld(position, surfaceNoise.noise(position.x(), position.y()) * 20); } // give our newly created and populated facet to the region region.setRegionFacet(SurfaceHeightFacet.class, facet); } }
@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); } }