Box2D Cannon Game With Stars
Ian Parberry's "Introduction to Game Physics"
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CMyListener Class Reference

My contact listener. More...

#include <ContactListener.h>

Inheritance diagram for CMyListener:
CCommon

Public Member Functions

void PreSolve (b2Contact *, const b2Manifold *)
 Presolve function. More...
 

Private Member Functions

UINT Count (eSprite)
 Count number of bodies that have sprite type t. More...
 
float GetSpeed (const b2Vec2 &)
 Get the collision speed. More...
 

Private Attributes

b2Body * m_pBodyA = nullptr
 Pointer to body A.
 
b2Body * m_pBodyB = nullptr
 Pointer to body B.
 

Additional Inherited Members

- Static Protected Attributes inherited from CCommon
static b2World * m_pPhysicsWorld = nullptr
 Pointer to Box2D Physics World.
 
static CRendererm_pRenderer = nullptr
 Pointer to Render World.
 
static CObjectManagerm_pObjectManager = nullptr
 Pointer to object manager.

 
static LParticleEngine2D * m_pParticleEngine = nullptr
 Pointer to particle engine.
 
static bool m_bEasterEgg = false
 Easter egg!
 

Detailed Description

My contact listener.

Member Function Documentation

◆ Count()

UINT CMyListener::Count ( eSprite  t)
private

Count number of bodies that have sprite type t.

Count the number of bodies out of *m_pBodyA and *m_pBodyB that have objects have a given sprite type. Returns 0, 1, or 2, of course.

Parameters
tSprite Type.
Returns
Number of *m_pBodyA and *m_pBodyB that have type t.

◆ GetSpeed()

float CMyListener::GetSpeed ( const b2Vec2 &  p)
private

Get the collision speed.

Collision speed is proportional to the magnitude of the relative velocity.

Parameters
pWorld point.
Returns
Collision speed in Physics World units.

◆ PreSolve()

void CMyListener::PreSolve ( b2Contact *  c,
const b2Manifold *  m 
)

Presolve function.

New Presolve function that renders a colored star at each contact point and plays the appropriate sound, depending on what type of objects are contacting. Box2D will run this before performing relaxation.

Parameters
cPointer to the contact.
mPointer to the old contact manifold as it was before this contact.