Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <Box2D/Dynamics/Contacts/b2PolygonContact.h>
00020 #include <Box2D/Common/b2BlockAllocator.h>
00021 #include <Box2D/Collision/b2TimeOfImpact.h>
00022 #include <Box2D/Dynamics/b2Body.h>
00023 #include <Box2D/Dynamics/b2Fixture.h>
00024 #include <Box2D/Dynamics/b2WorldCallbacks.h>
00025
00026 #include <new>
00027
00028 b2Contact* b2PolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
00029 {
00030 void* mem = allocator->Allocate(sizeof(b2PolygonContact));
00031 return new (mem) b2PolygonContact(fixtureA, fixtureB);
00032 }
00033
00034 void b2PolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
00035 {
00036 ((b2PolygonContact*)contact)->~b2PolygonContact();
00037 allocator->Free(contact, sizeof(b2PolygonContact));
00038 }
00039
00040 b2PolygonContact::b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
00041 : b2Contact(fixtureA, 0, fixtureB, 0)
00042 {
00043 b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon);
00044 b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon);
00045 }
00046
00047 void b2PolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
00048 {
00049 b2CollidePolygons( manifold,
00050 (b2PolygonShape*)m_fixtureA->GetShape(), xfA,
00051 (b2PolygonShape*)m_fixtureB->GetShape(), xfB);
00052 }