You’ve got it. This isn’t the most elegant solution, but the way the engine is made to separate polygons and collisions makes it harder to pull this off as cleanly as you’d thing. It’s why we can’t adjust collision volumes by “vertex” on the regular.
The engine does actually know when any polygons cross, but not the way you’d expect. Generally the graphical side is the only one that cares to know this natively, so you’d have to tap into that side to be able to get polygonal normals, vertex locations, and things like that.
Render core is what handles the rendering thus can tell you these bits. If you’re more comfortable with C++ you should be able to use this information, but I’ve never had the pleasure to work with it myself. I’ll get you a bit of documentation and look around for some resources that might help in that regard. Wish I was a bit more well versed on that side and I could be a bit more specific.
Hope this helps!