Exemple #1
0
static int FindVertsFallback(Arbiter &output_arb, SimBody *poly1, SimBody *poly2, const float2 n, const float dist)
{
	int num = 0;
	Arbiter &arb = output_arb;

	for(unsigned int i=0; i<poly1->vertices.size(); i++)
	{
		float2 v = poly1->transformedVertices[i];
		if(PolyShapeContainsVertPartial(poly2, v, n.negate()))
		{
			arb.AddContact(InitContactPoint(v, n, dist, HASH_PAIR(poly1->hashid, i)));
		}
	}

	for(unsigned int i=0; i<poly2->vertices.size(); i++)
	{
		float2 v = poly2->transformedVertices[i];
		if(PolyShapeContainsVertPartial(poly1, v, n))
		{
			arb.AddContact(InitContactPoint(v, n, dist, HASH_PAIR(poly2->hashid, i)));
		}
	}

	num = arb.numContacts;
	
	return num;
}