Various minor

refactor some region dependencies
swithc masking extent to a filter (so it can be parallelized)
Some unfinished refactoring of the filters
remove piston messages from strings.json
This commit is contained in:
Jesse Boyd
2019-12-16 09:07:51 +00:00
parent a36778794b
commit 6ddeb2ebf5
37 changed files with 323 additions and 197 deletions

View File

@ -674,7 +674,7 @@ public class CuboidRegion extends AbstractRegion implements FlatRegion {
public void filter(final IChunk chunk, final Filter filter, ChunkFilterBlock block, final IChunkGet get, final IChunkSet set, boolean full) {
int chunkX = chunk.getX();
int chunkZ = chunk.getZ();
block = block.init(chunkX, chunkZ, get);
block = block.initChunk(chunkX, chunkZ);
if ((minX + 15) >> 4 <= chunkX && (maxX - 15) >> 4 >= chunkX && (minZ + 15) >> 4 <= chunkZ && (maxZ - 15) >> 4 >= chunkZ) {

View File

@ -303,6 +303,11 @@ public class EllipsoidRegion extends AbstractRegion {
int sectionStart = y1 >> 4;
int sectionEnd = y2 >> 4;
for (int layer = sectionStart; layer < sectionEnd; layer++) {
int yStart = Math.max(layer << 4, y1);
int yEnd = Math.min((layer << 4) + 15, y2);
filterSpherePartial(layer, yStart, yEnd, bx, bz, filter, block, get, set);
}
}
private void filterSpherePartial(int layer, int y1, int y2, int bx, int bz, Filter filter, ChunkFilterBlock block, IChunkGet get, IChunkSet set) {
@ -310,7 +315,7 @@ public class EllipsoidRegion extends AbstractRegion {
int cy = center.getBlockY();
int cz = center.getBlockZ();
block.init(get, set, layer);
block.initLayer(get, set, layer);
int by = layer << 4;
int diffY;

View File

@ -208,7 +208,7 @@ public interface Region extends Iterable<BlockVector3>, Cloneable, IBatchProcess
int maxSection = Math.min(15, getMaximumY() >> 4);
for (int layer = minSection; layer <= maxSection; layer++) {
if ((!full && !get.hasSection(layer)) || !filter.appliesLayer(chunk, layer)) return;
block = block.init(get, set, layer);
block = block.initLayer(get, set, layer);
block.filter(filter, this);
}
}
@ -238,19 +238,19 @@ public interface Region extends Iterable<BlockVector3>, Cloneable, IBatchProcess
default void filter(final IChunk chunk, final Filter filter, ChunkFilterBlock block, final IChunkGet get, final IChunkSet set, int layer, boolean full) {
if ((!full && !get.hasSection(layer)) || !filter.appliesLayer(chunk, layer)) return;
block = block.init(get, set, layer);
block = block.initLayer(get, set, layer);
block.filter(filter);
}
default void filter(final IChunk chunk, final Filter filter, ChunkFilterBlock block, final IChunkGet get, final IChunkSet set, int layer, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, boolean full) {
if ((!full && !get.hasSection(layer)) || !filter.appliesLayer(chunk, layer)) return;
block = block.init(get, set, layer);
block = block.initLayer(get, set, layer);
block.filter(filter, minX, minY, minZ, maxX, maxY, maxZ);
}
default void filter(final IChunk chunk, final Filter filter, ChunkFilterBlock block, final IChunkGet get, final IChunkSet set, int layer, int yStart, int yEnd, boolean full) {
if ((!full && !get.hasSection(layer)) || !filter.appliesLayer(chunk, layer)) return;
block = block.init(get, set, layer);
block = block.initLayer(get, set, layer);
block.filter(filter, yStart, yEnd);
}