void OnMouseUp(thor::ActionContext<std::string> context) { emitter.setParticlePosition(window.mapPixelToCoords(sf::Mouse::getPosition(window))); if (selected_rune == 1) { // Build color gradient thor::ColorGradient gradient; gradient[0.f] = sf::Color::Yellow; gradient[0.5f] = sf::Color::Red; gradient[1.f] = sf::Color::Black; // Create color and fade in/out animations thor::ColorAnimation colorizer(gradient); thor::FadeAnimation fader(0.1f, 0.1f); particle_system.clearAffectors(); // Add particle affectors particle_system.addAffector(thor::AnimationAffector(colorizer)); particle_system.addAffector(thor::AnimationAffector(fader)); particle_system.addAffector(thor::TorqueAffector(100.f)); emitter.setParticlePosition(window.mapPixelToCoords(sf::Mouse::getPosition(window))); emitter.setParticleVelocity(thor::Distributions::circle(sf::Vector2f(0.0f, 0.0f), 100.f)); emitter.setEmissionRate(50.0f); particle_system.addEmitter(thor::refEmitter(emitter), sf::seconds(0.35f)); } else if (selected_rune == 2) { // Build color gradient thor::ColorGradient gradient; gradient[0.f] = sf::Color::Blue; gradient[0.5f] = sf::Color::Black; gradient[1.f] = sf::Color::Black; // Create color and fade in/out animations thor::ColorAnimation colorizer(gradient); thor::FadeAnimation fader(0.1f, 0.1f); particle_system.clearAffectors(); // Add particle affectors particle_system.addAffector(thor::AnimationAffector(colorizer)); particle_system.addAffector(thor::AnimationAffector(fader)); particle_system.addAffector(thor::TorqueAffector(100.f)); emitter.setParticlePosition(window.mapPixelToCoords(sf::Mouse::getPosition(window))); emitter.setParticleVelocity(thor::Distributions::deflect(sf::Vector2f(0.0f, -100.0f), 90.0f)); emitter.setEmissionRate(100.0f); particle_system.addEmitter(thor::refEmitter(emitter), sf::seconds(0.35f)); } else if (selected_rune == 3) { // Build color gradient thor::ColorGradient gradient; gradient[0.f] = sf::Color::Green; gradient[0.5f] = sf::Color::Cyan; gradient[1.f] = sf::Color::Black; // Create color and fade in/out animations thor::ColorAnimation colorizer(gradient); thor::FadeAnimation fader(0.1f, 0.1f); particle_system.clearAffectors(); // Add particle affectors particle_system.addAffector(thor::AnimationAffector(colorizer)); particle_system.addAffector(thor::AnimationAffector(fader)); particle_system.addAffector(thor::TorqueAffector(100.f)); emitter.setParticlePosition(window.mapPixelToCoords(sf::Mouse::getPosition(window))); emitter.setParticleVelocity(thor::Distributions::rect(sf::Vector2f(0.0f, 0.0f), sf::Vector2f(100.0f, 100.0f))); emitter.setEmissionRate(150.0f); particle_system.addEmitter(thor::refEmitter(emitter), sf::seconds(2.0f)); } else if (selected_rune == 4) { // Build color gradient thor::ColorGradient gradient; gradient[0.f] = sf::Color::Magenta; gradient[0.5f] = sf::Color::Green; gradient[1.f] = sf::Color::Black; // Create color and fade in/out animations thor::ColorAnimation colorizer(gradient); thor::FadeAnimation fader(0.1f, 0.1f); particle_system.clearAffectors(); // Add particle affectors particle_system.addAffector(thor::AnimationAffector(colorizer)); particle_system.addAffector(thor::AnimationAffector(fader)); particle_system.addAffector(thor::TorqueAffector(100.f)); emitter.setParticleVelocity(thor::Distributions::circle(sf::Vector2f(0.0f, 0.0f), 250.0f)); emitter.setEmissionRate(500.0f); particle_system.addEmitter(thor::refEmitter(emitter), sf::seconds(1.0f)); } }