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
|
|
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():
|
|
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):
|
|
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;
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
41
|
-
|
|
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
|
|
93
|
-
if (
|
|
94
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
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.
|
|
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":";;;AAAA,2DAAsD;AAEtD,mDAA8C;AAC9C,4CAAuC;AACvC,2DAAsD;AACtD,8CAA2C;
|
|
1
|
+
{"version":3,"file":"ParticleEmitter.js","sourceRoot":"","sources":["../../src/core/ParticleEmitter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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
|