Courier transformed

- SimpleQuadMesh holds a reference to its backing MemoryBlock so the
  cleaner doesn't drop it
- Fixes issue where meshes suddenly start rendering garbage
This commit is contained in:
Jozufozu 2024-07-27 18:00:44 -07:00
parent 69411fb36f
commit fe89e0024a
3 changed files with 9 additions and 5 deletions

View file

@ -6,21 +6,25 @@ import org.joml.Vector4fc;
import dev.engine_room.flywheel.api.vertex.MutableVertexList;
import dev.engine_room.flywheel.api.vertex.VertexList;
import dev.engine_room.flywheel.lib.memory.MemoryBlock;
public final class SimpleQuadMesh implements QuadMesh {
private final VertexList vertexList;
// Unused but we need to hold on to a reference so the cleaner doesn't nuke us.
private final MemoryBlock data;
private final Vector4f boundingSphere;
@Nullable
private final String descriptor;
public SimpleQuadMesh(VertexList vertexList, @Nullable String descriptor) {
public SimpleQuadMesh(VertexList vertexList, MemoryBlock data, @Nullable String descriptor) {
this.vertexList = vertexList;
this.data = data;
boundingSphere = ModelUtil.computeBoundingSphere(vertexList);
this.descriptor = descriptor;
}
public SimpleQuadMesh(VertexList vertexList) {
this(vertexList, null);
public SimpleQuadMesh(VertexList vertexList, MemoryBlock data) {
this(vertexList, data, null);
}
@Override

View file

@ -42,6 +42,6 @@ final class MeshHelper {
vertexView.ptr(dstPtr);
vertexView.vertexCount(vertexCount);
return new SimpleQuadMesh(vertexView, meshDescriptor);
return new SimpleQuadMesh(vertexView, dst, meshDescriptor);
}
}

View file

@ -37,7 +37,7 @@ public final class ModelPartConverter {
VertexView vertexView = new PosTexNormalVertexView();
vertexView.load(data);
return new SimpleQuadMesh(vertexView, "source=ModelPartConverter");
return new SimpleQuadMesh(vertexView, data, "source=ModelPartConverter");
}
public static Mesh convert(ModelLayerLocation layer, @Nullable TextureAtlasSprite sprite, String... childPath) {