Example #1
0
		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());
				}
			}
		}
Example #2
0
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();
		}
	}
}