Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "Box2D.h"
- #import <vector>
- #import <algorithm>
- struct MyContact
- {
- b2Fixture *fixtureA;
- b2Fixture *fixtureB;
- bool operator==(const MyContact& other) const
- {
- return (fixtureA == other.fixtureA) && (fixtureB == other.fixtureB);
- }
- };
- class MyContactListener : public b2ContactListener
- {
- public:
- std::vector<MyContact>_contacts;
- MyContactListener();
- ~MyContactListener();
- virtual void BeginContact(b2Contact* contact);
- virtual void EndContact(b2Contact* contact);
- virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold);
- virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse);
- };
- ///////////////////////////////
- #import "MyContactListener.h"
- MyContactListener::MyContactListener() : _contacts()
- {
- }
- MyContactListener::~MyContactListener()
- {
- }
- void MyContactListener::BeginContact(b2Contact* contact)
- {
- // We need to copy out the data because the b2Contact passed in
- // is reused.
- MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
- _contacts.push_back(myContact);
- }
- void MYContactListener::EndContact(b2Contact* contact)
- {
- MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
- std::vector<MyContact>::iterator pos;
- pos = std::find(_contacts.begin(), _contacts.end(), myContact);
- if (pos != _contacts.end())
- {
- _contacts.erase(pos);
- }
- }
- void MyContactListener::PreSolve(b2Contact* contact, const b2Manifold* oldManifold)
- {
- }
- void MyContactListener::PostSolve(b2Contact* contact, const b2ContactImpulse* impulse)
- {
- }
Add Comment
Please, Sign In to add comment