diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-04-10 14:28:46 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-04-10 14:28:46 +0800 |
| commit | 0e96125db3f91890657d1026feb0879bbf761dc7 (patch) | |
| tree | aadd503779f7f84981cded924ec5072f3907a526 /api/src/main/java/me | |
| parent | 188066bfd4817c1c160061d61e7a0130e9377e98 (diff) | |
| download | RoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.tar.gz RoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.tar.bz2 RoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.zip | |
BatchEntryRenderer -> BatchedEntryRenderer
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'api/src/main/java/me')
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java (renamed from api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java) | 42 | ||||
| -rw-r--r-- | api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java | 7 |
2 files changed, 41 insertions, 8 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java index ba7e5d150..400ef727c 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java @@ -29,28 +29,54 @@ import me.shedaniel.rei.api.common.entry.EntryStack; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; -public interface BatchEntryRenderer<T> extends EntryRenderer<T> { - static <T> int getBatchIdFrom(EntryStack<T> entry) { - EntryRenderer<T> renderer = entry.getRenderer(); - if (renderer instanceof BatchEntryRenderer) return ((BatchEntryRenderer<T>) renderer).getBatchId(entry); - return renderer.getClass().hashCode(); +public interface BatchedEntryRenderer<T> extends EntryRenderer<T> { + /** + * Returns a batch identifier, stacks with the same batch identifier will be grouped together + * into a batch. + * + * @param entry the stack + * @param bounds the bounds of the entry + * @return the batch identifier + */ + default int getBatchIdentifier(EntryStack<T> entry, Rectangle bounds) { + return getClass().hashCode(); } - default int getBatchId(EntryStack<T> entry) { - return getClass().hashCode(); + /** + * Modifies the {@link PoseStack} passed tp various batch rendering methods. + * + * @param matrices the matrix stack + * @return the modified matrix stack, could be an entirely different stack + */ + default PoseStack batchModifyMatrices(PoseStack matrices) { + return matrices; } + /** + * Starts the batch rendering, used to setup states, only called once with every batch. + * + * @param entry the first entry in the batch + * @param matrices the matrix stack + * @param delta the tick delta + */ void startBatch(EntryStack<T> entry, PoseStack matrices, float delta); void renderBase(EntryStack<T> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta); void renderOverlay(EntryStack<T> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta); + /** + * Ends the batch rendering, used to setup states, only called once with every batch. + * + * @param entry the first entry in the batch + * @param matrices the matrix stack + * @param delta the tick delta + */ void endBatch(EntryStack<T> entry, PoseStack matrices, float delta); - @Deprecated @Override default void render(EntryStack<T> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) { + matrices = batchModifyMatrices(matrices); startBatch(entry, matrices, delta); MultiBufferSource.BufferSource immediate = Minecraft.getInstance().renderBuffers().bufferSource(); renderBase(entry, matrices, immediate, bounds, mouseX, mouseY, delta); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java index 9ee60c5f8..e5b78b788 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java @@ -34,6 +34,13 @@ import net.fabricmc.api.Environment; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +/** + * A renderer to render a {@link EntryStack}. + * Use {@link me.shedaniel.rei.api.client.util.ClientEntryStacks#setRenderer} to change the {@link EntryRenderer} for a {@link EntryStack}. + * + * @param <T> the entry type + * @see BatchedEntryRenderer + */ public interface EntryRenderer<T> { static <T> EntryRenderer<T> empty() { return ClientInternals.getEmptyEntryRenderer(); |
