[Fixed] Bad clipping after LevelCompatibility.SetVertex

Bugs that have been investigated and resolved somehow.

Moderator: GZDoom Developers

Bad clipping after LevelCompatibility.SetVertex

Postby gramps » Tue Jan 15, 2019 9:33 pm

Here's a quick test that rotates doom2 map01's vertices 180 degrees around 0,0.

Code: Select allExpand view
version "3.8"

class SetVertexTest : LevelCompatibility
   protected void Apply(Name checksum)
      // The map's checksum.
      '3C9902E376CCA1E9C3BE8763BDC21DF5'; // DOOM2.WAD map01
      // rotate entire map 180 deg. around 0,0
      for (int i = 0; i < level.vertexes.size(); i++) {
         let p = level.vertexes[i].p;
         setVertex(i, -p.x, -p.y);

Things aren't moved, but you'll still spawn on the map. The map will look fine, but wall clipping is screwed up, like it's trying to clip against the old map geometry.

Does something get pre-computed before LevelCompatibility runs and not updated afterward?

(This is tested in a recent DRD build that works for me, gzdoom-x64-g3.8pre-62-g23146f1af.7z... nightlies from the past day or two don't seem to be working right now).
Joined: 18 Oct 2018

Re: Bad clipping after LevelCompatibility.SetVertex

Postby Graf Zahl » Wed Jan 16, 2019 2:42 am

The compatibility handler was never made to alter a level in this way. It has to recalculate the line delta if vertexes get moved around.
User avatar
Graf Zahl
Lead GZDoom Developer
Lead GZDoom Developer
Joined: 19 Jul 2003
Location: Germany

Re: Bad clipping after LevelCompatibility.SetVertex

Postby gramps » Wed Jan 16, 2019 3:29 am

Awesome, thank you for fixing this! I thought it might be those deltas.

I know LevelCompatibility was never meant for this, but hooking into level init is really super useful for doing some mapping stuff programmatically, like setting up static portals -- just rotating some vertices and using static portals avoids a huge pile of other hacks needed to get much use out of regular portals.
Joined: 18 Oct 2018

Return to Closed Bugs

Who is online

Users browsing this forum: DotBot and 3 guests