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