custom-pixi-particles 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,7 +15,7 @@ If you find **CustomPIXIParticles** useful and would like to support my work, yo
15
15
  - **Simple API**: Effortlessly create particle emitters with minimal code.
16
16
  - **Highly Configurable**: Adjust particle behavior, appearance, animation, and more.
17
17
  - **Performance Optimized**: Handle thousands of particles with minimal performance overhead.
18
- - **PIXI.js Compatibility**: Fully compatible with **PIXI.js v7**, with legacy support for v5.x and v6.x.
18
+ - **PIXI.js Compatibility**: Fully compatible with **PIXI.js v8**, **PIXI.js v7**, with legacy support for v5.x and v6.x.
19
19
  - **Real-Time Customization**: Dynamically update textures, positions, configurations, and emitters on the fly.
20
20
 
21
21
  ---
@@ -142,9 +142,11 @@ particles.clearPool()
142
142
  ---
143
143
 
144
144
  ## 🖥️ Versions Compatibility
145
- | PixiJS | CustomPIXIParticles |
146
- |---|---|
147
- | v5.x - v6.x | v4.x |
145
+ | PixiJS | CustomPIXIParticles |
146
+ |-------------|---------------------|
147
+ | v5.x - v6.x | v4.x |
148
+ | v7.x | v7.x |
149
+ | v8.x | v8.x |
148
150
 
149
151
  ---
150
152
 
@@ -8,15 +8,8 @@ export default class NoiseBasedMotionBehaviour extends Behaviour {
8
8
  noiseIntensity: number;
9
9
  noiseSpeed: number;
10
10
  noiseDirection: Point;
11
- gradients: Map<string, Point>;
12
- gridSize: number;
11
+ noise2D: any;
13
12
  constructor();
14
- initializeGradients(): void;
15
- getGradient(ix: number, iy: number): Point;
16
- _gridKey(x: number, y: number): string;
17
- lerp(a: number, b: number, t: number): number;
18
- fade(t: number): number;
19
- perlinNoise(x: number, y: number): number;
20
13
  init: (particle: Particle) => void;
21
14
  apply: (particle: Particle, deltaTime: number) => void;
22
15
  getName(): string;
@@ -1,3 +1,4 @@
1
+ import { createNoise2D } from 'simplex-noise';
1
2
  import BehaviourNames from './BehaviourNames';
2
3
  import { Point } from '../util';
3
4
  import Behaviour from './Behaviour';
@@ -10,12 +11,10 @@ export default class NoiseBasedMotionBehaviour extends Behaviour {
10
11
  this.noiseIntensity = 10;
11
12
  this.noiseSpeed = 0.1;
12
13
  this.noiseDirection = new Point(1, 1);
13
- this.gradients = new Map();
14
- this.gridSize = 256;
15
14
  this.init = (particle) => {
16
15
  if (!this.enabled)
17
16
  return;
18
- particle.noiseOffset = new Point(Math.random() * this.gridSize, Math.random() * this.gridSize);
17
+ particle.noiseOffset = new Point(Math.random() * 1000, Math.random() * 1000);
19
18
  };
20
19
  this.apply = (particle, deltaTime) => {
21
20
  if (!this.enabled || particle.skipPositionBehaviour)
@@ -23,54 +22,12 @@ export default class NoiseBasedMotionBehaviour extends Behaviour {
23
22
  const { noiseOffset } = particle;
24
23
  noiseOffset.x += this.noiseSpeed * deltaTime * this.noiseDirection.x;
25
24
  noiseOffset.y += this.noiseSpeed * deltaTime * this.noiseDirection.y;
26
- const noiseX = this.perlinNoise(noiseOffset.x * this.noiseScale, noiseOffset.y * this.noiseScale);
27
- const noiseY = this.perlinNoise(noiseOffset.y * this.noiseScale, noiseOffset.x * this.noiseScale);
28
- // Adjust movement instead of x, y directly
25
+ const noiseX = this.noise2D(noiseOffset.x * this.noiseScale, noiseOffset.y * this.noiseScale);
26
+ const noiseY = this.noise2D(noiseOffset.y * this.noiseScale, noiseOffset.x * this.noiseScale);
29
27
  particle.movement.x += noiseX * this.noiseIntensity * deltaTime;
30
28
  particle.movement.y += noiseY * this.noiseIntensity * deltaTime;
31
29
  };
32
- this.initializeGradients();
33
- }
34
- initializeGradients() {
35
- for (let i = 0; i < this.gridSize; i++) {
36
- for (let j = 0; j < this.gridSize; j++) {
37
- const angle = Math.random() * Math.PI * 2;
38
- this.gradients.set(this._gridKey(i, j), new Point(Math.cos(angle), Math.sin(angle)));
39
- }
40
- }
41
- }
42
- getGradient(ix, iy) {
43
- return this.gradients.get(this._gridKey(ix, iy)) || new Point(0, 0);
44
- }
45
- _gridKey(x, y) {
46
- return `${x % this.gridSize},${y % this.gridSize}`;
47
- }
48
- lerp(a, b, t) {
49
- return a + t * (b - a);
50
- }
51
- fade(t) {
52
- return t * t * t * (t * (t * 6 - 15) + 10);
53
- }
54
- perlinNoise(x, y) {
55
- const x0 = Math.floor(x);
56
- const x1 = x0 + 1;
57
- const y0 = Math.floor(y);
58
- const y1 = y0 + 1;
59
- const sx = x - x0;
60
- const sy = y - y0;
61
- const g00 = this.getGradient(x0, y0);
62
- const g10 = this.getGradient(x1, y0);
63
- const g01 = this.getGradient(x0, y1);
64
- const g11 = this.getGradient(x1, y1);
65
- const dot00 = g00.x * (x - x0) + g00.y * (y - y0);
66
- const dot10 = g10.x * (x - x1) + g10.y * (y - y0);
67
- const dot01 = g01.x * (x - x0) + g01.y * (y - y1);
68
- const dot11 = g11.x * (x - x1) + g11.y * (y - y1);
69
- const u = this.fade(sx);
70
- const v = this.fade(sy);
71
- const nx0 = this.lerp(dot00, dot10, u);
72
- const nx1 = this.lerp(dot01, dot11, u);
73
- return this.lerp(nx0, nx1, v);
30
+ this.noise2D = createNoise2D();
74
31
  }
75
32
  getName() {
76
33
  return BehaviourNames.NOISE_BASED_MOTION_BEHAVIOUR;
@@ -1 +1 @@
1
- {"version":3,"file":"NoiseBasedMotionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/NoiseBasedMotionBehaviour.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NoiseBasedMotionBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/NoiseBasedMotionBehaviour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,SAAS;IAW9D;QACE,KAAK,EAAE,CAAA;QAXT,YAAO,GAAG,IAAI,CAAA;QACd,aAAQ,GAAG,EAAE,CAAA;QAEb,eAAU,GAAG,IAAI,CAAA;QACjB,mBAAc,GAAG,EAAE,CAAA;QACnB,eAAU,GAAG,GAAG,CAAA;QAChB,mBAAc,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAShC,SAAI,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAM;YACzB,QAAQ,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;QAC9E,CAAC,CAAA;QAED,UAAK,GAAG,CAAC,QAAkB,EAAE,SAAiB,EAAE,EAAE;YAChD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,qBAAqB;gBAAE,OAAM;YAE3D,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAA;YAEhC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;YACpE,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;YAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;YAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;YAE7F,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;YAC/D,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QACjE,CAAC,CAAA;QArBC,IAAI,CAAC,OAAO,GAAG,aAAa,EAAE,CAAA;IAChC,CAAC;IAsBD,OAAO;QACL,OAAO,cAAc,CAAC,4BAA4B,CAAA;IACpD,CAAC;IAED,QAAQ;QACN,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE;gBACd,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACxB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;aACzB;YACD,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;SACrB,CAAA;IACH,CAAC;CACF"}
package/package.json CHANGED
@@ -17,7 +17,8 @@
17
17
  "typescript": "^5.7.2"
18
18
  },
19
19
  "dependencies": {
20
- "eventemitter3": "^4.0.7"
20
+ "eventemitter3": "^4.0.7",
21
+ "simplex-noise": "^4.0.3"
21
22
  },
22
23
  "files": [
23
24
  "dist"
@@ -42,5 +43,5 @@
42
43
  "lint": "tslint 'src/**/*.ts'",
43
44
  "lint:fix": "tslint --fix 'src/**/*.ts'"
44
45
  },
45
- "version": "7.0.0"
46
+ "version": "7.1.0"
46
47
  }