ConvexFeature: Fix collision list object references

Turns out ConvexFeature::collide assumes the second round of testVertex calls will only add one entry to the collision list at a time and was erroneously only changing the last object and material reference.
This commit is contained in:
vitawrap 2025-12-28 17:46:46 +01:00 committed by GitHub
parent e3df069570
commit f394db4b36
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -111,13 +111,14 @@ bool ConvexFeature::collide(ConvexFeature& cf,CollisionList* cList, F32 tol)
U32 storeCount = cList->getCount(); U32 storeCount = cList->getCount();
testVertex(*vert,cList,true, tol); testVertex(*vert,cList,true, tol);
// Fix up last reference. material and object are copied from this rather // Fix up added references. material and object are copied from this rather
// than the object we're colliding against. // than the object we're colliding against.
if (storeCount != cList->getCount()) while (storeCount < cList->getCount())
{ {
Collision &col = (*cList)[cList->getCount() - 1]; Collision &col = (*cList)[storeCount];
col.material = cf.material; col.material = cf.material;
col.object = cf.mObject; col.object = cf.mObject;
++storeCount;
} }
vert++; vert++;
} }