diff --git a/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java b/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java index ff117fc..0a60faf 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java +++ b/src/main/java/ru/windcorp/progressia/client/world/ChunkRender.java @@ -30,9 +30,9 @@ import ru.windcorp.progressia.client.graphics.model.StaticModel.Builder; import ru.windcorp.progressia.client.world.renders.BlockRender; import ru.windcorp.progressia.client.world.renders.BlockRenderNone; import ru.windcorp.progressia.client.world.renders.BlockRenders; -import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizer; -import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizerGenerator; -import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizerGenerators; +import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; +import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerSupplier; +import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizers; import ru.windcorp.progressia.common.world.ChunkData; public class ChunkRender { @@ -87,9 +87,9 @@ public class ChunkRender { } private void buildModel() { - Collection optimizers = - BlockRenderOptimizerGenerators.getAll().stream() - .map(BlockRenderOptimizerGenerator::createOptimizer) + Collection optimizers = + ChunkRenderOptimizers.getAllSuppliers().stream() + .map(ChunkRenderOptimizerSupplier::createOptimizer) .collect(Collectors.toList()); optimizers.forEach(bro -> bro.startRender(this)); @@ -121,7 +121,7 @@ public class ChunkRender { } } - for (BlockRenderOptimizer optimizer : optimizers) { + for (ChunkRenderOptimizer optimizer : optimizers) { Shape result = optimizer.endRender(); if (result != null) { builder.addPart(result); @@ -134,7 +134,7 @@ public class ChunkRender { private void forwardToOptimizers( BlockRender block, int x, int y, int z, - Collection optimizers + Collection optimizers ) { optimizers.forEach(bro -> bro.processBlock(block, x, y, z)); } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java b/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java index e3791c2..7d4f218 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRender.java @@ -19,7 +19,7 @@ package ru.windcorp.progressia.client.world.renders; import ru.windcorp.progressia.client.graphics.model.ShapeRenderHelper; import ru.windcorp.progressia.client.graphics.model.WorldRenderable; -import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizer; +import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer; import ru.windcorp.progressia.common.util.Namespaced; public abstract class BlockRender extends Namespaced { @@ -38,7 +38,7 @@ public abstract class BlockRender extends Namespaced { return null; } - public boolean canBeOptimized(BlockRenderOptimizer optimizer) { + public boolean canBeOptimized(ChunkRenderOptimizer optimizer) { return true; } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java b/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java index d09ad24..7f9452e 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/BlockRenderTexturedCube.java @@ -26,7 +26,7 @@ import ru.windcorp.progressia.client.graphics.model.Shapes; import ru.windcorp.progressia.client.graphics.model.WorldRenderable; import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; -import ru.windcorp.progressia.client.world.renders.bro.BlockRenderCubeOptimizer.OpaqueCube; +import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerCube.OpaqueCube; import ru.windcorp.progressia.common.block.BlockFace; public abstract class BlockRenderTexturedCube diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizer.java b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java similarity index 90% rename from src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizer.java rename to src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java index 2136a8e..abea2af 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizer.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizer.java @@ -15,13 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.bro; +package ru.windcorp.progressia.client.world.renders.cro; import ru.windcorp.progressia.client.graphics.model.Shape; import ru.windcorp.progressia.client.world.ChunkRender; import ru.windcorp.progressia.client.world.renders.BlockRender; -public abstract class BlockRenderOptimizer { +public abstract class ChunkRenderOptimizer { public abstract void startRender(ChunkRender chunk); diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderCubeOptimizer.java b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java similarity index 94% rename from src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderCubeOptimizer.java rename to src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java index 5743254..fd12fed 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderCubeOptimizer.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerCube.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.bro; +package ru.windcorp.progressia.client.world.renders.cro; import static ru.windcorp.progressia.common.world.ChunkData.BLOCKS_PER_CHUNK; @@ -34,7 +34,7 @@ import ru.windcorp.progressia.client.world.renders.BlockRender; import ru.windcorp.progressia.common.block.BlockFace; import ru.windcorp.progressia.common.world.ChunkData; -public class BlockRenderCubeOptimizer extends BlockRenderOptimizer { +public class ChunkRenderOptimizerCube extends ChunkRenderOptimizer { public static interface OpaqueCube { public Texture getTexture(BlockFace face); diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerator.java b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java similarity index 60% rename from src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerator.java rename to src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java index 676dd0e..0645496 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerator.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizerSupplier.java @@ -15,16 +15,30 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.bro; +package ru.windcorp.progressia.client.world.renders.cro; + +import com.google.common.base.Supplier; import ru.windcorp.progressia.common.util.Namespaced; -public abstract class BlockRenderOptimizerGenerator extends Namespaced { +public abstract class ChunkRenderOptimizerSupplier extends Namespaced { - public BlockRenderOptimizerGenerator(String namespace, String name) { + public ChunkRenderOptimizerSupplier(String namespace, String name) { super(namespace, name); } - public abstract BlockRenderOptimizer createOptimizer(); + public abstract ChunkRenderOptimizer createOptimizer(); + + public static ChunkRenderOptimizerSupplier of( + String namespace, String name, + Supplier supplier + ) { + return new ChunkRenderOptimizerSupplier(namespace, name) { + @Override + public ChunkRenderOptimizer createOptimizer() { + return supplier.get(); + } + }; + } } diff --git a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerators.java b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java similarity index 56% rename from src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerators.java rename to src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java index d5a680c..b7e542c 100644 --- a/src/main/java/ru/windcorp/progressia/client/world/renders/bro/BlockRenderOptimizerGenerators.java +++ b/src/main/java/ru/windcorp/progressia/client/world/renders/cro/ChunkRenderOptimizers.java @@ -15,38 +15,36 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . *******************************************************************************/ -package ru.windcorp.progressia.client.world.renders.bro; +package ru.windcorp.progressia.client.world.renders.cro; import java.util.Collection; import java.util.HashMap; import java.util.Map; -public class BlockRenderOptimizerGenerators { +public class ChunkRenderOptimizers { - private BlockRenderOptimizerGenerators() {} + private ChunkRenderOptimizers() {} - private static final Map GENERATORS = + private static final Map SUPPLIERS = new HashMap<>(); static { - register(new BlockRenderOptimizerGenerator("Default", "OpaqueCube") { - @Override - public BlockRenderOptimizer createOptimizer() { - return new BlockRenderCubeOptimizer(); - } - }); + register(ChunkRenderOptimizerSupplier.of( + "Default", "OpaqueCube", + ChunkRenderOptimizerCube::new + )); } - public static BlockRenderOptimizerGenerator get(String id) { - return GENERATORS.get(id); + public static ChunkRenderOptimizerSupplier getSupplier(String id) { + return SUPPLIERS.get(id); } - public static void register(BlockRenderOptimizerGenerator generator) { - GENERATORS.put(generator.getId(), generator); + public static void register(ChunkRenderOptimizerSupplier supplier) { + SUPPLIERS.put(supplier.getId(), supplier); } - public static Collection getAll() { - return GENERATORS.values(); + public static Collection getAllSuppliers() { + return SUPPLIERS.values(); } }