void HelloParticlesApp::setup() { timer = new Timer(); // init physics Space* space = new Space(getWindowWidth(), getWindowHeight(), 0); printf("init space %f %f %f\n", space->getWidth(), space->getHeight(), space->getDepth()); physics = new Physics(space); Emitter* emitter = new Emitter(physics); physics->emitter = emitter; emitter->setPosition(space->getCenter()); emitter->setInterval(0.01); emitter->setRate(1000); emitter->setMax(5000); emitter->addBehaviour(new RandomEmitter(space)); physics->addBehaviour(new Gravity()); // wrap BoxWrap* wrap = new BoxWrap(*space); wrap->preserveMomentum = false; physics->addBehaviour(wrap); // attractor attractor = new AttractorPoint(space); attractor->setRange(0.25); attractor->setWeight(0); physics->addBehaviour(attractor); // init graphics gl::VboMesh::Layout layout; layout.setStaticIndices(); layout.setDynamicPositions(); layout.setStaticTexCoords2d(); vboParticles = gl::VboMesh(emitter->getMax(), 0, layout, GL_POINTS); }
// -- Init --------------------------------------------------------------------- void FlockingParticlesApp::setup() { timer = new Timer(); // init physics BasicSpace* space = new BasicSpace(Vec3f::zero(), Vec3f(getWindowWidth(), getWindowHeight(), 0)); printf("init space %f %f %f\n", space->getWidth(), space->getHeight(), space->getDepth()); physics = new Physics(space); Emitter* emitter = new Emitter(physics); physics->emitter = emitter; emitter->setPosition(space->getCenter()); emitter->setInterval(0.01); emitter->setRate(1000); emitter->setMax(1 * 1000); emitter->addBehaviour(new BoxRandom(*space)); physics->addBehaviour(new Gravity(true)); // wrap BoxWrap* wrap = new BoxWrap(*space); wrap->preserveMomentum = false; physics->addBehaviour(wrap); // attractor attractor = new AttractorPoint(space); attractor->setRange(0.25); attractor->setWeight(0); physics->addBehaviour(attractor); // flocking FlockAlign* align = new FlockAlign(space); align->setRange(0.25); physics->addBehaviour(align); FlockAttract* attract = new FlockAttract(space); attract->setRange(0.25); physics->addBehaviour(attract); FlockRepel* repel = new FlockRepel(space); repel->setRange(0.25); physics->addBehaviour(repel); // init graphics gl::VboMesh::Layout layout; layout.setStaticIndices(); layout.setDynamicPositions(); layout.setStaticTexCoords2d(); vboParticles = gl::VboMesh(emitter->getMax(), 0, layout, GL_POINTS); //testParticleCreation(); }