ok so this is a proof of concept for a massively improved collision system I thought about, most of it is already up and running, with the exception of the slope system which Il get working soon enough (there are still bugs like clips tho) the code is better since its simpler than the previous code, and allows movement that the previous code wouldn't have, while having no bugs I left comments on the collision code so its easier to see how it works
as always thanks to @GrayDevScratch for the original explanation of the differences between the two systems: the previous system moved the entirety of the distance on the Y axis, checked for collision, then moved the entirety of the distance on the X axis, checking for collision again. this made collision tricky since there was no really way to tell at what point in the path the collision happened on, and also invalidated some diagonal movements as the only collision check (full Y axis movement, no X axis movement) could be in collision despite the start and the end not being in collision. the new system works by breaking movement up into tiny steps, and preforming a collision check after each one (with tests being used to determine the axis the collision was on), which gives us a more accurate view on where the collision exactly happened, and also doesn't invalidate the diagonal movements mentioned earlier.