aboutsummaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-04-10 14:28:46 +0800
committershedaniel <daniel@shedaniel.me>2021-04-10 14:28:46 +0800
commit0e96125db3f91890657d1026feb0879bbf761dc7 (patch)
treeaadd503779f7f84981cded924ec5072f3907a526 /api/src
parent188066bfd4817c1c160061d61e7a0130e9377e98 (diff)
downloadRoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.tar.gz
RoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.tar.bz2
RoughlyEnoughItems-0e96125db3f91890657d1026feb0879bbf761dc7.zip
BatchEntryRenderer -> BatchedEntryRenderer
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'api/src')
-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.java7
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();