static bool IsObjectVertexCollidingPoly(PHYSICS_BOX_DATA * pbox, const EERIEPOLY & ep) { Vec3f pol[3]; pol[0] = ep.v[0].p; pol[1] = ep.v[1].p; pol[2] = ep.v[2].p; if(ep.type & POLY_QUAD) { if(IsObjectVertexCollidingTriangle(pbox, pol)) { return true; } pol[1] = ep.v[2].p; pol[2] = ep.v[3].p; if(IsObjectVertexCollidingTriangle(pbox, pol)) { return true; } return false; } if(IsObjectVertexCollidingTriangle(pbox, pol)) { return true; } return false; }
//************************************************************************************* //************************************************************************************* BOOL IsObjectVertexCollidingPoly(EERIE_3DOBJ * obj, EERIEPOLY * ep, long k, long * validd) { EERIE_3D pol[3]; Vector_Copy(&pol[0], (EERIE_3D *)&ep->v[0]); Vector_Copy(&pol[1], (EERIE_3D *)&ep->v[1]); Vector_Copy(&pol[2], (EERIE_3D *)&ep->v[2]); float mul = 1.3f; pol[0].x = (pol[0].x - ep->center.x) * mul + ep->center.x; pol[0].y = (pol[0].y - ep->center.y) * mul + ep->center.y; pol[0].z = (pol[0].z - ep->center.z) * mul + ep->center.z; if (ep->type & POLY_QUAD) { if (IsObjectVertexCollidingTriangle(obj, (EERIE_3D *)&pol, k, validd)) return TRUE; Vector_Copy(&pol[0], (EERIE_3D *)&ep->v[2]); Vector_Copy(&pol[1], (EERIE_3D *)&ep->v[3]); Vector_Copy(&pol[2], (EERIE_3D *)&ep->v[0]); if (IsObjectVertexCollidingTriangle(obj, (EERIE_3D *)&pol, k, validd)) return TRUE; return FALSE; } if (IsObjectVertexCollidingTriangle(obj, (EERIE_3D *)&pol, k, validd)) return TRUE; return FALSE; }