particle-flux 0.7.2 → 0.7.3

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.
@@ -1,14 +1,21 @@
1
1
  import { IParticle, ParticleEmitterConfig, ViewContainer, ViewFactory, ViewParticle } from '../types';
2
2
  import { ConfigManager } from './ConfigManager';
3
+ interface UpdateReport {
4
+ currentTime: number;
5
+ prevSpawnTime: number;
6
+ particleCreatedCount: number;
7
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: number;
8
+ }
3
9
  export declare class ParticleEmitter<View extends ViewParticle = ViewParticle> {
4
10
  readonly config: ConfigManager<View>;
5
11
  private currentTime;
6
- private nextSpawnTime;
12
+ private currentSpawnInterval;
13
+ private prevSpawnTime;
7
14
  private readonly container;
8
15
  private readonly ticker;
9
16
  constructor(viewContainer: ViewContainer<View>, viewFactory: ViewFactory<View>, initialConfig: ParticleEmitterConfig);
10
17
  emitOnce(particlesCount?: number): void;
11
- emitWave(): void;
18
+ emitWave(): IParticle<View>[];
12
19
  startEmit(): void;
13
20
  pauseEmit(): void;
14
21
  resumeEmit(): void;
@@ -17,17 +24,19 @@ export declare class ParticleEmitter<View extends ViewParticle = ViewParticle> {
17
24
  clean(): void;
18
25
  destroy(): void;
19
26
  isEmitActive(): boolean;
20
- update(elapsedDelta: number, deltaMS: number): void;
27
+ update(elapsedDelta: number, deltaMS: number): UpdateReport;
21
28
  updateContainer(elapsedDelta: number, deltaMS: number): void;
22
29
  getParticlesCount(): number;
23
30
  getParticles(): IParticle<View>[];
24
31
  fillPool(particlesCount: number): void;
25
32
  clearPool(): void;
26
33
  private handleUpdate;
34
+ private createParticlesBetweenFrames;
27
35
  private emit;
28
36
  private getNextSpawnTime;
29
37
  private resetTime;
30
38
  private getAvailableForEmitParticlesCount;
31
39
  private getSpawnTime;
32
40
  }
41
+ export {};
33
42
  //# sourceMappingURL=ParticleEmitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleEmitter.d.ts","sourceRoot":"","sources":["../../src/core/ParticleEmitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAW,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAC7G,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAK9C,qBAAa,eAAe,CAAC,IAAI,SAAS,YAAY,GAAG,YAAY;IACnE,SAAgB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAG5C,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAG/B,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,EAClC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,EAC9B,aAAa,EAAE,qBAAqB;IAmB/B,QAAQ,CAAC,cAAc,GAAE,MAAU,GAAG,IAAI;IAiB1C,QAAQ,IAAI,IAAI;IAchB,SAAS,IAAI,IAAI;IAKjB,SAAS,IAAI,IAAI;IAIjB,UAAU,IAAI,IAAI;IAQlB,QAAQ,IAAI,IAAI;IAMhB,OAAO,IAAI,IAAI;IAMf,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IASf,YAAY,IAAI,OAAO;IAIvB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAInD,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5D,iBAAiB,IAAI,MAAM;IAI3B,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;IAIjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAItC,SAAS,IAAI,IAAI;IAKxB,OAAO,CAAC,YAAY,CAuBlB;IAGF,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,iCAAiC;IASzC,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"ParticleEmitter.d.ts","sourceRoot":"","sources":["../../src/core/ParticleEmitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAW,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAC7G,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0CAA0C,EAAE,MAAM,CAAC;CACpD;AAED,qBAAa,eAAe,CAAC,IAAI,SAAS,YAAY,GAAG,YAAY;IACnE,SAAgB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAG5C,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAG/B,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,EAClC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,EAC9B,aAAa,EAAE,qBAAqB;IAsB/B,QAAQ,CAAC,cAAc,GAAE,MAAU,GAAG,IAAI;IAY1C,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;IAe7B,SAAS,IAAI,IAAI;IAKjB,SAAS,IAAI,IAAI;IAIjB,UAAU,IAAI,IAAI;IAQlB,QAAQ,IAAI,IAAI;IAMhB,OAAO,IAAI,IAAI;IAMf,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,IAAI;IASf,YAAY,IAAI,OAAO;IAIvB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;IAI3D,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5D,iBAAiB,IAAI,MAAM;IAI3B,YAAY,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;IAIjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAItC,SAAS,IAAI,IAAI;IAKxB,OAAO,CAAC,YAAY,CAyFlB;IAEF,OAAO,CAAC,4BAA4B;IAsBpC,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,iCAAiC;IASzC,OAAO,CAAC,YAAY;CAGrB"}
@@ -6,10 +6,12 @@ const ConfigManager_1 = require("./ConfigManager");
6
6
  const Ticker_1 = require("../utils/Ticker");
7
7
  const RealRandom_1 = require("../utils/random/RealRandom");
8
8
  const typeguards_1 = require("../typeguards");
9
+ const updateParticle_1 = require("./particle/updateParticle");
9
10
  class ParticleEmitter {
10
11
  config;
11
12
  currentTime;
12
- nextSpawnTime;
13
+ currentSpawnInterval;
14
+ prevSpawnTime;
13
15
  container;
14
16
  ticker;
15
17
  constructor(viewContainer, viewFactory, initialConfig) {
@@ -17,7 +19,9 @@ class ParticleEmitter {
17
19
  this.config = new ConfigManager_1.ConfigManager(initialConfig, viewFactory);
18
20
  this.container = new ParticleContainer_1.ParticleContainer(viewContainer, this.config);
19
21
  this.currentTime = 0;
20
- this.nextSpawnTime = this.getNextSpawnTime();
22
+ this.currentSpawnInterval = this.getNextSpawnTime();
23
+ this.prevSpawnTime = 0;
24
+ this.resetTime();
21
25
  if (this.config.autoStart === undefined || this.config.autoStart) {
22
26
  this.startEmit();
23
27
  }
@@ -27,19 +31,18 @@ class ParticleEmitter {
27
31
  for (let i = 0; i < count; i++) {
28
32
  this.emit();
29
33
  }
30
- if (!this.ticker.started) {
31
- this.startEmit();
32
- }
33
34
  }
34
35
  emitWave() {
35
36
  const countPerWave = this.config.spawnParticlesPerWave || 1;
36
37
  const count = this.getAvailableForEmitParticlesCount(countPerWave);
38
+ const particles = [];
37
39
  for (let i = 0; i < count; i++) {
38
- this.emit();
39
- }
40
- if (!this.ticker.started) {
41
- this.startEmit();
40
+ const particle = this.emit();
41
+ if (particle) {
42
+ particles.push(particle);
43
+ }
42
44
  }
45
+ return particles;
43
46
  }
44
47
  startEmit() {
45
48
  this.resetTime();
@@ -71,7 +74,7 @@ class ParticleEmitter {
71
74
  return this.ticker.started;
72
75
  }
73
76
  update(elapsedDelta, deltaMS) {
74
- this.handleUpdate(elapsedDelta, deltaMS);
77
+ return this.handleUpdate(elapsedDelta, deltaMS);
75
78
  }
76
79
  updateContainer(elapsedDelta, deltaMS) {
77
80
  this.container.update(elapsedDelta, deltaMS);
@@ -89,43 +92,112 @@ class ParticleEmitter {
89
92
  this.container.clearPool();
90
93
  }
91
94
  handleUpdate = (elapsedDelta, deltaMS) => {
92
- this.currentTime += deltaMS;
93
- if (this.currentTime < 0)
94
- return;
95
+ const newCurrentTime = this.currentTime + deltaMS;
96
+ if (newCurrentTime < 0) {
97
+ this.currentTime = newCurrentTime;
98
+ return {
99
+ currentTime: this.currentTime,
100
+ prevSpawnTime: this.prevSpawnTime,
101
+ particleCreatedCount: 0,
102
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
103
+ };
104
+ }
105
+ if (this.currentTime === 0) {
106
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = Math.max(0, newCurrentTime - this.currentSpawnInterval);
107
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, newCurrentTime);
108
+ this.prevSpawnTime = count > 1 ? this.currentSpawnInterval * count : 0;
109
+ this.currentTime = newCurrentTime;
110
+ return {
111
+ currentTime: this.currentTime,
112
+ prevSpawnTime: this.prevSpawnTime,
113
+ particleCreatedCount: count,
114
+ deltaBetweenCurrentTimeAndCurrentSpawnTime,
115
+ };
116
+ }
117
+ else if (this.currentTime <= 0 && newCurrentTime >= 0) {
118
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = Math.max(0, newCurrentTime - this.currentSpawnInterval);
119
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, newCurrentTime);
120
+ this.prevSpawnTime = count > 1 ? this.currentSpawnInterval * count : 0;
121
+ this.currentTime = newCurrentTime;
122
+ return {
123
+ currentTime: this.currentTime,
124
+ prevSpawnTime: this.prevSpawnTime,
125
+ particleCreatedCount: count,
126
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: this.currentTime + deltaMS,
127
+ };
128
+ }
129
+ this.currentTime = newCurrentTime;
95
130
  this.container.update(elapsedDelta, deltaMS);
96
131
  if (this.currentTime >= this.getSpawnTime()) {
97
132
  if (this.container.getParticlesCount() === 0) {
98
133
  this.stopEmit();
99
134
  }
100
- return;
135
+ return {
136
+ currentTime: this.currentTime,
137
+ prevSpawnTime: this.prevSpawnTime,
138
+ particleCreatedCount: 0,
139
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
140
+ };
101
141
  }
102
- if (this.currentTime >= this.nextSpawnTime) {
103
- this.emitWave();
104
- this.nextSpawnTime = this.getNextSpawnTime();
142
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = this.currentTime - (this.prevSpawnTime + this.currentSpawnInterval);
143
+ if (deltaBetweenCurrentTimeAndCurrentSpawnTime >= 0) {
144
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, deltaMS);
145
+ this.prevSpawnTime += this.currentSpawnInterval * count;
146
+ this.currentSpawnInterval = this.getNextSpawnTime();
147
+ return {
148
+ currentTime: this.currentTime,
149
+ prevSpawnTime: this.prevSpawnTime,
150
+ particleCreatedCount: count,
151
+ deltaBetweenCurrentTimeAndCurrentSpawnTime,
152
+ };
105
153
  }
154
+ return {
155
+ currentTime: this.currentTime,
156
+ prevSpawnTime: this.prevSpawnTime,
157
+ particleCreatedCount: 0,
158
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
159
+ };
106
160
  };
161
+ createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, deltaMS) {
162
+ const spawnInterval = this.currentSpawnInterval || 1;
163
+ const count = Math.floor(deltaBetweenCurrentTimeAndCurrentSpawnTime / spawnInterval) + 1;
164
+ for (let i = 0; i < count; i++) {
165
+ const particles = this.emitWave();
166
+ const particleAge = deltaBetweenCurrentTimeAndCurrentSpawnTime - i * spawnInterval;
167
+ if (particleAge > 0) {
168
+ particles.forEach((p) => {
169
+ (0, updateParticle_1.updateParticle)(p, particleAge / deltaMS, particleAge);
170
+ });
171
+ }
172
+ }
173
+ return count;
174
+ }
107
175
  emit() {
108
176
  if (this.config.spawnChance !== undefined) {
109
177
  if (RealRandom_1.realRandom.generateIntegerNumber(1, 100) <= this.config.spawnChance) {
110
- this.container.createParticle();
178
+ return this.container.createParticle();
111
179
  }
112
180
  }
113
181
  else {
114
- this.container.createParticle();
182
+ return this.container.createParticle();
115
183
  }
116
184
  }
117
185
  getNextSpawnTime() {
118
186
  const spawnInterval = this.config.spawnInterval;
119
- if (spawnInterval === undefined)
187
+ if (spawnInterval === undefined) {
120
188
  return Number.POSITIVE_INFINITY;
121
- if ((0, typeguards_1.isRangeValue)(spawnInterval)) {
122
- return this.currentTime + RealRandom_1.realRandom.generateIntegerNumber(spawnInterval.min, spawnInterval.max);
123
189
  }
124
- return this.currentTime + spawnInterval;
190
+ else if ((0, typeguards_1.isRangeValue)(spawnInterval)) {
191
+ return RealRandom_1.realRandom.generateIntegerNumber(spawnInterval.min, spawnInterval.max);
192
+ }
193
+ else {
194
+ return spawnInterval;
195
+ }
125
196
  }
126
197
  resetTime() {
127
198
  this.currentTime = this.config.spawnTimeout !== undefined ? -this.config.spawnTimeout : 0;
128
- this.nextSpawnTime = this.config.spawnInterval !== undefined ? 0 : Number.POSITIVE_INFINITY;
199
+ this.prevSpawnTime = 0;
200
+ this.currentSpawnInterval = this.getNextSpawnTime();
129
201
  }
130
202
  getAvailableForEmitParticlesCount(emitParticlesCount) {
131
203
  const particlesInContainer = this.container.getParticlesCount();
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleEmitter.js","sourceRoot":"","sources":["../../src/core/ParticleEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParticleEmitter.js","sourceRoot":"","sources":["../../src/core/ParticleEmitter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "particle-flux",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "main": "lib/index.js",
5
5
  "license": "UNLICENSED",
6
6
  "files": [
package/readme.md CHANGED
@@ -64,6 +64,7 @@ Examples of some animations and effects that can be created using the emitter. A
64
64
  - [Flame](https://codepen.io/vladosina/pen/mybgxwV)
65
65
  - [Snow Flow](https://codepen.io/vladosina/pen/ZYzZoKg)
66
66
  - [Trail particles](https://codepen.io/vladosina/pen/mydNWNQ)
67
+ - [Fountain](https://codepen.io/vladosina/pen/wBvVxzJ)
67
68
  - [SVG & PIXI equal animation](https://codepen.io/vladosina/pen/xbxvxNw)
68
69
 
69
70
  ## Particle Emitter Config