void b2World::DrawParticleSystem(const b2ParticleSystem& system) { int32 particleCount = system.GetParticleCount(); if (particleCount) { float32 radius = system.GetRadius(); const b2Vec2* positionBuffer = system.GetPositionBuffer(); if (system.m_colorBuffer.data) { const b2ParticleColor* colorBuffer = system.GetColorBuffer(); m_debugDraw->DrawParticles(positionBuffer, radius, colorBuffer, particleCount); } else { m_debugDraw->DrawParticles(positionBuffer, radius, NULL, particleCount); } } }
// Create the world, ground body and the particle system. void BodyContactTests::SetUp() { // Define the gravity vector. const b2Vec2 gravity(0.0f, -10.0f); // Construct a world object, which will simulate the contacts. m_world = new b2World(gravity); // Define the ground body. b2BodyDef groundBodyDef; groundBodyDef.position.Set(0.0f, 0.0f); // Call the body factory which allocates memory for the ground body // from a pool and creates the ground box shape (also from a pool). // The body is also added to the world. m_groundBody = m_world->CreateBody(&groundBodyDef); // Create the particle system. const b2ParticleSystemDef particleSystemDef; m_particleSystem = m_world->CreateParticleSystem(&particleSystemDef); m_particleDiameter = m_particleSystem->GetRadius() * 2.0f; }