summaryrefslogtreecommitdiff
path: root/game
diff options
context:
space:
mode:
Diffstat (limited to 'game')
-rw-r--r--game/geoData.cpp6
-rw-r--r--game/geoDataMesh.cpp4
-rw-r--r--game/geoDataMesh.h2
3 files changed, 9 insertions, 3 deletions
diff --git a/game/geoData.cpp b/game/geoData.cpp
index 6052cd1..988b11c 100644
--- a/game/geoData.cpp
+++ b/game/geoData.cpp
@@ -350,7 +350,9 @@ GeoData::setHeights(const std::span<const GlobalPosition3D> triangleStrip, const
std::ranges::for_each(newVerts, [this](auto vertex) {
addVertexForNormalUpdate(vertex);
});
+#ifndef NDEBUG
geoData->sanityCheck();
+#endif
return newVerts;
}
@@ -431,8 +433,8 @@ GeoData::setHeights(const std::span<const GlobalPosition3D> triangleStrip, const
for (const auto v : geoData->vv_range(start)) {
CLOG(geoData->point(v));
}
-#endif
geoData->sanityCheck();
+#endif
throw std::runtime_error(
std::format("Could not navigate to ({}, {}, {})", endPoint.x, endPoint.y, endPoint.z));
}
@@ -499,7 +501,9 @@ GeoData::setHeights(const std::span<const GlobalPosition3D> triangleStrip, const
addVertexForNormalUpdate(ends.first);
addVertexForNormalUpdate(ends.second);
});
+#ifndef NDEBUG
geoData->sanityCheck();
+#endif
}
std::vector<FaceHandle>
diff --git a/game/geoDataMesh.cpp b/game/geoDataMesh.cpp
index 687a025..60af061 100644
--- a/game/geoDataMesh.cpp
+++ b/game/geoDataMesh.cpp
@@ -98,16 +98,15 @@ GeoDataMesh::centre(const HalfedgeHandle heh) const
return midpoint(hehPoints.first, hehPoints.second);
}
+#ifndef NDEBUG
void
GeoDataMesh::sanityCheck(const std::source_location & loc) const
{
if (const auto upSideDown = std::ranges::count_if(faces(), [this](const auto face) {
if (!triangle<2>(face).isUp()) {
-#ifndef NDEBUG
for (const auto vertex : fv_range(face)) {
CLOG(point(vertex));
}
-#endif
return true;
}
return false;
@@ -116,6 +115,7 @@ GeoDataMesh::sanityCheck(const std::source_location & loc) const
"{} upside down faces detected - checked from {}:{}", upSideDown, loc.function_name(), loc.line()));
}
}
+#endif
bool
GeoDataMesh::canFlip(const HalfedgeHandle edge) const
diff --git a/game/geoDataMesh.h b/game/geoDataMesh.h
index 5d0bade..befe9fe 100644
--- a/game/geoDataMesh.h
+++ b/game/geoDataMesh.h
@@ -49,7 +49,9 @@ public:
[[nodiscard]] GlobalPosition3D positionAt(const PointFace &) const;
protected:
+#ifndef NDEBUG
void sanityCheck(const std::source_location & = std::source_location::current()) const;
+#endif
[[nodiscard]] bool faceContainsPoint(GlobalPosition2D, FaceHandle) const;
[[nodiscard]] HalfedgeHandle findBoundaryStart() const;