Noah Pilarski ced49c6606
Add a security check to ScatterBuilder (#1109)
## Security check
What currently happens is that if `preventOverlap` is not true then
there is no array of point emptied progressively and points are rolled
in a loop of size count for each prop. The problem is that the loop can
be infinite due to `i--; // Try this point again`. A reroll happens when
`height < propInfo.minHeight` or `height > propInfo.maxHeight`, height
being rolled between `heightMap.minHeight` and `heightMap.maxHeight`
(which are not the constraints above).
- This PR checks before the loop if there is less than 0.1% chance for
the upcoming heightMap rolls to be considered correct, and if not it
always skips this check, ignoring `propInfo.minHeight` and `.maxHeight`
to prevent a very long (possibly infinite) loop.
2025-08-04 19:03:44 -04:00
..
2025-04-19 14:28:41 -05:00
2025-07-08 16:14:40 -04:00