It's not that hard. I have something working that is not too bad. You don't have to be 100% precise because the most problematic cases don't occur that often and more importantly, rarely have any serious impact on the game.Ajapted wrote: And FWIW, updating all the physics code for 3D floors is definitely not a piece of cake. A lot of it relies heavily on the fact that each linedef has a single vertical gap for objects/bullets/sight to pass through.
I found that it is sufficient for both sight checking and aiming to ignore any 3D floors that obstruct only a part of the target but neither top or bottom. Just clipping the top and bottom of the given range is more than enough given Doom's engine. For shooting there is no problem at all to add this to ZDoom's trace function because you can determine precisely where a trace hits a 3D floor.
So the only thing that remains is to determine the gaps at lines in P_LineOpening. Yes, if you want to be exact it can become a nightmare but again, if you think about the engine's needs you can easily forget all the problem cases and reduce it to something manageable without rewriting the whole system. The engine just needs to know that a move is blocked. It does not need to know how precisely a 3D floor blocks it so again choosing either the gap above or below the 3D floor is fully sufficient to clip movement.
The only problem is that it requires an OpenGL renderer because I really don't want to deal with a z-buffer-less implementation...