Renamed BlockRenderOptimizer to ChunkRenderOptimizer

Also renamed [BRO]Generator to [CRO]Supplier
This commit is contained in:
OLEGSHA 2020-08-25 21:21:22 +03:00
parent d58d028e1c
commit bdb458b911
7 changed files with 47 additions and 35 deletions

View File

@ -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.BlockRender;
import ru.windcorp.progressia.client.world.renders.BlockRenderNone; import ru.windcorp.progressia.client.world.renders.BlockRenderNone;
import ru.windcorp.progressia.client.world.renders.BlockRenders; import ru.windcorp.progressia.client.world.renders.BlockRenders;
import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizer; import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizer;
import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizerGenerator; import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizerSupplier;
import ru.windcorp.progressia.client.world.renders.bro.BlockRenderOptimizerGenerators; import ru.windcorp.progressia.client.world.renders.cro.ChunkRenderOptimizers;
import ru.windcorp.progressia.common.world.ChunkData; import ru.windcorp.progressia.common.world.ChunkData;
public class ChunkRender { public class ChunkRender {
@ -87,9 +87,9 @@ public class ChunkRender {
} }
private void buildModel() { private void buildModel() {
Collection<BlockRenderOptimizer> optimizers = Collection<ChunkRenderOptimizer> optimizers =
BlockRenderOptimizerGenerators.getAll().stream() ChunkRenderOptimizers.getAllSuppliers().stream()
.map(BlockRenderOptimizerGenerator::createOptimizer) .map(ChunkRenderOptimizerSupplier::createOptimizer)
.collect(Collectors.toList()); .collect(Collectors.toList());
optimizers.forEach(bro -> bro.startRender(this)); 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(); Shape result = optimizer.endRender();
if (result != null) { if (result != null) {
builder.addPart(result); builder.addPart(result);
@ -134,7 +134,7 @@ public class ChunkRender {
private void forwardToOptimizers( private void forwardToOptimizers(
BlockRender block, int x, int y, int z, BlockRender block, int x, int y, int z,
Collection<BlockRenderOptimizer> optimizers Collection<ChunkRenderOptimizer> optimizers
) { ) {
optimizers.forEach(bro -> bro.processBlock(block, x, y, z)); optimizers.forEach(bro -> bro.processBlock(block, x, y, z));
} }

View File

@ -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.ShapeRenderHelper;
import ru.windcorp.progressia.client.graphics.model.WorldRenderable; 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; import ru.windcorp.progressia.common.util.Namespaced;
public abstract class BlockRender extends Namespaced { public abstract class BlockRender extends Namespaced {
@ -38,7 +38,7 @@ public abstract class BlockRender extends Namespaced {
return null; return null;
} }
public boolean canBeOptimized(BlockRenderOptimizer optimizer) { public boolean canBeOptimized(ChunkRenderOptimizer optimizer) {
return true; return true;
} }

View File

@ -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.model.WorldRenderable;
import ru.windcorp.progressia.client.graphics.texture.Texture; import ru.windcorp.progressia.client.graphics.texture.Texture;
import ru.windcorp.progressia.client.graphics.world.WorldRenderProgram; 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; import ru.windcorp.progressia.common.block.BlockFace;
public abstract class BlockRenderTexturedCube public abstract class BlockRenderTexturedCube

View File

@ -15,13 +15,13 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/ *******************************************************************************/
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.graphics.model.Shape;
import ru.windcorp.progressia.client.world.ChunkRender; import ru.windcorp.progressia.client.world.ChunkRender;
import ru.windcorp.progressia.client.world.renders.BlockRender; import ru.windcorp.progressia.client.world.renders.BlockRender;
public abstract class BlockRenderOptimizer { public abstract class ChunkRenderOptimizer {
public abstract void startRender(ChunkRender chunk); public abstract void startRender(ChunkRender chunk);

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/ *******************************************************************************/
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; 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.block.BlockFace;
import ru.windcorp.progressia.common.world.ChunkData; import ru.windcorp.progressia.common.world.ChunkData;
public class BlockRenderCubeOptimizer extends BlockRenderOptimizer { public class ChunkRenderOptimizerCube extends ChunkRenderOptimizer {
public static interface OpaqueCube { public static interface OpaqueCube {
public Texture getTexture(BlockFace face); public Texture getTexture(BlockFace face);

View File

@ -15,16 +15,30 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/ *******************************************************************************/
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; 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); super(namespace, name);
} }
public abstract BlockRenderOptimizer createOptimizer(); public abstract ChunkRenderOptimizer createOptimizer();
public static ChunkRenderOptimizerSupplier of(
String namespace, String name,
Supplier<ChunkRenderOptimizer> supplier
) {
return new ChunkRenderOptimizerSupplier(namespace, name) {
@Override
public ChunkRenderOptimizer createOptimizer() {
return supplier.get();
}
};
}
} }

View File

@ -15,38 +15,36 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*******************************************************************************/ *******************************************************************************/
package ru.windcorp.progressia.client.world.renders.bro; package ru.windcorp.progressia.client.world.renders.cro;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class BlockRenderOptimizerGenerators { public class ChunkRenderOptimizers {
private BlockRenderOptimizerGenerators() {} private ChunkRenderOptimizers() {}
private static final Map<String, BlockRenderOptimizerGenerator> GENERATORS = private static final Map<String, ChunkRenderOptimizerSupplier> SUPPLIERS =
new HashMap<>(); new HashMap<>();
static { static {
register(new BlockRenderOptimizerGenerator("Default", "OpaqueCube") { register(ChunkRenderOptimizerSupplier.of(
@Override "Default", "OpaqueCube",
public BlockRenderOptimizer createOptimizer() { ChunkRenderOptimizerCube::new
return new BlockRenderCubeOptimizer(); ));
}
});
} }
public static BlockRenderOptimizerGenerator get(String id) { public static ChunkRenderOptimizerSupplier getSupplier(String id) {
return GENERATORS.get(id); return SUPPLIERS.get(id);
} }
public static void register(BlockRenderOptimizerGenerator generator) { public static void register(ChunkRenderOptimizerSupplier supplier) {
GENERATORS.put(generator.getId(), generator); SUPPLIERS.put(supplier.getId(), supplier);
} }
public static Collection<BlockRenderOptimizerGenerator> getAll() { public static Collection<ChunkRenderOptimizerSupplier> getAllSuppliers() {
return GENERATORS.values(); return SUPPLIERS.values();
} }
} }