| 537 | } |
| 538 | |
| 539 | void Space::addCollisionHandler( const CollisionHandler& handler ) { |
| 540 | cpHashValue hash = CP_HASH_PAIR( handler.a, handler.b ); |
| 541 | |
| 542 | cpCollisionBeginFunc f1 = ( handler.begin ) ? &RecieverCollisionBeginFunc : NULL; |
| 543 | cpCollisionPreSolveFunc f2 = ( handler.preSolve ) ? &RecieverCollisionPreSolveFunc : NULL; |
| 544 | cpCollisionPostSolveFunc f3 = ( handler.postSolve ) ? &RecieverCollisionPostSolve : NULL; |
| 545 | cpCollisionSeparateFunc f4 = ( handler.separate ) ? &RecieverCollisionSeparateFunc : NULL; |
| 546 | |
| 547 | cpSpaceAddCollisionHandler( mSpace, handler.a, handler.b, f1, f2, f3, f4, (void*)hash ); |
| 548 | |
| 549 | mCollisions.erase( hash ); |
| 550 | mCollisions[hash] = handler; |
| 551 | } |
| 552 | |
| 553 | void Space::removeCollisionHandler( cpCollisionType a, cpCollisionType b ) { |
| 554 | cpSpaceRemoveCollisionHandler( mSpace, a, b ); |