I'm trying to maintain the set of contact points that a rigidbody has with any objects in the game (in order to exert some custom forces on them in FixedUpdate), however I cannot understand the relationship between OnCollisionEnter and OnCollisionExit events. My rigidbody has multiple colliders and debugging the Collisions I get to enter and exit events, I don't see a one-to-one correspondence (i.e. there is not an Exit for every Enter, neither for every ContactPoint nor for every thisCollider).
The documentation seems extremely terse and gives no precise information about what events will be sent for any sequence of collision events.
Is there better documentation beyond the statement that the contact points are "The contact points generated by the physics engine"?
Ultimately I need, in FixedUpdate to be able to consider all the current contact points between my rigidbody and other rigidbodies and static colliders in the game (I'll actually try to push heavy calculation to the enter and exit events of course).
Note that I do not want to use OnCollisionStay as that doesn't get sent with sleeping rigidbodies, and I don't want to be doing all the calculation every frame, only when contact points change.