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/b2EdgeAndPolygonContact.h>
00020 #include <Box2D/Common/b2BlockAllocator.h>
00021 #include <Box2D/Dynamics/b2Fixture.h>
00022
00023 #include <new>
00024
00025 b2Contact* b2EdgeAndPolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator)
00026 {
00027 void* mem = allocator->Allocate(sizeof(b2EdgeAndPolygonContact));
00028 return new (mem) b2EdgeAndPolygonContact(fixtureA, fixtureB);
00029 }
00030
00031 void b2EdgeAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator)
00032 {
00033 ((b2EdgeAndPolygonContact*)contact)->~b2EdgeAndPolygonContact();
00034 allocator->Free(contact, sizeof(b2EdgeAndPolygonContact));
00035 }
00036
00037 b2EdgeAndPolygonContact::b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB)
00038 : b2Contact(fixtureA, 0, fixtureB, 0)
00039 {
00040 b2Assert(m_fixtureA->GetType() == b2Shape::e_edge);
00041 b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon);
00042 }
00043
00044 void b2EdgeAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB)
00045 {
00046 b2CollideEdgeAndPolygon( manifold,
00047 (b2EdgeShape*)m_fixtureA->GetShape(), xfA,
00048 (b2PolygonShape*)m_fixtureB->GetShape(), xfB);
00049 }