diff --git a/src/modules/voxel/SurfaceExtractor.cpp b/src/modules/voxel/SurfaceExtractor.cpp index e6d3a1c9f8..c49ff2e105 100644 --- a/src/modules/voxel/SurfaceExtractor.cpp +++ b/src/modules/voxel/SurfaceExtractor.cpp @@ -13,17 +13,18 @@ namespace voxel { SurfaceExtractionContext buildCubicContext(const RawVolume *volume, const Region ®ion, ChunkMesh &mesh, const glm::ivec3 &translate, bool mergeQuads, bool reuseVertices, bool ambientOcclusion) { - return SurfaceExtractionContext(volume, getPalette(), region, mesh, translate, false, mergeQuads, reuseVertices, - ambientOcclusion); + return SurfaceExtractionContext(volume, getPalette(), region, mesh, translate, SurfaceExtractionType::Cubic, + mergeQuads, reuseVertices, ambientOcclusion); } SurfaceExtractionContext buildMarchingCubesContext(const RawVolume *volume, const Region ®ion, ChunkMesh &mesh, const palette::Palette &palette) { - return SurfaceExtractionContext(volume, palette, region, mesh, glm::ivec3(0), true, false, false, false); + return SurfaceExtractionContext(volume, palette, region, mesh, glm::ivec3(0), SurfaceExtractionType::MarchingCubes, + false, false, false); } void extractSurface(SurfaceExtractionContext &ctx) { - if (ctx.marchingCubes) { + if (ctx.type == SurfaceExtractionType::MarchingCubes) { voxel::Region extractRegion = ctx.region; extractRegion.shrink(-1); voxel::extractMarchingCubesMesh(ctx.volume, ctx.palette, extractRegion, &ctx.mesh); diff --git a/src/modules/voxel/SurfaceExtractor.h b/src/modules/voxel/SurfaceExtractor.h index 030a7c781d..e1b1de4cf6 100644 --- a/src/modules/voxel/SurfaceExtractor.h +++ b/src/modules/voxel/SurfaceExtractor.h @@ -14,20 +14,21 @@ class RawVolume; class Region; struct ChunkMesh; +enum class SurfaceExtractionType { Cubic, MarchingCubes, Max }; + struct SurfaceExtractionContext { SurfaceExtractionContext(const RawVolume *_volume, const palette::Palette &_palette, const Region &_region, - ChunkMesh &_mesh, const glm::ivec3 &_translate, bool _marchingCubes, bool _mergeQuads, - bool _reuseVertices, bool _ambientOcclusion) - : volume(_volume), palette(_palette), region(_region), mesh(_mesh), translate(_translate), - marchingCubes(_marchingCubes), mergeQuads(_mergeQuads), reuseVertices(_reuseVertices), - ambientOcclusion(_ambientOcclusion) { + ChunkMesh &_mesh, const glm::ivec3 &_translate, SurfaceExtractionType _type, + bool _mergeQuads, bool _reuseVertices, bool _ambientOcclusion) + : volume(_volume), palette(_palette), region(_region), mesh(_mesh), translate(_translate), type(_type), + mergeQuads(_mergeQuads), reuseVertices(_reuseVertices), ambientOcclusion(_ambientOcclusion) { } const RawVolume *volume; const palette::Palette &palette; const Region ®ion; ChunkMesh &mesh; const glm::ivec3 translate; - const bool marchingCubes; + const SurfaceExtractionType type; const bool mergeQuads; const bool reuseVertices; const bool ambientOcclusion;