Skip to content

Commit a582d95

Browse files
committed
inline an always capturing lambda method and avoid allocating a data class just to use an instance method
1 parent 68269ef commit a582d95

File tree

1 file changed

+30
-39
lines changed

1 file changed

+30
-39
lines changed

src/main/java/mekanism/client/render/RenderTickHandler.java

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import net.minecraft.client.renderer.LevelRenderer;
5555
import net.minecraft.client.renderer.LightTexture;
5656
import net.minecraft.client.renderer.MultiBufferSource;
57+
import net.minecraft.client.renderer.MultiBufferSource.BufferSource;
5758
import net.minecraft.client.renderer.RenderType;
5859
import net.minecraft.client.renderer.Sheets;
5960
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
@@ -151,14 +152,18 @@ public static void addTransparentRenderer(RenderType renderType, LazyRender rend
151152
public void renderWorld(RenderLevelStageEvent event) {
152153
if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_TRANSLUCENT_BLOCKS) {
153154
//Only do matrix transforms and mess with buffers if we actually have any renders to render
154-
renderStage(event, !transparentRenderers.isEmpty(), (camera, renderer, poseStack, renderTick, partialTick) -> {
155+
if (!transparentRenderers.isEmpty()) {
156+
Camera camera = event.getCamera();
157+
MultiBufferSource.BufferSource renderer = minecraft.renderBuffers().bufferSource();
158+
PoseStack poseStack = event.getPoseStack();
159+
int renderTick = event.getRenderTick();
160+
float partialTick = event.getPartialTick();
155161
ProfilerFiller profiler = minecraft.getProfiler();
156162
profiler.push(ProfilerConstants.DELAYED);
157163
if (transparentRenderers.size() == 1) {
158164
//If we only have one render type we don't need to bother calculating any distances
159-
for (Map.Entry<RenderType, List<LazyRender>> entry : transparentRenderers.entrySet()) {
160-
TransparentRenderInfo renderInfo = new TransparentRenderInfo(entry.getKey(), entry.getValue(), 0);
161-
renderInfo.render(camera, renderer, poseStack, renderTick, partialTick, profiler);
165+
for (Entry<RenderType, List<LazyRender>> entry : transparentRenderers.entrySet()) {
166+
doTransparentRender(entry.getKey(), entry.getValue(), camera, renderer, poseStack, renderTick, partialTick, profiler);
162167
}
163168
} else {
164169
List<TransparentRenderInfo> toSort = new ArrayList<>(transparentRenderers.size());
@@ -186,19 +191,11 @@ public void renderWorld(RenderLevelStageEvent event) {
186191
}
187192
transparentRenderers.clear();
188193
profiler.pop();
189-
});
194+
}
190195
} else if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_PARTICLES && boltRenderer.hasBoltsToRender()) {
191-
//Only do matrix transforms and mess with buffers if we actually have any bolts to render
192-
renderStage(event, boltRenderer.hasBoltsToRender(), (camera, renderer, poseStack, renderTick, partialTick) -> {
193-
boltRenderer.render(partialTick, poseStack, renderer, camera.getPosition());
194-
renderer.endBatch(MekanismRenderType.MEK_LIGHTNING);
195-
});
196-
}
197-
}
198-
199-
private void renderStage(RenderLevelStageEvent event, boolean shouldRender, StageRenderer renderer) {
200-
if (shouldRender) {
201-
renderer.render(event.getCamera(), minecraft.renderBuffers().bufferSource(), event.getPoseStack(), event.getRenderTick(), event.getPartialTick());
196+
MultiBufferSource.BufferSource renderer = minecraft.renderBuffers().bufferSource();
197+
boltRenderer.render(event.getPartialTick(), event.getPoseStack(), renderer, event.getCamera().getPosition());
198+
renderer.endBatch(MekanismRenderType.MEK_LIGHTNING);
202199
}
203200
}
204201

@@ -544,16 +541,6 @@ private Model3D getOverlayModel(Direction side, TransmissionType type) {
544541
return model;
545542
}
546543

547-
@FunctionalInterface
548-
private interface StageRenderer {
549-
550-
/**
551-
* @param camera Camera position, in general rendering will have to be translated by the inverse position of the client viewing camera to get back to 0, 0, 0
552-
*/
553-
void render(Camera camera, MultiBufferSource.BufferSource renderer, PoseStack poseStack, int renderTick, float partialTick);
554-
}
555-
556-
@FunctionalInterface
557544
public interface LazyRender {
558545

559546
void render(Camera camera, VertexConsumer buffer, PoseStack poseStack, int renderTick, float partialTick, ProfilerFiller profiler);
@@ -571,20 +558,24 @@ default String getProfilerSection() {
571558

572559
private record TransparentRenderInfo(RenderType renderType, List<LazyRender> renders, double closest) {
573560
private void render(Camera camera, MultiBufferSource.BufferSource renderer, PoseStack poseStack, int renderTick, float partialTick, ProfilerFiller profiler) {
574-
//Batch all renders for a single render type into a single buffer addition
575-
VertexConsumer buffer = renderer.getBuffer(renderType);
576-
for (LazyRender transparentRender : renders) {
577-
String profilerSection = transparentRender.getProfilerSection();
578-
if (profilerSection != null) {
579-
profiler.push(profilerSection);
580-
}
581-
//Note: We don't bother sorting renders in a specific render type as we assume the render type has sortOnUpload as true
582-
transparentRender.render(camera, buffer, poseStack, renderTick, partialTick, profiler);
583-
if (profilerSection != null) {
584-
profiler.pop();
585-
}
561+
doTransparentRender(renderType, renders, camera, renderer, poseStack, renderTick, partialTick, profiler);
562+
}
563+
}
564+
565+
private static void doTransparentRender(RenderType renderType, List<LazyRender> renders, Camera camera, BufferSource renderer, PoseStack poseStack, int renderTick, float partialTick, ProfilerFiller profiler) {
566+
//Batch all renders for a single render type into a single buffer addition
567+
VertexConsumer buffer = renderer.getBuffer(renderType);
568+
for (LazyRender transparentRender : renders) {
569+
String profilerSection = transparentRender.getProfilerSection();
570+
if (profilerSection != null) {
571+
profiler.push(profilerSection);
572+
}
573+
//Note: We don't bother sorting renders in a specific render type as we assume the render type has sortOnUpload as true
574+
transparentRender.render(camera, buffer, poseStack, renderTick, partialTick, profiler);
575+
if (profilerSection != null) {
576+
profiler.pop();
586577
}
587-
renderer.endBatch(renderType);
588578
}
579+
renderer.endBatch(renderType);
589580
}
590581
}

0 commit comments

Comments
 (0)