![]() |
The Cannon Lullaby Toy
Game Physics with a 2D Physics Engine
|
The cannon. More...
#include <Cannon.h>


Public Member Functions | |
| void | Initialize () |
| Set up a cannon. | |
| void | Explode () |
| Make cannon explode. | |
| void | Fire () |
| Fire the cannon. | |
| void | SetSpeed (float) |
| Set the motor speed in the wheel joints. | |
| const bool | IsDead () const |
| Whether cannon has exploded. | |
| const Vector2 | GetPos () const |
| Get cannon position. | |
Private Member Functions | |
| b2Body * | CreateBase (float, float, int) |
| Create a cannon base in Physics World. | |
| b2Body * | CreateBarrel (float, float, int) |
| Create a cannon barrel in Physics World. | |
| b2Body * | CreateWheel (float, float, int) |
| Create a cannon wheel in Physics World. | |
| void | DeliverImpulse (b2Body *, const b2Vec2 &) |
| Apply an impulse in Physics World. | |
| void | MakeCollide (b2Body *b) |
| Make cannon parts collide-able in Physics World. | |
Additional Inherited Members | |
Static Protected Attributes inherited from CCommon | |
| static b2World * | m_pPhysicsWorld = nullptr |
| Pointer to Box2D Physics World. | |
| static CBox2DRenderer * | m_pRenderer = nullptr |
| Pointer to Render World. | |
| static CObjectManager * | m_pObjectManager = nullptr |
| Pointer to the Object Manager. | |
| static Sage::CParticleEngine2D * | m_pFrontParticleEngine = nullptr |
| Pointer to front particle engine. | |
| static Sage::CParticleEngine2D * | m_pBackParticleEngine = nullptr |
| Pointer to front particle engine. | |
| static CCannon * | m_pCannon = nullptr |
| Pointer to a cannon. | |
| static Vector2 | m_vBellPos [NUMBELLS] = {Vector2(0.0f)} |
| Positions of bells. | |
| static float | m_fGravity = 20.0f |
| Magnitude of gravity in Render World units. | |
| static eDrawMode | m_eDrawMode = eDrawMode::Sprites |
| Draw mode. | |
The cannon is a composite made up of several sprites in Render World and several bodies in Physics World. It represents the player.
|
private |
| x | Cannon barrel's x coordinate in Render World. |
| y | Cannon barrel's y coordinate in Render World. |
| nIndex | Cannon barrel's collision group index. |


|
private |
| x | Cannon base's x coordinate in Render World. |
| y | Cannon base's y coordinate in Render World. |
| nIndex | Cannon base's collision group index. |


|
private |
| x | Cannon wheel's x coordinate in Render World. |
| y | Cannon wheel's y coordinate in Render World. |
| nIndex | Cannon wheel's collision group index. |


|
private |
Deliver an impulse to part of the cannon, which is made up of many bodies in Physics World.
| b | Body to apply impulse to. |
| v | Vector direction and magnitude of impulse. |

| void CCannon::Explode | ( | ) |
Make the cannon explode by destroying the joints, resetting their collision group indices so that they can collide.
smoke


| void CCannon::Fire | ( | ) |
Create cannonballs in both Render World and Physics World and send them on their way. The tune, the delay to the first note, and the time between notes are hard-coded. Apply a recoil impulse to the cannon in Physics World, stop the wheel motors, and emit a puff of smoke..


| const Vector2 CCannon::GetPos | ( | ) | const |
Reader function for the cannon's position.


| void CCannon::Initialize | ( | ) |
Create a cannon in Physics World and the Object Manager, linking the two representations together. All positions are hard-coded.


| const bool CCannon::IsDead | ( | ) | const |
Determine whether the cannon has exploded already.

|
private |
Reset the collision group index for part of cannon, which is made up of many bodies in Physics World.
| b | Body to reset collision group index of. |

| void CCannon::SetSpeed | ( | float | s | ) |
Start the cannon moving using motors in the wheels.
| s | Speed of cannon. Negative means left, positive means right. |
