KDvoid ColliderDetector::setCPBody ( cpBody* pBody ) { m_pCPBody = pBody; for(auto object : *m_pColliderBodyList) { ColliderBody *colliderBody = (ColliderBody *)object; ContourData *contourData = colliderBody->getContourData(); int num = contourData->m_tVertexList.count(); ContourVertex2 **vs = (ContourVertex2 **)contourData->m_tVertexList.data->arr; cpVect *verts = new cpVect[num]; for (int i = 0; i < num; i++) { verts[num - 1 - i].x = vs[i]->x; verts[num - 1 - i].y = vs[i]->y; } cpShape *shape = cpPolyShapeNew(m_pCPBody, num, verts, cpvzero); shape->sensor = true; shape->data = m_pBone; if ( m_bActive ) { cpSpaceAddShape(m_pCPBody->space, shape); } colliderBody->setShape(shape); colliderBody->getColliderFilter()->updateCPShape(shape); delete [] verts; } }
void ColliderDetector::setBody(cpBody *pBody) { _body = pBody; for(auto& object : _colliderBodyList) { ColliderBody *colliderBody = (ColliderBody *)object; ContourData *contourData = colliderBody->getContourData(); ssize_t num = contourData->vertexList.size(); auto vs = contourData->vertexList; cpVect *verts = new cpVect[num]; for (int i = 0; i < num; i++) { verts[num - 1 - i].x = vs.at(i).x; verts[num - 1 - i].y = vs.at(i).y; } cpShape *shape = cpPolyShapeNew(_body, (int)num, verts, cpvzero); shape->sensor = true; shape->data = _bone; if (_active) { cpSpaceAddShape(_body->space_private, shape); } colliderBody->setShape(shape); colliderBody->getColliderFilter()->updateShape(shape); delete []verts; } }