98 lines
3.4 KiB
Java
98 lines
3.4 KiB
Java
package com.mojang.blaze3d.vertex;
|
|
|
|
import net.minecraft.util.Mth;
|
|
|
|
public interface BufferVertexConsumer extends VertexConsumer {
|
|
VertexFormatElement currentElement();
|
|
|
|
void nextElement();
|
|
|
|
void putByte(final int integer, final byte byte2);
|
|
|
|
void putShort(final int integer, final short short2);
|
|
|
|
void putFloat(final int integer, final float float2);
|
|
|
|
default VertexConsumer vertex(final double double1, final double double2, final double double3) {
|
|
if (this.currentElement().getType() != VertexFormatElement.Type.FLOAT) {
|
|
throw new IllegalStateException();
|
|
}
|
|
this.putFloat(0, (float)double1);
|
|
this.putFloat(4, (float)double2);
|
|
this.putFloat(8, (float)double3);
|
|
this.nextElement();
|
|
return this;
|
|
}
|
|
|
|
default VertexConsumer color(final int integer1, final int integer2, final int integer3, final int integer4) {
|
|
final VertexFormatElement dhr6 = this.currentElement();
|
|
if (dhr6.getUsage() != VertexFormatElement.Usage.COLOR) {
|
|
return this;
|
|
}
|
|
if (dhr6.getType() != VertexFormatElement.Type.UBYTE) {
|
|
throw new IllegalStateException();
|
|
}
|
|
this.putByte(0, (byte)integer1);
|
|
this.putByte(1, (byte)integer2);
|
|
this.putByte(2, (byte)integer3);
|
|
this.putByte(3, (byte)integer4);
|
|
this.nextElement();
|
|
return this;
|
|
}
|
|
|
|
default VertexConsumer uv(final float float1, final float float2) {
|
|
final VertexFormatElement dhr4 = this.currentElement();
|
|
if (dhr4.getUsage() != VertexFormatElement.Usage.UV || dhr4.getIndex() != 0) {
|
|
return this;
|
|
}
|
|
if (dhr4.getType() != VertexFormatElement.Type.FLOAT) {
|
|
throw new IllegalStateException();
|
|
}
|
|
this.putFloat(0, float1);
|
|
this.putFloat(4, float2);
|
|
this.nextElement();
|
|
return this;
|
|
}
|
|
|
|
default VertexConsumer overlayCoords(final int integer1, final int integer2) {
|
|
return this.uvShort((short)integer1, (short)integer2, 1);
|
|
}
|
|
|
|
default VertexConsumer uv2(final int integer1, final int integer2) {
|
|
return this.uvShort((short)integer1, (short)integer2, 2);
|
|
}
|
|
|
|
default VertexConsumer uvShort(final short short1, final short short2, final int integer) {
|
|
final VertexFormatElement dhr5 = this.currentElement();
|
|
if (dhr5.getUsage() != VertexFormatElement.Usage.UV || dhr5.getIndex() != integer) {
|
|
return this;
|
|
}
|
|
if (dhr5.getType() != VertexFormatElement.Type.SHORT) {
|
|
throw new IllegalStateException();
|
|
}
|
|
this.putShort(0, short1);
|
|
this.putShort(2, short2);
|
|
this.nextElement();
|
|
return this;
|
|
}
|
|
|
|
default VertexConsumer normal(final float float1, final float float2, final float float3) {
|
|
final VertexFormatElement dhr5 = this.currentElement();
|
|
if (dhr5.getUsage() != VertexFormatElement.Usage.NORMAL) {
|
|
return this;
|
|
}
|
|
if (dhr5.getType() != VertexFormatElement.Type.BYTE) {
|
|
throw new IllegalStateException();
|
|
}
|
|
this.putByte(0, normalIntValue(float1));
|
|
this.putByte(1, normalIntValue(float2));
|
|
this.putByte(2, normalIntValue(float3));
|
|
this.nextElement();
|
|
return this;
|
|
}
|
|
|
|
default byte normalIntValue(final float float1) {
|
|
return (byte)((int)(Mth.clamp(float1, -1.0f, 1.0f) * 127.0f) & 0xFF);
|
|
}
|
|
}
|