void encounters(const BP_Endpoint& a, const BP_Endpoint& b, BP_Scene& scene, T_Overlap overlap) { assert(a.m_proxy != b.m_proxy); if ((a.m_type != b.m_type) && overlap(*a.m_proxy, *b.m_proxy)) { if (a.m_type == BP_Endpoint::MAXIMUM) { scene.callBeginOverlap(a.m_proxy->getObject(), b.m_proxy->getObject()); } else { scene.callEndOverlap(a.m_proxy->getObject(), b.m_proxy->getObject()); } } }
void BP_EndpointList::encounters(const BP_Endpoint& a, const BP_Endpoint& b, BP_Scene& scene, T_Overlap overlap) { assert(a.getProxy() != b.getProxy()); if (a.getType() != b.getType()) { if (a.getType() == BP_Endpoint::MAXIMUM) { if (overlap(*a.getProxy(), *b.getProxy())) { scene.callBeginOverlap(a.getProxy()->getObject(), b.getProxy()->getObject()); } ++a.getCount(); ++b.getCount(); } else { if (overlap(*a.getProxy(), *b.getProxy())) { scene.callEndOverlap(a.getProxy()->getObject(), b.getProxy()->getObject()); } --a.getCount(); --b.getCount(); } } else { if (a.getType() == BP_Endpoint::MAXIMUM) { --a.getCount(); ++b.getCount(); } else { ++a.getCount(); --b.getCount(); } } }