I think I managed to solve one of the two rotation problems. The problem seemed to be with how I set the normal that was used to change the velocity. Which is what I observed, since the normal was in the wrong direction. Though it was only when hitting certain tiles in a certain way. This turned out to be a specific case where the
tFirst was being set to 0.
tFirst is the first possible moment that the entity hits a tile.
So when multiple axis or tiles returned a tFirst of 0 I simply picked the wrong axis.
The solution is to still calculate the tFirst, but it would be negative now. As the collision has already happened and therefore the tFirst should be 0. But using the negative and correct value of tFirst to determine which axis to use for the collision, solved the problem.
Next up is to figure out what I need to do to have continuous rotation working. It seemed to immediately work a lot better already. Though I think the axis code is still not completely correct. But I also do not trust the rotation checking. It’s seems to be a bit unreliable. I am happy though that I can move a bit forward again 🙂