IsPassedSurface is a nuanced value with behavior affected and controlled by many circumstances and settings (see
PokeInteractable.RecoilAssistConfig or the
poke interaction documentation for details), and its changes do not always map to readily-observable values in obvious ways. This behavior is the result of intentional design choices, but it can disrupt what might otherwise seem like safe assumptions about the connection between two states: for example, there are some circumstances where
IsPassedSurface can become false while
Origin is still past the surface of the interactable. Thus, when implementing behavior that depends upon multiple seemingly related happenstances (such as
IsPassedSurface becoming true and
IInteractorView.State becoming InteractorState.Select), you should always check all relevant conditions even if they are always expected to co-occur.