int main (int argc, char *argv[]) { srand(time(NULL)); initGraphics(argc, argv); glEnable(GL_POINT_SMOOTH); Particle::startLifeSpan = 50; Particle::startColour = emitColours[0]; currentColour = Particle::startColour; Particle::initialVelocity = 20.0; Particle::terminalVelocity = 50; Particle::airResistance = 1.0; Particle::renderMode = PARTICLERENDERMODE_POINT; Particle::bounce = 0.5; ParticleEmitter::emitSpread = 1.0; ParticleSystem::perEmit = 4; Texture::load("grass.png", "grass"); Texture::load("sky.png", "sky"); Texture::load("shine.png", "shine"); glPointSize(10.0f); std::cout << glGetString(GL_RENDERER); createMoutains(&mountainY); createTrees(); initFlyBys(); // Create water sprinkler particleSystem = ParticleSystem(); particleSystem.setEmitTicks(emitFrequency); makeSprinkler(); camera = Vector3( cameraDistance * cos(cameraAngle * (M_PI / 180)), cameraElevation , cameraDistance * sin(cameraAngle * (M_PI/ 180)) ); gravitationalForce[0] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, -400.0)); gravitationalForce[1] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, -300.0)); gravitationalForce[2] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, -200.0)); gravitationalForce[3] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, -100.0)); gravitationalForce[4] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, 0.0)); gravitationalForce[5] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, 100.0)); gravitationalForce[6] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, 200.0)); gravitationalForce[7] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, 300.0)); gravitationalForce[8] = GravitationalForce(GRAVITATIONALFORCETYPE_NONE, 10.0, Vector3(100.0, -100, 400.0)); glutMainLoop(); }
void QViPhyManager::addForce(ForceEnum forceEnum) { std::shared_ptr<Force> force; switch(forceEnum) { case ForceEnum::GRAVITY: { auto GForce = std::make_shared<GravitationalForce>(GravitationalForce()); GForce->setSoftener(0.05 * 0.05); force = GForce; _simulation->addForce(force); break; } case ForceEnum::COULOMB: { auto CForce = std::make_shared<ColoumbForce>(ColoumbForce()); CForce->setSoftener(0.05 * 0.05); force = CForce; _simulation->addForce(force); break; } } }