public virtual void Dispose() { if (!CleanedUp) { CleanedUp = true; if (Mesh != null) { Mesh.Dispose(); } if (meshBuilder != null) { meshBuilder.Clear(); } if (AlphaMesh != null) { AlphaMesh.Dispose(); } if (alphaBuilder != null) { alphaBuilder.Clear(); } Blocks = null; } else { throw new InvalidOperationException("VoxelObject already cleaned up!"); } }
public virtual void CreateOrUpdateMesh(BufferUsageHint bufferUsage) { if (AlphaMesh != null || alphaBuilder.Colors.Count > 0) { if (AlphaMesh == null) { AlphaMesh = new VoxelMesh(bufferUsage, alphaBuilder); } else { AlphaMesh.Update(alphaBuilder); } alphaBuilder.Clear(); } if (Mesh == null) { Mesh = new VoxelMesh(bufferUsage, meshBuilder); } else { Mesh.Update(meshBuilder); } meshBuilder.Clear(); }