bool World::makeCollision(const b2Fixture& fix, Collision& c) const { if (!mBounds) return false; if (fix.GetBody() != mBounds) return false; if (fix.GetUserData() == BOUNDS_LEFT_PTR) c.setToWorldBounds(Collision::LEFT); else if (fix.GetUserData() == BOUNDS_TOP_PTR) c.setToWorldBounds(Collision::TOP); else if (fix.GetUserData() == BOUNDS_RIGHT_PTR) c.setToWorldBounds(Collision::RIGHT); else if (fix.GetUserData() == BOUNDS_BOTTOM_PTR) c.setToWorldBounds(Collision::BOTTOM); else return false; return true; }
float2 Pos() { return B2ToFloat2(fixture->GetBody()->GetPosition()); }
~PhysicsObject() { auto body = fixture->GetBody(); body->DestroyFixture(fixture); if (!body->GetFixtureList()) world->DestroyBody(body); if (particle_contacts) delete particle_contacts; }