custom-pixi-particles 4.41.0 → 4.41.1
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/dist/lib/Model.d.ts +6 -0
- package/dist/lib/Model.js +8 -0
- package/dist/lib/Model.js.map +1 -1
- package/dist/lib/behaviour/TemperatureBehaviour.d.ts +18 -4
- package/dist/lib/behaviour/TemperatureBehaviour.js +151 -27
- package/dist/lib/behaviour/TemperatureBehaviour.js.map +1 -1
- package/dist/lib/behaviour/ToroidalWrapBehaviour.d.ts +6 -11
- package/dist/lib/behaviour/ToroidalWrapBehaviour.js +44 -28
- package/dist/lib/behaviour/ToroidalWrapBehaviour.js.map +1 -1
- package/dist/lib/emitter/Emitter.js +3 -0
- package/dist/lib/emitter/Emitter.js.map +1 -1
- package/dist/lib/pixi/Renderer.d.ts +3 -1
- package/dist/lib/pixi/Renderer.js +25 -9
- package/dist/lib/pixi/Renderer.js.map +1 -1
- package/dist/lib/pixi/SpriteContainerRenderer.d.ts +3 -1
- package/dist/lib/pixi/SpriteContainerRenderer.js +25 -9
- package/dist/lib/pixi/SpriteContainerRenderer.js.map +1 -1
- package/dist/lib/pixi/TestRenderer.d.ts +3 -1
- package/dist/lib/pixi/TestRenderer.js +25 -9
- package/dist/lib/pixi/TestRenderer.js.map +1 -1
- package/dist/lib/util/toroidalWrapExtents.d.ts +27 -3
- package/dist/lib/util/toroidalWrapExtents.js +81 -26
- package/dist/lib/util/toroidalWrapExtents.js.map +1 -1
- package/dist/lib/util/toroidalWrapVisibility.d.ts +5 -0
- package/dist/lib/util/toroidalWrapVisibility.js +12 -0
- package/dist/lib/util/toroidalWrapVisibility.js.map +1 -0
- package/package.json +1 -1
package/dist/lib/Model.d.ts
CHANGED
|
@@ -56,6 +56,12 @@ export default class Model {
|
|
|
56
56
|
x: number;
|
|
57
57
|
y: number;
|
|
58
58
|
} | null;
|
|
59
|
+
/**
|
|
60
|
+
* Incremented when the host tab becomes visible again after being hidden.
|
|
61
|
+
* Behaviours use this to resync state after a pause (avoids delta spikes / stale wrap tracking).
|
|
62
|
+
*/
|
|
63
|
+
visibilityResumeGeneration: number;
|
|
64
|
+
signalVisibilityResume(): void;
|
|
59
65
|
/** Sets {@link toroidalCanvasBounds} from render buffer size (centered rect). */
|
|
60
66
|
setToroidalCanvasBoundsFromSize(width: number, height: number): void;
|
|
61
67
|
clearToroidalCanvasBounds(): void;
|
package/dist/lib/Model.js
CHANGED
|
@@ -35,6 +35,14 @@ export default class Model {
|
|
|
35
35
|
* Updated by Renderer.updatePosition when the host passes cursor/follow-mouse updates.
|
|
36
36
|
*/
|
|
37
37
|
this.pointerWorld = null;
|
|
38
|
+
/**
|
|
39
|
+
* Incremented when the host tab becomes visible again after being hidden.
|
|
40
|
+
* Behaviours use this to resync state after a pause (avoids delta spikes / stale wrap tracking).
|
|
41
|
+
*/
|
|
42
|
+
this.visibilityResumeGeneration = 0;
|
|
43
|
+
}
|
|
44
|
+
signalVisibilityResume() {
|
|
45
|
+
this.visibilityResumeGeneration += 1;
|
|
38
46
|
}
|
|
39
47
|
/** Sets {@link toroidalCanvasBounds} from render buffer size (centered rect). */
|
|
40
48
|
setToroidalCanvasBoundsFromSize(width, height) {
|
package/dist/lib/Model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/lib/Model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;IAA1B;QACE,oBAAe,GAsBX;YACF,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,MAAM;YACd,GAAG,EAAE;gBACH,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;gBAC1E,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBACnC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;aACzC;SACF,CAAA;QACD;;WAEG;QACH,YAAO,GAAQ,IAAI,CAAA;QAEnB;;;WAGG;QACH,yBAAoB,GAKT,IAAI,CAAA;QAEf;;;WAGG;QACH,iBAAY,GAAoC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/lib/Model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Behaviour from './Behaviour';
|
|
2
2
|
import Particle from '../Particle';
|
|
3
|
+
import type Model from '../Model';
|
|
3
4
|
import { Color, Point } from '../util';
|
|
4
5
|
export type TemperatureZoneShapeType = 'circle' | 'square' | 'rectangle';
|
|
5
6
|
export type TemperatureZone = {
|
|
@@ -16,21 +17,32 @@ export type TemperatureZone = {
|
|
|
16
17
|
* TemperatureBehaviour adjusts particle velocity and color
|
|
17
18
|
* based on whether they are in a hot or cold zone.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* blends zone tint on top and eases back to the live natural color on exit.
|
|
20
|
+
* Runs after ColorBehaviour and ToroidalWrapBehaviour (lower priority):
|
|
21
|
+
* base color and final position are known before zone tinting is applied.
|
|
22
22
|
*/
|
|
23
23
|
export default class TemperatureBehaviour extends Behaviour {
|
|
24
24
|
enabled: boolean;
|
|
25
|
+
/** Below ToroidalWrapBehaviour (45) so zone checks use post-wrap positions. */
|
|
25
26
|
priority: number;
|
|
26
27
|
zones: TemperatureZone[];
|
|
27
28
|
/** When true, particle color eases toward zone / outside colors instead of snapping. */
|
|
28
29
|
gradualColorTransition: boolean;
|
|
29
30
|
/** Blend speed toward the target color (higher = faster). */
|
|
30
31
|
colorTransitionSpeed: number;
|
|
32
|
+
private _reconciledVisibilityResumeGeneration;
|
|
31
33
|
init(particle: Particle): void;
|
|
32
|
-
apply(particle: Particle, deltaTime?: number): void;
|
|
34
|
+
apply(particle: Particle, deltaTime?: number, model?: Model): void;
|
|
35
|
+
onParticlesUpdated(model?: Model): void;
|
|
33
36
|
private applyGradualOutsideColor;
|
|
37
|
+
private getOutsideTarget;
|
|
38
|
+
private getRestoreOutsideColor;
|
|
39
|
+
/**
|
|
40
|
+
* True when the particle is outside all zones but still carries zone tint
|
|
41
|
+
* (state desync, toroidal wrap, or mid-blend).
|
|
42
|
+
*/
|
|
43
|
+
private shouldInstantRestore;
|
|
44
|
+
private hasResidualZoneTint;
|
|
45
|
+
private syncColorSkip;
|
|
34
46
|
private clearGradualColorState;
|
|
35
47
|
private findActiveZone;
|
|
36
48
|
private zoneColor;
|
|
@@ -40,6 +52,8 @@ export default class TemperatureBehaviour extends Behaviour {
|
|
|
40
52
|
private stepBlendToward;
|
|
41
53
|
private getBlendT;
|
|
42
54
|
private lerp;
|
|
55
|
+
private colorsNear;
|
|
56
|
+
private colorDistSq;
|
|
43
57
|
private matchesAnyZoneColor;
|
|
44
58
|
private matchesAnyZoneColorValue;
|
|
45
59
|
isInZone(particle: Particle, zone: TemperatureZone): boolean;
|
|
@@ -4,20 +4,21 @@ import behaviourNames from './BehaviourNames';
|
|
|
4
4
|
* TemperatureBehaviour adjusts particle velocity and color
|
|
5
5
|
* based on whether they are in a hot or cold zone.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* blends zone tint on top and eases back to the live natural color on exit.
|
|
7
|
+
* Runs after ColorBehaviour and ToroidalWrapBehaviour (lower priority):
|
|
8
|
+
* base color and final position are known before zone tinting is applied.
|
|
10
9
|
*/
|
|
11
10
|
export default class TemperatureBehaviour extends Behaviour {
|
|
12
11
|
constructor() {
|
|
13
12
|
super(...arguments);
|
|
14
13
|
this.enabled = true;
|
|
15
|
-
|
|
14
|
+
/** Below ToroidalWrapBehaviour (45) so zone checks use post-wrap positions. */
|
|
15
|
+
this.priority = 40;
|
|
16
16
|
this.zones = [];
|
|
17
17
|
/** When true, particle color eases toward zone / outside colors instead of snapping. */
|
|
18
18
|
this.gradualColorTransition = false;
|
|
19
19
|
/** Blend speed toward the target color (higher = faster). */
|
|
20
20
|
this.colorTransitionSpeed = 6;
|
|
21
|
+
this._reconciledVisibilityResumeGeneration = -1;
|
|
21
22
|
}
|
|
22
23
|
init(particle) {
|
|
23
24
|
const p = particle;
|
|
@@ -26,29 +27,47 @@ export default class TemperatureBehaviour extends Behaviour {
|
|
|
26
27
|
p._temperatureBlend = 0;
|
|
27
28
|
p._temperatureOutsideColor = null;
|
|
28
29
|
p._temperatureLastZoneColor = null;
|
|
30
|
+
p._toroidalJustWrapped = false;
|
|
31
|
+
particle.skipColorBehaviour = false;
|
|
29
32
|
}
|
|
30
|
-
apply(particle, deltaTime = 1 / 60) {
|
|
31
|
-
var _a, _b, _c;
|
|
33
|
+
apply(particle, deltaTime = 1 / 60, model) {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
32
35
|
if (!this.enabled || !this.zones || !this.zones.length)
|
|
33
36
|
return;
|
|
34
37
|
const p = particle;
|
|
38
|
+
const justWrapped = p._toroidalJustWrapped === true;
|
|
39
|
+
if (justWrapped) {
|
|
40
|
+
p._toroidalJustWrapped = false;
|
|
41
|
+
}
|
|
35
42
|
const activeZone = this.findActiveZone(particle);
|
|
36
43
|
const naturalColor = this.copyColor(particle);
|
|
37
44
|
const wasInZone = p._temperatureInZone === true;
|
|
45
|
+
const visibilityResume = ((_a = model === null || model === void 0 ? void 0 : model.visibilityResumeGeneration) !== null && _a !== void 0 ? _a : 0) > this._reconciledVisibilityResumeGeneration;
|
|
46
|
+
let residualTint = !activeZone && this.hasResidualZoneTint(particle, p, wasInZone, justWrapped);
|
|
47
|
+
if (!activeZone &&
|
|
48
|
+
visibilityResume &&
|
|
49
|
+
(wasInZone || this.matchesAnyZoneColorValue(naturalColor, 12))) {
|
|
50
|
+
residualTint = true;
|
|
51
|
+
}
|
|
38
52
|
if (!activeZone) {
|
|
39
53
|
if (this.gradualColorTransition) {
|
|
40
|
-
if (
|
|
54
|
+
if (residualTint) {
|
|
41
55
|
p._temperatureTransitioningOut = true;
|
|
42
56
|
}
|
|
43
57
|
this.applyGradualOutsideColor(particle, p, naturalColor, deltaTime);
|
|
44
58
|
}
|
|
45
|
-
else if (
|
|
46
|
-
this.
|
|
59
|
+
else if (residualTint) {
|
|
60
|
+
const restoreColor = this.getRestoreOutsideColor(p, naturalColor);
|
|
61
|
+
if (restoreColor &&
|
|
62
|
+
(justWrapped && wasInZone || this.shouldInstantRestore(particle, naturalColor))) {
|
|
63
|
+
this.writeColor(particle, restoreColor);
|
|
64
|
+
}
|
|
47
65
|
}
|
|
48
|
-
else if (!wasInZone) {
|
|
66
|
+
else if (!wasInZone && !residualTint && !this.matchesAnyZoneColorValue(naturalColor)) {
|
|
49
67
|
p._temperatureOutsideColor = naturalColor;
|
|
50
68
|
}
|
|
51
69
|
p._temperatureInZone = false;
|
|
70
|
+
this.syncColorSkip(particle, p, false);
|
|
52
71
|
if (!this.gradualColorTransition) {
|
|
53
72
|
this.clearGradualColorState(particle, p);
|
|
54
73
|
}
|
|
@@ -56,37 +75,53 @@ export default class TemperatureBehaviour extends Behaviour {
|
|
|
56
75
|
}
|
|
57
76
|
if (this.gradualColorTransition) {
|
|
58
77
|
p._temperatureTransitioningOut = false;
|
|
59
|
-
if (!wasInZone
|
|
78
|
+
if (!wasInZone) {
|
|
60
79
|
p._temperatureOutsideColor = naturalColor;
|
|
80
|
+
if (((_b = p._temperatureBlend) !== null && _b !== void 0 ? _b : 0) <= 0) {
|
|
81
|
+
p._temperatureBlend = 0;
|
|
82
|
+
}
|
|
61
83
|
}
|
|
62
|
-
if (!
|
|
63
|
-
p.
|
|
84
|
+
else if (!p._temperatureOutsideColor) {
|
|
85
|
+
p._temperatureOutsideColor = naturalColor;
|
|
64
86
|
}
|
|
65
87
|
}
|
|
66
88
|
else if (!wasInZone) {
|
|
67
89
|
p._temperatureOutsideColor = naturalColor;
|
|
68
90
|
}
|
|
91
|
+
else if (justWrapped && !this.matchesAnyZoneColorValue(naturalColor, 12)) {
|
|
92
|
+
// Wrapped into a zone from a non-tinted color — refresh outside reference.
|
|
93
|
+
p._temperatureOutsideColor = naturalColor;
|
|
94
|
+
}
|
|
69
95
|
particle.velocity.x *= activeZone.velocity.x;
|
|
70
96
|
particle.velocity.y *= activeZone.velocity.y;
|
|
71
97
|
const zoneColor = this.zoneColor(activeZone);
|
|
72
98
|
p._temperatureLastZoneColor = zoneColor;
|
|
73
99
|
if (this.gradualColorTransition) {
|
|
74
|
-
const blend = this.stepBlendToward((
|
|
100
|
+
const blend = this.stepBlendToward((_c = p._temperatureBlend) !== null && _c !== void 0 ? _c : 0, 1, deltaTime);
|
|
75
101
|
p._temperatureBlend = blend;
|
|
76
|
-
const outside = (
|
|
102
|
+
const outside = (_d = p._temperatureOutsideColor) !== null && _d !== void 0 ? _d : naturalColor;
|
|
77
103
|
this.writeColor(particle, this.mixColors(outside, zoneColor, blend));
|
|
78
104
|
}
|
|
79
105
|
else {
|
|
80
106
|
this.writeColor(particle, zoneColor);
|
|
81
|
-
p._temperatureBlend = 1;
|
|
82
107
|
}
|
|
83
108
|
p._temperatureInZone = true;
|
|
109
|
+
this.syncColorSkip(particle, p, true);
|
|
110
|
+
}
|
|
111
|
+
onParticlesUpdated(model) {
|
|
112
|
+
var _a;
|
|
113
|
+
const resumeGeneration = (_a = model === null || model === void 0 ? void 0 : model.visibilityResumeGeneration) !== null && _a !== void 0 ? _a : 0;
|
|
114
|
+
if (resumeGeneration > this._reconciledVisibilityResumeGeneration) {
|
|
115
|
+
this._reconciledVisibilityResumeGeneration = resumeGeneration;
|
|
116
|
+
}
|
|
84
117
|
}
|
|
85
118
|
applyGradualOutsideColor(particle, p, naturalColor, deltaTime) {
|
|
86
|
-
var _a, _b, _c
|
|
119
|
+
var _a, _b, _c;
|
|
87
120
|
const transitioningOut = p._temperatureTransitioningOut === true;
|
|
88
121
|
const startBlend = transitioningOut ? ((_a = p._temperatureBlend) !== null && _a !== void 0 ? _a : 1) : ((_b = p._temperatureBlend) !== null && _b !== void 0 ? _b : 0);
|
|
89
|
-
if (!transitioningOut &&
|
|
122
|
+
if (!transitioningOut &&
|
|
123
|
+
!this.matchesAnyZoneColorValue(naturalColor) &&
|
|
124
|
+
!this.hasResidualZoneTint(particle, p, false, false)) {
|
|
90
125
|
p._temperatureOutsideColor = naturalColor;
|
|
91
126
|
}
|
|
92
127
|
const blend = this.stepBlendToward(startBlend, 0, deltaTime);
|
|
@@ -95,22 +130,98 @@ export default class TemperatureBehaviour extends Behaviour {
|
|
|
95
130
|
p._temperatureBlend = 0;
|
|
96
131
|
p._temperatureTransitioningOut = false;
|
|
97
132
|
p._temperatureLastZoneColor = null;
|
|
133
|
+
this.syncColorSkip(particle, p, false);
|
|
98
134
|
return;
|
|
99
135
|
}
|
|
100
|
-
const outside =
|
|
101
|
-
|
|
102
|
-
: ((_c = p._temperatureOutsideColor) !== null && _c !== void 0 ? _c : naturalColor);
|
|
103
|
-
const zone = (_d = p._temperatureLastZoneColor) !== null && _d !== void 0 ? _d : outside;
|
|
136
|
+
const outside = this.getOutsideTarget(p, naturalColor);
|
|
137
|
+
const zone = (_c = p._temperatureLastZoneColor) !== null && _c !== void 0 ? _c : outside;
|
|
104
138
|
this.writeColor(particle, this.mixColors(outside, zone, blend));
|
|
105
139
|
if (blend <= 0.001) {
|
|
106
140
|
p._temperatureBlend = 0;
|
|
107
141
|
p._temperatureTransitioningOut = false;
|
|
108
142
|
p._temperatureLastZoneColor = null;
|
|
143
|
+
this.syncColorSkip(particle, p, false);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
this.syncColorSkip(particle, p, false);
|
|
147
|
+
}
|
|
148
|
+
getOutsideTarget(p, naturalColor) {
|
|
149
|
+
var _a, _b;
|
|
150
|
+
if (p._temperatureTransitioningOut === true) {
|
|
151
|
+
return (_a = this.getRestoreOutsideColor(p, naturalColor)) !== null && _a !== void 0 ? _a : naturalColor;
|
|
109
152
|
}
|
|
153
|
+
return (_b = p._temperatureOutsideColor) !== null && _b !== void 0 ? _b : naturalColor;
|
|
154
|
+
}
|
|
155
|
+
getRestoreOutsideColor(p, naturalColor) {
|
|
156
|
+
const outside = p._temperatureOutsideColor;
|
|
157
|
+
if (!outside)
|
|
158
|
+
return null;
|
|
159
|
+
if (!this.matchesAnyZoneColorValue(outside, 12))
|
|
160
|
+
return outside;
|
|
161
|
+
// Outside reference was corrupted (e.g. saved while zone-tinted after a wrap).
|
|
162
|
+
if (!this.matchesAnyZoneColorValue(naturalColor, 12))
|
|
163
|
+
return naturalColor;
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* True when the particle is outside all zones but still carries zone tint
|
|
168
|
+
* (state desync, toroidal wrap, or mid-blend).
|
|
169
|
+
*/
|
|
170
|
+
shouldInstantRestore(particle, naturalColor) {
|
|
171
|
+
if (this.matchesAnyZoneColorValue(naturalColor, 12))
|
|
172
|
+
return true;
|
|
173
|
+
const p = particle;
|
|
174
|
+
const outside = p._temperatureOutsideColor;
|
|
175
|
+
const zone = p._temperatureLastZoneColor;
|
|
176
|
+
if (!outside || !zone)
|
|
177
|
+
return false;
|
|
178
|
+
if (this.colorsNear(naturalColor, outside))
|
|
179
|
+
return false;
|
|
180
|
+
if (this.colorsNear(naturalColor, zone, 12))
|
|
181
|
+
return true;
|
|
182
|
+
const distToZone = this.colorDistSq(naturalColor, zone);
|
|
183
|
+
const distToOutside = this.colorDistSq(naturalColor, outside);
|
|
184
|
+
return distToZone < distToOutside * 0.35 && distToZone <= 3600;
|
|
185
|
+
}
|
|
186
|
+
hasResidualZoneTint(particle, p, wasInZone, justWrapped) {
|
|
187
|
+
var _a;
|
|
188
|
+
if (justWrapped)
|
|
189
|
+
return true;
|
|
190
|
+
if (p._temperatureTransitioningOut === true)
|
|
191
|
+
return true;
|
|
192
|
+
if (this.gradualColorTransition && ((_a = p._temperatureBlend) !== null && _a !== void 0 ? _a : 0) > 0.001)
|
|
193
|
+
return true;
|
|
194
|
+
if (this.matchesAnyZoneColorValue(this.copyColor(particle), 12))
|
|
195
|
+
return true;
|
|
196
|
+
const outside = p._temperatureOutsideColor;
|
|
197
|
+
const zone = p._temperatureLastZoneColor;
|
|
198
|
+
if (!outside || !zone) {
|
|
199
|
+
return wasInZone && this.matchesAnyZoneColorValue(this.copyColor(particle), 12);
|
|
200
|
+
}
|
|
201
|
+
const current = this.copyColor(particle);
|
|
202
|
+
if (this.colorsNear(current, outside))
|
|
203
|
+
return false;
|
|
204
|
+
if (this.colorsNear(current, zone, 12))
|
|
205
|
+
return true;
|
|
206
|
+
const distToZone = this.colorDistSq(current, zone);
|
|
207
|
+
const distToOutside = this.colorDistSq(current, outside);
|
|
208
|
+
return distToZone < distToOutside * 0.35 && distToZone <= 3600;
|
|
209
|
+
}
|
|
210
|
+
syncColorSkip(particle, p, inZone) {
|
|
211
|
+
var _a;
|
|
212
|
+
if (!this.gradualColorTransition) {
|
|
213
|
+
particle.skipColorBehaviour = inZone;
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
const blend = (_a = p._temperatureBlend) !== null && _a !== void 0 ? _a : 0;
|
|
217
|
+
particle.skipColorBehaviour =
|
|
218
|
+
inZone || p._temperatureTransitioningOut === true || blend > 0.001;
|
|
110
219
|
}
|
|
111
220
|
clearGradualColorState(particle, p) {
|
|
112
221
|
p._temperatureBlend = 0;
|
|
113
|
-
|
|
222
|
+
if (!this.hasResidualZoneTint(particle, p, false, false)) {
|
|
223
|
+
p._temperatureLastZoneColor = null;
|
|
224
|
+
}
|
|
114
225
|
}
|
|
115
226
|
findActiveZone(particle) {
|
|
116
227
|
for (const zone of this.zones) {
|
|
@@ -169,13 +280,26 @@ export default class TemperatureBehaviour extends Behaviour {
|
|
|
169
280
|
lerp(start, end, t) {
|
|
170
281
|
return start + (end - start) * t;
|
|
171
282
|
}
|
|
172
|
-
|
|
173
|
-
return
|
|
283
|
+
colorsNear(a, b, tolerance = 2) {
|
|
284
|
+
return (Math.abs(a.r - b.r) <= tolerance &&
|
|
285
|
+
Math.abs(a.g - b.g) <= tolerance &&
|
|
286
|
+
Math.abs(a.b - b.b) <= tolerance &&
|
|
287
|
+
Math.abs(a.alpha - b.alpha) <= 0.02);
|
|
288
|
+
}
|
|
289
|
+
colorDistSq(a, b) {
|
|
290
|
+
const dr = a.r - b.r;
|
|
291
|
+
const dg = a.g - b.g;
|
|
292
|
+
const db = a.b - b.b;
|
|
293
|
+
const da = (a.alpha - b.alpha) * 255;
|
|
294
|
+
return dr * dr + dg * dg + db * db + da * da;
|
|
295
|
+
}
|
|
296
|
+
matchesAnyZoneColor(particle, tolerance = 2) {
|
|
297
|
+
return this.matchesAnyZoneColorValue(this.copyColor(particle), tolerance);
|
|
174
298
|
}
|
|
175
|
-
matchesAnyZoneColorValue(color) {
|
|
299
|
+
matchesAnyZoneColorValue(color, tolerance = 2) {
|
|
176
300
|
for (const zone of this.zones) {
|
|
177
301
|
const zoneColor = this.zoneColor(zone);
|
|
178
|
-
if (
|
|
302
|
+
if (this.colorsNear(color, zoneColor, tolerance)) {
|
|
179
303
|
return true;
|
|
180
304
|
}
|
|
181
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemperatureBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/TemperatureBehaviour.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TemperatureBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/TemperatureBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
1
|
import Behaviour from './Behaviour';
|
|
2
2
|
import Particle from '../Particle';
|
|
3
3
|
import type Model from '../Model';
|
|
4
|
-
import type TurbulencePool from '../util/turbulencePool';
|
|
5
4
|
/**
|
|
6
5
|
* Toroidal screen/world wrap: particles that fully leave an axis-aligned rectangle
|
|
7
6
|
* re-enter on the opposite side while still fully outside the view (no visible jump).
|
|
8
|
-
*
|
|
9
|
-
* {@link PositionBehaviour} (lower priority). Syncs {@link Particle.movement} with
|
|
10
|
-
* wrapped {@link Particle.x}/{@link Particle.y} (same pattern as {@link BounceBehaviour}).
|
|
11
|
-
* Do not combine with bounce on the same axis.
|
|
7
|
+
* Renderers hide sprites that do not overlap the viewport so teleports are never seen.
|
|
12
8
|
*/
|
|
13
9
|
export default class ToroidalWrapBehaviour extends Behaviour {
|
|
14
10
|
enabled: boolean;
|
|
15
11
|
priority: number;
|
|
16
12
|
wrapX: boolean;
|
|
17
13
|
wrapY: boolean;
|
|
18
|
-
/**
|
|
19
|
-
* When true, bounds come from {@link Model.toroidalCanvasBounds} (set each frame from
|
|
20
|
-
* `canvasSizeProvider` / renderer size). Manual min/max are ignored until turned off.
|
|
21
|
-
*/
|
|
22
14
|
useCanvasBounds: boolean;
|
|
23
15
|
minX: number;
|
|
24
16
|
maxX: number;
|
|
25
17
|
minY: number;
|
|
26
18
|
maxY: number;
|
|
27
|
-
/** Shrinks the effective wrap rect inward (helps large sprites). */
|
|
28
19
|
inset: number;
|
|
29
|
-
|
|
20
|
+
private _insideX;
|
|
21
|
+
private _insideY;
|
|
22
|
+
private _handledVisibilityResumeGeneration;
|
|
23
|
+
init: (particle: Particle, _model: Model, _turbulencePool: unknown) => void;
|
|
24
|
+
onParticleRemoved: (particle: Particle) => void;
|
|
30
25
|
apply: (particle: Particle, _deltaTime: number, model: Model) => void;
|
|
31
26
|
getName(): string;
|
|
32
27
|
getProps(): {
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import Behaviour from './Behaviour';
|
|
2
2
|
import BehaviourNames from './BehaviourNames';
|
|
3
|
-
import { getToroidalEdgeExtents, wrapToroidalAxis } from '../util/toroidalWrapExtents';
|
|
3
|
+
import { getToroidalEdgeExtents, resolveToroidalBounds, wrapToroidalAxis, } from '../util/toroidalWrapExtents';
|
|
4
4
|
/**
|
|
5
5
|
* Toroidal screen/world wrap: particles that fully leave an axis-aligned rectangle
|
|
6
6
|
* re-enter on the opposite side while still fully outside the view (no visible jump).
|
|
7
|
-
*
|
|
8
|
-
* {@link PositionBehaviour} (lower priority). Syncs {@link Particle.movement} with
|
|
9
|
-
* wrapped {@link Particle.x}/{@link Particle.y} (same pattern as {@link BounceBehaviour}).
|
|
10
|
-
* Do not combine with bounce on the same axis.
|
|
7
|
+
* Renderers hide sprites that do not overlap the viewport so teleports are never seen.
|
|
11
8
|
*/
|
|
12
9
|
export default class ToroidalWrapBehaviour extends Behaviour {
|
|
13
10
|
constructor() {
|
|
@@ -16,48 +13,67 @@ export default class ToroidalWrapBehaviour extends Behaviour {
|
|
|
16
13
|
this.priority = 45;
|
|
17
14
|
this.wrapX = true;
|
|
18
15
|
this.wrapY = true;
|
|
19
|
-
/**
|
|
20
|
-
* When true, bounds come from {@link Model.toroidalCanvasBounds} (set each frame from
|
|
21
|
-
* `canvasSizeProvider` / renderer size). Manual min/max are ignored until turned off.
|
|
22
|
-
*/
|
|
23
16
|
this.useCanvasBounds = false;
|
|
24
17
|
this.minX = -400;
|
|
25
18
|
this.maxX = 400;
|
|
26
19
|
this.minY = -300;
|
|
27
20
|
this.maxY = 300;
|
|
28
|
-
/** Shrinks the effective wrap rect inward (helps large sprites). */
|
|
29
21
|
this.inset = 0;
|
|
30
|
-
this.
|
|
31
|
-
|
|
22
|
+
this._insideX = new Map();
|
|
23
|
+
this._insideY = new Map();
|
|
24
|
+
this._handledVisibilityResumeGeneration = -1;
|
|
25
|
+
this.init = (particle, _model, _turbulencePool) => {
|
|
26
|
+
this._insideX.delete(particle.uid);
|
|
27
|
+
this._insideY.delete(particle.uid);
|
|
28
|
+
};
|
|
29
|
+
this.onParticleRemoved = (particle) => {
|
|
30
|
+
this._insideX.delete(particle.uid);
|
|
31
|
+
this._insideY.delete(particle.uid);
|
|
32
32
|
};
|
|
33
33
|
this.apply = (particle, _deltaTime, model) => {
|
|
34
|
+
var _a;
|
|
34
35
|
if (!this.enabled)
|
|
35
36
|
return;
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
const resumeGeneration = (_a = model.visibilityResumeGeneration) !== null && _a !== void 0 ? _a : 0;
|
|
38
|
+
if (resumeGeneration > this._handledVisibilityResumeGeneration) {
|
|
39
|
+
this._handledVisibilityResumeGeneration = resumeGeneration;
|
|
40
|
+
this._insideX.clear();
|
|
41
|
+
this._insideY.clear();
|
|
42
|
+
}
|
|
43
|
+
const bounds = resolveToroidalBounds(this, model.toroidalCanvasBounds);
|
|
44
|
+
if (!bounds)
|
|
45
|
+
return;
|
|
42
46
|
const extents = getToroidalEdgeExtents(particle);
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
const renderOffsetX = particle.x - particle.movement.x;
|
|
48
|
+
const renderOffsetY = particle.y - particle.movement.y;
|
|
49
|
+
let visualX = particle.movement.x + renderOffsetX;
|
|
50
|
+
let visualY = particle.movement.y + renderOffsetY;
|
|
45
51
|
let mx = particle.movement.x;
|
|
46
52
|
let my = particle.movement.y;
|
|
47
|
-
if (this.wrapX
|
|
48
|
-
const wrapped = wrapToroidalAxis(
|
|
49
|
-
|
|
53
|
+
if (this.wrapX) {
|
|
54
|
+
const wrapped = wrapToroidalAxis(visualX, mx, bounds.minX, bounds.maxX, extents.left, extents.right, this._insideX.get(particle.uid));
|
|
55
|
+
visualX = wrapped.position;
|
|
50
56
|
mx = wrapped.movement;
|
|
57
|
+
this._insideX.set(particle.uid, wrapped.inside);
|
|
58
|
+
if (wrapped.didWrap) {
|
|
59
|
+
;
|
|
60
|
+
particle._toroidalJustWrapped = true;
|
|
61
|
+
}
|
|
51
62
|
}
|
|
52
|
-
if (this.wrapY
|
|
53
|
-
const wrapped = wrapToroidalAxis(
|
|
54
|
-
|
|
63
|
+
if (this.wrapY) {
|
|
64
|
+
const wrapped = wrapToroidalAxis(visualY, my, bounds.minY, bounds.maxY, extents.top, extents.bottom, this._insideY.get(particle.uid));
|
|
65
|
+
visualY = wrapped.position;
|
|
55
66
|
my = wrapped.movement;
|
|
67
|
+
this._insideY.set(particle.uid, wrapped.inside);
|
|
68
|
+
if (wrapped.didWrap) {
|
|
69
|
+
;
|
|
70
|
+
particle._toroidalJustWrapped = true;
|
|
71
|
+
}
|
|
56
72
|
}
|
|
57
|
-
particle.x = x;
|
|
58
|
-
particle.y = y;
|
|
59
73
|
particle.movement.x = mx;
|
|
60
74
|
particle.movement.y = my;
|
|
75
|
+
particle.x = visualX;
|
|
76
|
+
particle.y = visualY;
|
|
61
77
|
};
|
|
62
78
|
}
|
|
63
79
|
getName() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToroidalWrapBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ToroidalWrapBehaviour.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,cAAc,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"ToroidalWrapBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/ToroidalWrapBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,7 @@ class Emitter extends eventemitter3 {
|
|
|
50
50
|
* @param {number} deltaTime - Time elapsed since the last update
|
|
51
51
|
*/
|
|
52
52
|
update(deltaTime) {
|
|
53
|
+
var _a;
|
|
53
54
|
if (!this._play)
|
|
54
55
|
return;
|
|
55
56
|
this._behaviourFrameSeq = (this._behaviourFrameSeq + 1) | 0;
|
|
@@ -57,6 +58,8 @@ class Emitter extends eventemitter3 {
|
|
|
57
58
|
this.emitParticles(deltaTime);
|
|
58
59
|
this.behaviours.update(deltaTime, this._model);
|
|
59
60
|
this.updateParticles(deltaTime);
|
|
61
|
+
const temperature = this.behaviours.getByName('TemperatureBehaviour');
|
|
62
|
+
(_a = temperature === null || temperature === void 0 ? void 0 : temperature.onParticlesUpdated) === null || _a === void 0 ? void 0 : _a.call(temperature, this._model);
|
|
60
63
|
this.duration.update(deltaTime);
|
|
61
64
|
if (this.duration.isTimeElapsed() && this.list.isEmpty()) {
|
|
62
65
|
this.stop();
|