Renamed BlockRenderOptimizer to ChunkRenderOptimizer
Also renamed [BRO]Generator to [CRO]Supplier
This commit is contained in:
parent
d58d028e1c
commit
bdb458b911
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
|
@ -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);
|
@ -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();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user