xxxxxxxxxx
88
var start_vec;
var new_particle;
var inscreen = false;
var sound;
const particles = new ParticleSystem();
function preload() {
let file = loadSound('explosion-small.wav');
sound = () => {
if(getAudioContext().state !== 'running') return;
file.play(-0.5, 1.45);
}
}
function setup() {
const can = createCanvas(700, 700);
colorMode(HSB, 360, 100, 100);
can.mouseOver( () => inscreen = true );
can.mouseOut( () => inscreen = false );
vel = p5.Vector.fromAngle(random(-PI,PI)).setMag(random(64,128))
particles.add(new Circle(width/2, height/2, vel, random(25, 45), random(0,360)))
btn3 = createButton('Audio: '+(getAudioContext().state == 'running' ? 'ON':'OFF'));
btn3.parent('#div1')
btn3.mouseClicked( () => {
if (getAudioContext().state !== 'running'){
getAudioContext().resume();
btn3.html('Audio: ON');
}else {
getAudioContext().suspend();
btn3.html('Audio: OFF');
}
});
div2 = createDiv('s');
div2.parent('#div1')
div = createDiv('Credits: '+
'<a href="https://freesound.org/people/ReadeOnly/sounds/186955/"> Freesounds.org </a>');
div.parent('#div1')
frameRate(60);
}
function mousePressed () {
if(!inscreen) return;
start_vec = createVector(mouseX, mouseY);
new_particle = new Circle(mouseX, mouseY, createVector(0, 0),
random(15,45), random(0,360));
}
function mouseReleased () {
if(!new_particle) return;
// calculate velocity vector
end_vec = createVector(mouseX, mouseY);
new_particle.vel = end_vec.sub(start_vec).mult(0.05);
// create standart velocity vector when too small
if(new_particle.vel.mag() < 0.1)
new_particle.vel = createVector(0, random(2, 4))
// add particle to system
particles.add(new_particle);
new_particle = null;
}
function draw() {
background(0, 0, 0, 0.25);
if(new_particle){
new_particle.x = mouseX;
new_particle.y = mouseY;
new_particle.show();
}
particles.render();
div2.html('ParticleCount: '+ particles.particleCount)
}