mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 17:13:51 +00:00
fix(terrain): NaN guards on createCrater and createMesa
Same defensive pattern as createHill — NaN center/radius would short-circuit dist comparisons and apply the height delta to every vertex on every chunk. Reject upfront.
This commit is contained in:
parent
f484b742db
commit
7e48658ab1
1 changed files with 6 additions and 0 deletions
|
|
@ -826,6 +826,9 @@ void TerrainEditor::carveRiver(const glm::vec3& start, const glm::vec3& end,
|
|||
|
||||
void TerrainEditor::createCrater(const glm::vec3& center, float radius, float depth, float rimHeight) {
|
||||
if (!terrain_) return;
|
||||
if (!std::isfinite(center.x) || !std::isfinite(center.y) ||
|
||||
!std::isfinite(radius) || radius <= 0.0f ||
|
||||
!std::isfinite(depth) || !std::isfinite(rimHeight)) return;
|
||||
recordGeneratorUndo();
|
||||
|
||||
for (int ci = 0; ci < 256; ci++) {
|
||||
|
|
@ -869,6 +872,9 @@ void TerrainEditor::createCrater(const glm::vec3& center, float radius, float de
|
|||
|
||||
void TerrainEditor::createMesa(const glm::vec3& center, float radius, float height, float edgeSteepness) {
|
||||
if (!terrain_) return;
|
||||
if (!std::isfinite(center.x) || !std::isfinite(center.y) ||
|
||||
!std::isfinite(radius) || radius <= 0.0f ||
|
||||
!std::isfinite(height) || !std::isfinite(edgeSteepness)) return;
|
||||
recordGeneratorUndo();
|
||||
for (int ci = 0; ci < 256; ci++) {
|
||||
auto& chunk = terrain_->chunks[ci];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue