run((time, ftime, space, form) => {
let world = space._world;
if (!world) {
world = new pts.World(space.innerBound, 1, 0);
const ptsArr = pts.Create.distributeRandom(space.innerBound, 50);
ptsArr.forEach((p, i) => {
const part = new pts.Particle(p)
.size(i === 0 ? 30 : 3 + (Math.random() * space.size.x) / 30)
.hit(pts.Num.randomRange(-50, 50), pts.Num.randomRange(-25, 25));
world.add(part);
});
world.particle(0).lock = true;
space._world = world;
}
world.drawParticles((p, i) => {
const color =
i === 0 ? "#fff" : ["#ff2d5d", "#42dc8e", "#2e43eb", "#ffe359"][i % 4];
form.fillOnly(color).point(p, p.radius, "circle");
});
world.update(ftime);
world.particle(0).position = space.pointer.clone();
})