UNPKG

1.58 kBJavaScriptView Raw
1import { getRangeValue } from "../../Utils";
2function updateWobble(particle, delta) {
3 var _a;
4 const wobble = particle.options.wobble;
5 if (!wobble.enable || !particle.wobble) {
6 return;
7 }
8 const speed = particle.wobble.speed * delta.factor;
9 const distance = (((_a = particle.retina.wobbleDistance) !== null && _a !== void 0 ? _a : 0) * delta.factor) / (1000 / 60);
10 const max = 2 * Math.PI;
11 particle.wobble.angle += speed;
12 if (particle.wobble.angle > max) {
13 particle.wobble.angle -= max;
14 }
15 particle.position.x += distance * Math.cos(particle.wobble.angle);
16 particle.position.y += distance * Math.abs(Math.sin(particle.wobble.angle));
17}
18export class WobbleUpdater {
19 constructor(container) {
20 this.container = container;
21 }
22 init(particle) {
23 const wobbleOpt = particle.options.wobble;
24 if (wobbleOpt.enable) {
25 particle.wobble = {
26 angle: Math.random() * Math.PI * 2,
27 speed: getRangeValue(wobbleOpt.speed) / 360,
28 };
29 }
30 else {
31 particle.wobble = {
32 angle: 0,
33 speed: 0,
34 };
35 }
36 particle.retina.wobbleDistance = getRangeValue(wobbleOpt.distance) * this.container.retina.pixelRatio;
37 }
38 isEnabled(particle) {
39 return !particle.destroyed && !particle.spawning && particle.options.wobble.enable;
40 }
41 update(particle, delta) {
42 if (!this.isEnabled(particle)) {
43 return;
44 }
45 updateWobble(particle, delta);
46 }
47}