XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

MyDimension-Lord

【我的世界】我的维度附属模组:维度之主

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.mydimensionlord.platform;

import com.mojang.blaze3d.vertex.BufferBuilder;
import com.mojang.blaze3d.vertex.ByteBufferBuilder;
import com.mojang.blaze3d.vertex.MeshData;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.blaze3d.vertex.VertexFormat;

/** Owns the native memory behind one independently built preview mesh. */
public final class MeshBuilder implements VertexConsumer {
    private final ByteBufferBuilder storage;
    private BufferBuilder builder;
    private boolean closed;
    public MeshBuilder(int capacity) { storage = new ByteBufferBuilder(capacity); }
    public void begin(VertexFormat.Mode mode, VertexFormat format) { builder = new BufferBuilder(storage, mode, format); }
    public MeshData endOrDiscardIfEmpty() {
        MeshData result = builder.build();
        if (result == null) discard();
        return result;
    }
    public void discard() { if (!closed) { closed = true; storage.close(); } }
    @Override public VertexConsumer addVertex(float x, float y, float z) { builder.addVertex(x,y,z); return this; }
    @Override public VertexConsumer setColor(int r, int g, int b, int a) { builder.setColor(r,g,b,a); return this; }
    @Override public VertexConsumer setUv(float u, float v) { builder.setUv(u,v); return this; }
    @Override public VertexConsumer setUv1(int u, int v) { builder.setUv1(u,v); return this; }
    @Override public VertexConsumer setUv2(int u, int v) { builder.setUv2(u,v); return this; }
    @Override public VertexConsumer setNormal(float x, float y, float z) { builder.setNormal(x,y,z); return this; }
}