Players keep reporting errors that trace to the game rejecting invalid data from user-made maps. In this case, asymmetric connectivity in _Descent Vignettes_[1] level _Stalactite Volcano_ (level 15 in Descent, level 14 in Descent 2) caused an exception when trying to render part of the first big room. The debug build shipped with function `check_segment_connections` to detect some types of connectivity errors. Expose this function to release builds, and call it for user-made maps. It already checked for asymmetric segment links. Extend that to hotfix those links by breaking the asymmetric connection. Log an URGENT class message when this happens, so that users are aware that the level was modified at load. Move the `NDEBUG` guards into `check_segment_connections` so that non-debug builds check only for segment symmetry, but do not check for normals and face count errors. [1] http://www.enspiar.com/dmdb/viewMission.php?id=724 ``` sha1sum vignette.hog vignette.msn 3cd659e6dd5927b41157dfb7d1dd87d90e781f01 vignette.hog 1f7d140ffab11816364040dd6da71a1568393a16 vignette.msn stat -c '%s %Y %n' vignette.hog vignette.msn 5717889 1251643308 vignette.hog 956 1250212930 vignette.msn ``` Reported-by: MegaDescent <http://forum.dxx-rebirth.com/showthread.php?tid=970> |
||
---|---|---|
.. | ||
2d | ||
3d | ||
arch | ||
editor | ||
main | ||
misc |