EDuke32 merge requestshttps://voidpoint.io/terminx/eduke32/-/merge_requests2023-05-21T13:03:06-07:00https://voidpoint.io/terminx/eduke32/-/merge_requests/250Duke3D: Fix flicker in automatic view angle2023-05-21T13:03:06-07:00Ricardo GarciaDuke3D: Fix flicker in automatic view angleThis MR fixes two small issues when an automatic view angle is
calculated, typically when going up or down a slope.
* Sometimes the game calculates an excessive slope difference between
the current view angle and the slope angle, lead...This MR fixes two small issues when an automatic view angle is
calculated, typically when going up or down a slope.
* Sometimes the game calculates an excessive slope difference between
the current view angle and the slope angle, leading to a vertical
flicker in the image momentarily. This is specially noticeable in
E1L6, for example, when going up the slope to the force field control
tower, which uses horizontal sprites to cover gaps.
* To make movement smoother, apply a small delay (100ms) when starting
to adjust the view angle automatically.
Fixes #265
Video showcasing the issue: https://rg3.name/pub/duke3d-slope-flicker/slope-flicker.mkv
After applying this fix: https://rg3.name/pub/duke3d-slope-flicker/slope-flicker-fixed.mkvhttps://voidpoint.io/terminx/eduke32/-/merge_requests/243Duke3D: Fix player Z interpolation on SE17.2023-05-27T18:24:35-07:00Mitchell RichtersDuke3D: Fix player Z interpolation on SE17.* In SE17's first loop, the player's position is unconditionally backed up. This means jumping in the elevator, even while its not in motion is uninterpolated for the player.
* Removing these interpolation calls fixes that, however there...* In SE17's first loop, the player's position is unconditionally backed up. This means jumping in the elevator, even while its not in motion is uninterpolated for the player.
* Removing these interpolation calls fixes that, however there is a hitch now when the elevator is going back down.
* If the sign of `q` is positive, we back up the player's Z coordinate to fix the aforementioned hitch.
* Also remove `actor[j].bpos.z = sprite[j].z;` call that's covered `G_RecordOldSpritePos()`.