编辑骨骼动画的时候,可以编辑碰撞区域。
通过setBody函数创建了shape并且添加到了body上面去
这个shape会不会去碰撞检测。
如果有 回调怎么添
求大神解脱我
void Armature::setBody(cpBody *body)
{
if (_body == body)
{
return;
}
_body = body;
_body->data = this;
for (const auto& object : _children)
{
if (Bone *bone = dynamic_cast<Bone *>(object))
{
auto displayList = bone->getDisplayManager()->getDecorativeDisplayList();
for (const auto& displayObject : displayList)
{
auto detector = displayObject->getColliderDetector();
if (detector != nullptr)
{
detector->setBody(body);
}
}
}
}
}
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;
for (int i = 0; i < num; i++)
{
verts.x = vs.at(i).x;
verts.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;
}
}
