particle-flux 0.7.2 → 0.7.4

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,22 @@
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;
16
+ private skipFirstEmit;
9
17
  constructor(viewContainer: ViewContainer<View>, viewFactory: ViewFactory<View>, initialConfig: ParticleEmitterConfig);
10
18
  emitOnce(particlesCount?: number): void;
11
- emitWave(): void;
19
+ emitWave(): IParticle<View>[];
12
20
  startEmit(): void;
13
21
  pauseEmit(): void;
14
22
  resumeEmit(): void;
@@ -17,17 +25,19 @@ export declare class ParticleEmitter<View extends ViewParticle = ViewParticle> {
17
25
  clean(): void;
18
26
  destroy(): void;
19
27
  isEmitActive(): boolean;
20
- update(elapsedDelta: number, deltaMS: number): void;
28
+ update(elapsedDelta: number, deltaMS: number): UpdateReport;
21
29
  updateContainer(elapsedDelta: number, deltaMS: number): void;
22
30
  getParticlesCount(): number;
23
31
  getParticles(): IParticle<View>[];
24
32
  fillPool(particlesCount: number): void;
25
33
  clearPool(): void;
26
34
  private handleUpdate;
35
+ private createParticlesBetweenFrames;
27
36
  private emit;
28
37
  private getNextSpawnTime;
29
38
  private resetTime;
30
39
  private getAvailableForEmitParticlesCount;
31
40
  private getSpawnTime;
32
41
  }
42
+ export {};
33
43
  //# 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;IAEjC,OAAO,CAAC,aAAa,CAAU;gBAG7B,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,EAClC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,EAC9B,aAAa,EAAE,qBAAqB;IAuB/B,QAAQ,CAAC,cAAc,GAAE,MAAU,GAAG,IAAI;IAiB1C,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;IAoB7B,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;IAOjB,OAAO,CAAC,iCAAiC;IASzC,OAAO,CAAC,YAAY;CAGrB"}
@@ -6,18 +6,24 @@ 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;
17
+ skipFirstEmit;
15
18
  constructor(viewContainer, viewFactory, initialConfig) {
16
19
  this.ticker = new Ticker_1.Ticker(this.handleUpdate);
17
20
  this.config = new ConfigManager_1.ConfigManager(initialConfig, viewFactory);
18
21
  this.container = new ParticleContainer_1.ParticleContainer(viewContainer, this.config);
22
+ this.skipFirstEmit = false;
19
23
  this.currentTime = 0;
20
- this.nextSpawnTime = this.getNextSpawnTime();
24
+ this.currentSpawnInterval = this.getNextSpawnTime();
25
+ this.prevSpawnTime = 0;
26
+ this.resetTime();
21
27
  if (this.config.autoStart === undefined || this.config.autoStart) {
22
28
  this.startEmit();
23
29
  }
@@ -27,19 +33,26 @@ class ParticleEmitter {
27
33
  for (let i = 0; i < count; i++) {
28
34
  this.emit();
29
35
  }
30
- if (!this.ticker.started) {
36
+ if (!this.isEmitActive()) {
37
+ this.skipFirstEmit = true;
31
38
  this.startEmit();
32
39
  }
33
40
  }
34
41
  emitWave() {
35
42
  const countPerWave = this.config.spawnParticlesPerWave || 1;
36
43
  const count = this.getAvailableForEmitParticlesCount(countPerWave);
44
+ const particles = [];
37
45
  for (let i = 0; i < count; i++) {
38
- this.emit();
46
+ const particle = this.emit();
47
+ if (particle) {
48
+ particles.push(particle);
49
+ }
39
50
  }
40
- if (!this.ticker.started) {
51
+ if (!this.isEmitActive()) {
52
+ this.skipFirstEmit = true;
41
53
  this.startEmit();
42
54
  }
55
+ return particles;
43
56
  }
44
57
  startEmit() {
45
58
  this.resetTime();
@@ -71,7 +84,7 @@ class ParticleEmitter {
71
84
  return this.ticker.started;
72
85
  }
73
86
  update(elapsedDelta, deltaMS) {
74
- this.handleUpdate(elapsedDelta, deltaMS);
87
+ return this.handleUpdate(elapsedDelta, deltaMS);
75
88
  }
76
89
  updateContainer(elapsedDelta, deltaMS) {
77
90
  this.container.update(elapsedDelta, deltaMS);
@@ -89,43 +102,113 @@ class ParticleEmitter {
89
102
  this.container.clearPool();
90
103
  }
91
104
  handleUpdate = (elapsedDelta, deltaMS) => {
92
- this.currentTime += deltaMS;
93
- if (this.currentTime < 0)
94
- return;
105
+ const newCurrentTime = this.currentTime + deltaMS;
106
+ if (newCurrentTime < 0) {
107
+ this.currentTime = newCurrentTime;
108
+ return {
109
+ currentTime: this.currentTime,
110
+ prevSpawnTime: this.prevSpawnTime,
111
+ particleCreatedCount: 0,
112
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
113
+ };
114
+ }
115
+ if (this.currentTime === 0 && !this.skipFirstEmit) {
116
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = Math.max(0, newCurrentTime - this.currentSpawnInterval);
117
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, newCurrentTime);
118
+ this.prevSpawnTime = count > 1 ? this.currentSpawnInterval * count : 0;
119
+ this.currentTime = newCurrentTime;
120
+ return {
121
+ currentTime: this.currentTime,
122
+ prevSpawnTime: this.prevSpawnTime,
123
+ particleCreatedCount: count,
124
+ deltaBetweenCurrentTimeAndCurrentSpawnTime,
125
+ };
126
+ }
127
+ else if (this.currentTime <= 0 && newCurrentTime >= 0) {
128
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = Math.max(0, newCurrentTime - this.currentSpawnInterval);
129
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, newCurrentTime);
130
+ this.prevSpawnTime = count > 1 ? this.currentSpawnInterval * count : 0;
131
+ this.currentTime = newCurrentTime;
132
+ return {
133
+ currentTime: this.currentTime,
134
+ prevSpawnTime: this.prevSpawnTime,
135
+ particleCreatedCount: count,
136
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: this.currentTime + deltaMS,
137
+ };
138
+ }
139
+ this.currentTime = newCurrentTime;
95
140
  this.container.update(elapsedDelta, deltaMS);
96
141
  if (this.currentTime >= this.getSpawnTime()) {
97
142
  if (this.container.getParticlesCount() === 0) {
98
143
  this.stopEmit();
99
144
  }
100
- return;
145
+ return {
146
+ currentTime: this.currentTime,
147
+ prevSpawnTime: this.prevSpawnTime,
148
+ particleCreatedCount: 0,
149
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
150
+ };
101
151
  }
102
- if (this.currentTime >= this.nextSpawnTime) {
103
- this.emitWave();
104
- this.nextSpawnTime = this.getNextSpawnTime();
152
+ const deltaBetweenCurrentTimeAndCurrentSpawnTime = this.currentTime - (this.prevSpawnTime + this.currentSpawnInterval);
153
+ if (deltaBetweenCurrentTimeAndCurrentSpawnTime >= 0) {
154
+ const count = this.createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, deltaMS);
155
+ this.prevSpawnTime += this.currentSpawnInterval * count;
156
+ this.currentSpawnInterval = this.getNextSpawnTime();
157
+ return {
158
+ currentTime: this.currentTime,
159
+ prevSpawnTime: this.prevSpawnTime,
160
+ particleCreatedCount: count,
161
+ deltaBetweenCurrentTimeAndCurrentSpawnTime,
162
+ };
105
163
  }
164
+ return {
165
+ currentTime: this.currentTime,
166
+ prevSpawnTime: this.prevSpawnTime,
167
+ particleCreatedCount: 0,
168
+ deltaBetweenCurrentTimeAndCurrentSpawnTime: 0,
169
+ };
106
170
  };
171
+ createParticlesBetweenFrames(deltaBetweenCurrentTimeAndCurrentSpawnTime, deltaMS) {
172
+ const spawnInterval = this.currentSpawnInterval || 1;
173
+ const count = Math.floor(deltaBetweenCurrentTimeAndCurrentSpawnTime / spawnInterval) + 1;
174
+ for (let i = 0; i < count; i++) {
175
+ const particles = this.emitWave();
176
+ const particleAge = deltaBetweenCurrentTimeAndCurrentSpawnTime - i * spawnInterval;
177
+ if (particleAge > 0) {
178
+ particles.forEach((p) => {
179
+ (0, updateParticle_1.updateParticle)(p, particleAge / deltaMS, particleAge);
180
+ });
181
+ }
182
+ }
183
+ return count;
184
+ }
107
185
  emit() {
108
186
  if (this.config.spawnChance !== undefined) {
109
187
  if (RealRandom_1.realRandom.generateIntegerNumber(1, 100) <= this.config.spawnChance) {
110
- this.container.createParticle();
188
+ return this.container.createParticle();
111
189
  }
112
190
  }
113
191
  else {
114
- this.container.createParticle();
192
+ return this.container.createParticle();
115
193
  }
116
194
  }
117
195
  getNextSpawnTime() {
118
196
  const spawnInterval = this.config.spawnInterval;
119
- if (spawnInterval === undefined)
197
+ if (spawnInterval === undefined) {
120
198
  return Number.POSITIVE_INFINITY;
121
- if ((0, typeguards_1.isRangeValue)(spawnInterval)) {
122
- return this.currentTime + RealRandom_1.realRandom.generateIntegerNumber(spawnInterval.min, spawnInterval.max);
123
199
  }
124
- return this.currentTime + spawnInterval;
200
+ else if ((0, typeguards_1.isRangeValue)(spawnInterval)) {
201
+ return RealRandom_1.realRandom.generateIntegerNumber(spawnInterval.min, spawnInterval.max);
202
+ }
203
+ else {
204
+ return spawnInterval;
205
+ }
125
206
  }
126
207
  resetTime() {
208
+ this.skipFirstEmit = false;
127
209
  this.currentTime = this.config.spawnTimeout !== undefined ? -this.config.spawnTimeout : 0;
128
- this.nextSpawnTime = this.config.spawnInterval !== undefined ? 0 : Number.POSITIVE_INFINITY;
210
+ this.prevSpawnTime = 0;
211
+ this.currentSpawnInterval = this.getNextSpawnTime();
129
212
  }
130
213
  getAvailableForEmitParticlesCount(emitParticlesCount) {
131
214
  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.4",
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