in createSpace:
Code: Select all
cpSpaceAddCollisionHandler(space, kCollisionTypeA, kCollisionTypeB, (cpCollisionBeginFunc)begin, NULL, NULL, NULL, NULL);
Code: Select all
static void
postStepRemove(cpSpace *space, cpShape *shape, void *unused)
{
cpSpaceRemoveBody(space, shape->body);
cpBodyFree(shape->body);
cpSpaceRemoveShape(space, shape);
cpShapeFree(shape);
}
static cpBool begin(cpArbiter *arb, cpSpace *space, void *ignore){
CP_ARBITER_GET_SHAPES(arb, aShape, bShape);
cpSpaceAddPostStepCallback(space, (cpPostStepFunc)postStepRemove, bShape, NULL);
return cpTrue;
}
Code: Select all
// TO BE IGNORED
cpSpaceAddCollisionHandler(space, kCollisionTypeC, kCollisionTypeD, begin, NULL, NULL, NULL, NULL);
// TO BE postStepRemove like A-B
cpSpaceAddCollisionHandler(space, kCollisionTypeE, kCollisionTypeA, begin, NULL, NULL, NULL, NULL);