this is the second pass of collision, I had to rewrite everything since I didn't like how it ended up in the first iteration.
we can't use godot's native collision because our game simulation doesn't run in godot.
man I sure do love deleting and rewriting my own code multiple times over z.z