Add RecordingVertexConsumer

- Very basic and untested
This commit is contained in:
Jozufozu 2021-12-09 15:19:48 -08:00
parent 7b3bab6647
commit da55941e4f
3 changed files with 88 additions and 3 deletions

View file

@ -42,9 +42,9 @@ public enum GlError {
public static void pollAndThrow(Supplier<String> context) {
// TODO: build flag? to enable or disable this function
GlError poll = GlError.poll();
if (poll != null) {
Flywheel.log.error("{}: {}", poll.name(), context.get());
GlError err = GlError.poll();
if (err != null) {
Flywheel.log.error("{}: {}", err.name(), context.get());
}
}
}

View file

@ -0,0 +1,70 @@
package com.jozufozu.flywheel.core.model;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.vertex.VertexConsumer;
public class RecordingVertexConsumer implements VertexConsumer {
List<Consumer<VertexConsumer>> replay = new ArrayList<>();
@Override
public VertexConsumer vertex(double x, double y, double z) {
replay.add(v -> v.vertex(x, y, z));
return this;
}
@Override
public VertexConsumer color(int r, int g, int b, int a) {
replay.add(v -> v.color(r, g, b, a));
return this;
}
@Override
public VertexConsumer uv(float u, float v) {
replay.add(vc -> vc.uv(u, v));
return this;
}
@Override
public VertexConsumer overlayCoords(int u, int v) {
replay.add(vc -> vc.overlayCoords(u, v));
return this;
}
@Override
public VertexConsumer uv2(int u, int v) {
replay.add(vc -> vc.uv2(u, v));
return this;
}
@Override
public VertexConsumer normal(float x, float y, float z) {
replay.add(v -> v.normal(x, y, z));
return this;
}
@Override
public void endVertex() {
replay.add(VertexConsumer::endVertex);
}
@Override
public void defaultColor(int r, int g, int b, int a) {
replay.add(vc -> vc.defaultColor(r, g, b, a));
}
@Override
public void unsetDefaultColor() {
replay.add(VertexConsumer::unsetDefaultColor);
}
public VertexRecording saveRecording() {
VertexRecording out = new VertexRecording(ImmutableList.copyOf(replay));
replay.clear();
return out;
}
}

View file

@ -0,0 +1,15 @@
package com.jozufozu.flywheel.core.model;
import java.util.function.Consumer;
import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.vertex.VertexConsumer;
public record VertexRecording(ImmutableList<Consumer<VertexConsumer>> recording) {
public void replay(VertexConsumer vc) {
for (Consumer<VertexConsumer> consumer : recording) {
consumer.accept(vc);
}
}
}