I wrote a BSP tree generation that takes a level mesh (basically a few thousand triangles), and creates a BSP tree. The generation seems to work, but when I traverse the tree, some splitting planes are placed such that I cannot collide with certain faces unless I'm literally inside those faces.
This means that there are some faces which are effectively collision-proof. How should I properly structure my tree generation/traversal for collisions? For reference, I have a position and I would like to get all leaf nodes I could possibly collide with.
Some images below show my problem more clearly, red faces are the ones currently in my players partition.
Rightmost wall is the one I am attempting to collide with. It is not colored red, so it is not being detected for collision, and I can go straight through.
It's a small bit difficult to see, but when I'm inside the face it does color red, so when I am in the face (or extremely close) it does register me in the face's partition.
Viewed from above (same partition as above image, from a spectating camera) to show the faces highlighted. Excuse the small bit of Z-fighting.


