custom-pixi-particles 7.6.4 → 7.6.5
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/behaviour/SpawnBehaviour.d.ts +3 -5
- package/dist/lib/behaviour/SpawnBehaviour.js +34 -50
- package/dist/lib/behaviour/SpawnBehaviour.js.map +1 -1
- package/dist/lib/effects/DissolveEffect.d.ts +3 -2
- package/dist/lib/effects/DissolveEffect.js +49 -47
- package/dist/lib/effects/DissolveEffect.js.map +1 -1
- package/dist/lib/effects/GhostEffect.js +3 -5
- package/dist/lib/effects/GhostEffect.js.map +1 -1
- package/dist/lib/effects/GlitchEffect.d.ts +3 -2
- package/dist/lib/effects/GlitchEffect.js +20 -8
- package/dist/lib/effects/GlitchEffect.js.map +1 -1
- package/dist/lib/effects/MagneticAssemblyEffect.d.ts +2 -2
- package/dist/lib/effects/MagneticAssemblyEffect.js +13 -7
- package/dist/lib/effects/MagneticAssemblyEffect.js.map +1 -1
- package/dist/lib/effects/MeltEffect.d.ts +1 -7
- package/dist/lib/effects/MeltEffect.js +87 -151
- package/dist/lib/effects/MeltEffect.js.map +1 -1
- package/dist/lib/effects/ShatterEffect.d.ts +2 -2
- package/dist/lib/effects/ShatterEffect.js +33 -24
- package/dist/lib/effects/ShatterEffect.js.map +1 -1
- package/dist/lib/emitter/Emitter.js +2 -2
- package/dist/lib/emitter/Emitter.js.map +1 -1
- package/dist/lib/pixi/Renderer.d.ts +5 -4
- package/dist/lib/pixi/Renderer.js +44 -14
- package/dist/lib/pixi/Renderer.js.map +1 -1
- package/dist/lib/pixi/TestRenderer.d.ts +4 -3
- package/dist/lib/pixi/TestRenderer.js +35 -11
- package/dist/lib/pixi/TestRenderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParticleContainer, Sprite } from 'pixi.js';
|
|
2
2
|
export interface IGlitchEffectOptions {
|
|
3
3
|
slices?: number;
|
|
4
4
|
offsetRange?: number;
|
|
@@ -8,7 +8,7 @@ export interface IGlitchEffectOptions {
|
|
|
8
8
|
duration?: number;
|
|
9
9
|
refreshRate?: number;
|
|
10
10
|
}
|
|
11
|
-
export default class GlitchEffect extends
|
|
11
|
+
export default class GlitchEffect extends ParticleContainer {
|
|
12
12
|
private sourceSprite;
|
|
13
13
|
private fragments;
|
|
14
14
|
private options;
|
|
@@ -19,6 +19,7 @@ export default class GlitchEffect extends Container {
|
|
|
19
19
|
constructor(sourceSprite: Sprite, options?: IGlitchEffectOptions);
|
|
20
20
|
private prepare;
|
|
21
21
|
play(): Promise<void>;
|
|
22
|
+
glitch(): Promise<void>;
|
|
22
23
|
private update;
|
|
23
24
|
private finish;
|
|
24
25
|
static glitch(sprite: Sprite, options?: IGlitchEffectOptions): Promise<void>;
|
|
@@ -7,19 +7,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { BLEND_MODES, ParticleContainer, Rectangle, Sprite, Texture, Ticker } from 'pixi.js';
|
|
11
11
|
import ParticlePool from '../ParticlePool';
|
|
12
|
-
export default class GlitchEffect extends
|
|
12
|
+
export default class GlitchEffect extends ParticleContainer {
|
|
13
13
|
constructor(sourceSprite, options = {}) {
|
|
14
14
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
15
|
-
|
|
15
|
+
const slices = (_a = options.slices) !== null && _a !== void 0 ? _a : 15;
|
|
16
|
+
const isRGB = (_b = options.rgbSplit) !== null && _b !== void 0 ? _b : true;
|
|
17
|
+
// Max particles: slices * 3 (if RGB)
|
|
18
|
+
super(slices * (isRGB ? 3 : 1), {
|
|
19
|
+
vertices: true,
|
|
20
|
+
position: true,
|
|
21
|
+
uvs: true,
|
|
22
|
+
alpha: true,
|
|
23
|
+
tint: true,
|
|
24
|
+
});
|
|
16
25
|
this.sourceSprite = sourceSprite;
|
|
17
26
|
this.fragments = [];
|
|
18
27
|
this.currentTime = 0;
|
|
19
28
|
this.lastRefreshTime = 0;
|
|
20
29
|
this.isProcessing = false;
|
|
21
|
-
const slices = (_a = options.slices) !== null && _a !== void 0 ? _a : 15;
|
|
22
|
-
const isRGB = (_b = options.rgbSplit) !== null && _b !== void 0 ? _b : true;
|
|
23
30
|
this.options = {
|
|
24
31
|
slices,
|
|
25
32
|
offsetRange: (_c = options.offsetRange) !== null && _c !== void 0 ? _c : 30,
|
|
@@ -35,7 +42,7 @@ export default class GlitchEffect extends Container {
|
|
|
35
42
|
}
|
|
36
43
|
prepare() {
|
|
37
44
|
const texture = this.sourceSprite.texture;
|
|
38
|
-
if (!texture || !texture.
|
|
45
|
+
if (!texture || !texture.valid)
|
|
39
46
|
return;
|
|
40
47
|
const { slices, rgbSplit } = this.options;
|
|
41
48
|
const texFrame = texture.frame;
|
|
@@ -46,7 +53,7 @@ export default class GlitchEffect extends Container {
|
|
|
46
53
|
for (let i = 0; i < slices; i++) {
|
|
47
54
|
const yOffset = i * sliceHeight;
|
|
48
55
|
const fragRect = new Rectangle(texFrame.x, texFrame.y + yOffset, texFrame.width, sliceHeight);
|
|
49
|
-
const fragTex = new Texture(
|
|
56
|
+
const fragTex = new Texture(texture.baseTexture, fragRect);
|
|
50
57
|
const sliceSprites = [];
|
|
51
58
|
const tints = rgbSplit ? [0xff0000, 0x00ff00, 0x0000ff] : [0xffffff];
|
|
52
59
|
tints.forEach((tint) => {
|
|
@@ -55,7 +62,7 @@ export default class GlitchEffect extends Container {
|
|
|
55
62
|
sprite.scale.set(scale);
|
|
56
63
|
sprite.tint = tint;
|
|
57
64
|
if (rgbSplit)
|
|
58
|
-
sprite.blendMode =
|
|
65
|
+
sprite.blendMode = BLEND_MODES.ADD;
|
|
59
66
|
sliceSprites.push(sprite);
|
|
60
67
|
this.addChild(sprite);
|
|
61
68
|
});
|
|
@@ -79,6 +86,11 @@ export default class GlitchEffect extends Container {
|
|
|
79
86
|
});
|
|
80
87
|
});
|
|
81
88
|
}
|
|
89
|
+
glitch() {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
return this.play();
|
|
92
|
+
});
|
|
93
|
+
}
|
|
82
94
|
update() {
|
|
83
95
|
if (!this.isProcessing)
|
|
84
96
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlitchEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/GlitchEffect.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"GlitchEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/GlitchEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParticleContainer, Sprite } from 'pixi.js';
|
|
2
2
|
export type AssemblyMode = 'random-scatter' | 'from-center' | 'off-screen' | 'vortex';
|
|
3
3
|
export interface IMagneticAssemblyOptions {
|
|
4
4
|
gridCols?: number;
|
|
@@ -10,7 +10,7 @@ export interface IMagneticAssemblyOptions {
|
|
|
10
10
|
mode?: AssemblyMode;
|
|
11
11
|
startAlpha?: number;
|
|
12
12
|
}
|
|
13
|
-
export default class MagneticAssemblyEffect extends
|
|
13
|
+
export default class MagneticAssemblyEffect extends ParticleContainer {
|
|
14
14
|
private sourceSprite;
|
|
15
15
|
private fragments;
|
|
16
16
|
private isProcessing;
|
|
@@ -7,19 +7,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { ParticleContainer, Rectangle, Sprite, Texture, Ticker } from 'pixi.js';
|
|
11
11
|
import ParticlePool from '../ParticlePool';
|
|
12
12
|
import Random from '../util/Random';
|
|
13
|
-
export default class MagneticAssemblyEffect extends
|
|
13
|
+
export default class MagneticAssemblyEffect extends ParticleContainer {
|
|
14
14
|
constructor(sourceSprite, options = {}) {
|
|
15
15
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
16
|
-
|
|
16
|
+
const cols = (_a = options.gridCols) !== null && _a !== void 0 ? _a : 10;
|
|
17
|
+
const rows = (_b = options.gridRows) !== null && _b !== void 0 ? _b : 10;
|
|
18
|
+
super(cols * rows, {
|
|
19
|
+
vertices: true,
|
|
20
|
+
position: true,
|
|
21
|
+
uvs: true,
|
|
22
|
+
alpha: true,
|
|
23
|
+
rotation: true,
|
|
24
|
+
});
|
|
17
25
|
this.sourceSprite = sourceSprite;
|
|
18
26
|
this.fragments = [];
|
|
19
27
|
this.isProcessing = false;
|
|
20
28
|
this.currentTime = 0;
|
|
21
|
-
const cols = (_a = options.gridCols) !== null && _a !== void 0 ? _a : 10;
|
|
22
|
-
const rows = (_b = options.gridRows) !== null && _b !== void 0 ? _b : 10;
|
|
23
29
|
this.options = {
|
|
24
30
|
gridCols: cols,
|
|
25
31
|
gridRows: rows,
|
|
@@ -37,7 +43,7 @@ export default class MagneticAssemblyEffect extends Container {
|
|
|
37
43
|
}
|
|
38
44
|
prepare() {
|
|
39
45
|
const texture = this.sourceSprite.texture;
|
|
40
|
-
if (!texture || !texture.
|
|
46
|
+
if (!texture || !texture.valid)
|
|
41
47
|
return;
|
|
42
48
|
const { gridCols, gridRows, scatterRange, mode, stagger } = this.options;
|
|
43
49
|
const texFrame = texture.frame;
|
|
@@ -52,7 +58,7 @@ export default class MagneticAssemblyEffect extends Container {
|
|
|
52
58
|
const y1 = Math.floor(row * stepH);
|
|
53
59
|
// Create sub-texture
|
|
54
60
|
const fragRect = new Rectangle(texFrame.x + x1, texFrame.y + y1, stepW, stepH);
|
|
55
|
-
const fragTex = new Texture(
|
|
61
|
+
const fragTex = new Texture(texture.baseTexture, fragRect);
|
|
56
62
|
const sprite = new Sprite(fragTex);
|
|
57
63
|
sprite.anchor.set(0.5);
|
|
58
64
|
sprite.scale.set(scale);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MagneticAssemblyEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/MagneticAssemblyEffect.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MagneticAssemblyEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/MagneticAssemblyEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ export interface IMeltEffectOptions {
|
|
|
8
8
|
duration?: number;
|
|
9
9
|
blurAmount?: number;
|
|
10
10
|
threshold?: number;
|
|
11
|
-
useCustomBlur?: boolean;
|
|
12
11
|
}
|
|
13
12
|
export default class MeltEffect extends Container {
|
|
14
13
|
private sourceSprite;
|
|
@@ -20,15 +19,10 @@ export default class MeltEffect extends Container {
|
|
|
20
19
|
private currentTime;
|
|
21
20
|
constructor(sourceSprite: Sprite, options?: IMeltEffectOptions);
|
|
22
21
|
private prepare;
|
|
23
|
-
private updateTexelSize;
|
|
24
22
|
start(): Promise<void>;
|
|
23
|
+
melt(): Promise<void>;
|
|
25
24
|
private update;
|
|
26
25
|
private removeFragment;
|
|
27
26
|
private finish;
|
|
28
|
-
destroy(options?: boolean | {
|
|
29
|
-
children?: boolean;
|
|
30
|
-
texture?: boolean;
|
|
31
|
-
baseTexture?: boolean;
|
|
32
|
-
}): void;
|
|
33
27
|
static melt(sprite: Sprite, options?: IMeltEffectOptions): Promise<void>;
|
|
34
28
|
}
|
|
@@ -7,101 +7,54 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { Container, Filter, ParticleContainer, Rectangle, Sprite, Texture, Ticker } from 'pixi.js';
|
|
11
11
|
import ParticlePool from '../ParticlePool';
|
|
12
12
|
import Random from '../util/Random';
|
|
13
|
-
//
|
|
14
|
-
const standardVertex = `
|
|
15
|
-
in vec2 aPosition;
|
|
16
|
-
out vec2 vTextureCoord;
|
|
17
|
-
|
|
18
|
-
uniform vec4 uInputSize;
|
|
19
|
-
uniform vec4 uOutputFrame;
|
|
20
|
-
uniform vec4 uOutputTexture;
|
|
21
|
-
|
|
22
|
-
vec4 filterVertexPosition(void) {
|
|
23
|
-
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
|
|
24
|
-
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
|
|
25
|
-
position.y = (position.y * (2.0 / uOutputTexture.z / uOutputTexture.y)) - uOutputTexture.z;
|
|
26
|
-
return vec4(position, 0.0, 1.0);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
vec2 filterTextureCoord(void) {
|
|
30
|
-
return aPosition * (uOutputFrame.zw * uInputSize.zw);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
void main(void) {
|
|
34
|
-
gl_Position = filterVertexPosition();
|
|
35
|
-
vTextureCoord = filterTextureCoord();
|
|
36
|
-
}
|
|
37
|
-
`;
|
|
38
|
-
// Custom blur (fallback) – uses texelSize scaling
|
|
13
|
+
// Simple blur shader (box blur)
|
|
39
14
|
const blurFrag = `
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
uniform
|
|
43
|
-
uniform float
|
|
15
|
+
precision mediump float;
|
|
16
|
+
varying vec2 vTextureCoord;
|
|
17
|
+
uniform sampler2D uSampler;
|
|
18
|
+
uniform float uBlur;
|
|
44
19
|
|
|
45
|
-
void main(void) {
|
|
46
|
-
|
|
47
|
-
|
|
20
|
+
void main(void) {
|
|
21
|
+
vec4 sum = vec4(0.0);
|
|
22
|
+
float blurAmount = uBlur * 0.01; // Scale blur amount
|
|
48
23
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
24
|
+
// Sample 9 pixels in a 3x3 grid
|
|
25
|
+
for(int i = -1; i <= 1; i++) {
|
|
26
|
+
for(int j = -1; j <= 1; j++) {
|
|
27
|
+
vec2 offset = vec2(float(i), float(j)) * blurAmount;
|
|
28
|
+
sum += texture2D(uSampler, vTextureCoord + offset);
|
|
29
|
+
}
|
|
54
30
|
}
|
|
55
|
-
}
|
|
56
31
|
|
|
57
|
-
|
|
58
|
-
}
|
|
32
|
+
gl_FragColor = sum / 9.0;
|
|
33
|
+
}
|
|
59
34
|
`;
|
|
60
|
-
//
|
|
35
|
+
// Simple threshold shader to create the "Metaball" effect
|
|
61
36
|
const thresholdFrag = `
|
|
62
|
-
|
|
63
|
-
uniform sampler2D
|
|
64
|
-
uniform float threshold;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
37
|
+
varying vec2 vTextureCoord;
|
|
38
|
+
uniform sampler2D uSampler;
|
|
39
|
+
uniform float threshold;
|
|
40
|
+
void main(void) {
|
|
41
|
+
vec4 color = texture2D(uSampler, vTextureCoord);
|
|
42
|
+
if (color.a > threshold) {
|
|
43
|
+
color.a = 1.0;
|
|
44
|
+
} else {
|
|
45
|
+
color.a = 0.0;
|
|
46
|
+
}
|
|
47
|
+
gl_FragColor = color;
|
|
48
|
+
}
|
|
71
49
|
`;
|
|
72
50
|
export default class MeltEffect extends Container {
|
|
73
51
|
constructor(sourceSprite, options = {}) {
|
|
74
|
-
var _a, _b, _c, _d, _e, _f, _g, _h
|
|
52
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
75
53
|
super();
|
|
76
54
|
this.sourceSprite = sourceSprite;
|
|
77
55
|
this.fragments = [];
|
|
78
56
|
this.isProcessing = false;
|
|
79
57
|
this.currentTime = 0;
|
|
80
|
-
this.update = () => {
|
|
81
|
-
if (!this.isProcessing)
|
|
82
|
-
return;
|
|
83
|
-
const dt = Ticker.shared.deltaMS / 1000;
|
|
84
|
-
this.currentTime += dt;
|
|
85
|
-
for (let i = this.fragments.length - 1; i >= 0; i--) {
|
|
86
|
-
const f = this.fragments[i];
|
|
87
|
-
const p = f.particle;
|
|
88
|
-
p.velocity.y += this.options.gravity * dt;
|
|
89
|
-
p.velocity.x *= this.options.viscosity;
|
|
90
|
-
p.velocity.y *= this.options.viscosity;
|
|
91
|
-
p.x += p.velocity.x * dt;
|
|
92
|
-
p.y += p.velocity.y * dt;
|
|
93
|
-
f.sprite.x = p.x;
|
|
94
|
-
f.sprite.y = p.y;
|
|
95
|
-
const lifeRatio = Math.max(0, 1 - this.currentTime / this.options.duration);
|
|
96
|
-
f.sprite.scale.set(this.sourceSprite.scale.x * lifeRatio, this.sourceSprite.scale.y * lifeRatio);
|
|
97
|
-
if (lifeRatio <= 0) {
|
|
98
|
-
this.removeFragment(i);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (this.fragments.length === 0) {
|
|
102
|
-
this.finish();
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
58
|
const cols = (_a = options.gridCols) !== null && _a !== void 0 ? _a : 15;
|
|
106
59
|
const rows = (_b = options.gridRows) !== null && _b !== void 0 ? _b : 15;
|
|
107
60
|
this.options = {
|
|
@@ -111,64 +64,39 @@ export default class MeltEffect extends Container {
|
|
|
111
64
|
viscosity: (_d = options.viscosity) !== null && _d !== void 0 ? _d : 0.98,
|
|
112
65
|
horizontalSpread: (_e = options.horizontalSpread) !== null && _e !== void 0 ? _e : 50,
|
|
113
66
|
duration: (_f = options.duration) !== null && _f !== void 0 ? _f : 2.5,
|
|
114
|
-
blurAmount: (_g = options.blurAmount) !== null && _g !== void 0 ? _g :
|
|
67
|
+
blurAmount: (_g = options.blurAmount) !== null && _g !== void 0 ? _g : 6,
|
|
115
68
|
threshold: (_h = options.threshold) !== null && _h !== void 0 ? _h : 0.5,
|
|
116
|
-
useCustomBlur: (_j = options.useCustomBlur) !== null && _j !== void 0 ? _j : false,
|
|
117
69
|
};
|
|
118
|
-
|
|
70
|
+
// We use a internal ParticleContainer so we can apply filters to it
|
|
71
|
+
this.pContainer = new ParticleContainer(cols * rows, {
|
|
72
|
+
vertices: true,
|
|
73
|
+
position: true,
|
|
74
|
+
uvs: true,
|
|
75
|
+
alpha: true,
|
|
76
|
+
tint: true,
|
|
77
|
+
});
|
|
119
78
|
this.addChild(this.pContainer);
|
|
120
79
|
this.x = sourceSprite.x;
|
|
121
80
|
this.y = sourceSprite.y;
|
|
122
81
|
this.rotation = sourceSprite.rotation;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
vertex: standardVertex,
|
|
130
|
-
fragment: blurFrag,
|
|
131
|
-
}),
|
|
132
|
-
resources: {
|
|
133
|
-
blurUniforms: {
|
|
134
|
-
uBlurRadius: { value: this.options.blurAmount, type: 'f32' },
|
|
135
|
-
uTexelSize: { value: new Float32Array([1 / 256, 1 / 256]), type: 'vec2<f32>' },
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
// Recommended: built-in BlurFilter (isotropic blur on both axes)
|
|
142
|
-
blurFilter = new BlurFilter({
|
|
143
|
-
strength: this.options.blurAmount,
|
|
144
|
-
quality: 4, // 2–6 (higher = better quality, slower)
|
|
145
|
-
kernelSize: 5, // 5,7,9,11,13,15
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
const thresholdFilter = new Filter({
|
|
149
|
-
glProgram: new GlProgram({
|
|
150
|
-
vertex: standardVertex,
|
|
151
|
-
fragment: thresholdFrag,
|
|
152
|
-
}),
|
|
153
|
-
resources: {
|
|
154
|
-
thresholdUniforms: {
|
|
155
|
-
threshold: { value: this.options.threshold, type: 'f32' },
|
|
156
|
-
},
|
|
157
|
-
},
|
|
82
|
+
// Apply the Metaball Hook: Blur + Threshold
|
|
83
|
+
const blurFilter = new Filter(undefined, blurFrag, {
|
|
84
|
+
uBlur: this.options.blurAmount,
|
|
85
|
+
});
|
|
86
|
+
const thresholdFilter = new Filter(undefined, thresholdFrag, {
|
|
87
|
+
threshold: this.options.threshold,
|
|
158
88
|
});
|
|
159
89
|
this.pContainer.filters = [blurFilter, thresholdFilter];
|
|
160
90
|
}
|
|
161
91
|
prepare() {
|
|
162
92
|
const texture = this.sourceSprite.texture;
|
|
163
|
-
|
|
164
|
-
if (!texture || !texture.source)
|
|
93
|
+
if (!texture || !texture.valid)
|
|
165
94
|
return;
|
|
166
95
|
const { gridCols, gridRows, horizontalSpread } = this.options;
|
|
167
96
|
const texFrame = texture.frame;
|
|
168
97
|
const stepW = texFrame.width / gridCols;
|
|
169
98
|
const stepH = texFrame.height / gridRows;
|
|
170
|
-
const
|
|
171
|
-
const scaleY = this.sourceSprite.scale.y;
|
|
99
|
+
const scale = this.sourceSprite.scale.x;
|
|
172
100
|
const anchorX = this.sourceSprite.anchor.x;
|
|
173
101
|
const anchorY = this.sourceSprite.anchor.y;
|
|
174
102
|
for (let row = 0; row < gridRows; row++) {
|
|
@@ -176,43 +104,23 @@ export default class MeltEffect extends Container {
|
|
|
176
104
|
const x1 = Math.floor(col * stepW);
|
|
177
105
|
const y1 = Math.floor(row * stepH);
|
|
178
106
|
const fragRect = new Rectangle(texFrame.x + x1, texFrame.y + y1, stepW, stepH);
|
|
179
|
-
const fragTex = new Texture(
|
|
107
|
+
const fragTex = new Texture(texture.baseTexture, fragRect);
|
|
180
108
|
const sprite = new Sprite(fragTex);
|
|
181
109
|
sprite.anchor.set(0.5);
|
|
182
|
-
sprite.scale.set(
|
|
183
|
-
const lx = (x1 - texFrame.width * anchorX + stepW / 2) *
|
|
184
|
-
const ly = (y1 - texFrame.height * anchorY + stepH / 2) *
|
|
110
|
+
sprite.scale.set(scale);
|
|
111
|
+
const lx = (x1 - texFrame.width * anchorX + stepW / 2) * scale;
|
|
112
|
+
const ly = (y1 - texFrame.height * anchorY + stepH / 2) * scale;
|
|
185
113
|
const p = ParticlePool.global.pop();
|
|
186
114
|
p.reset();
|
|
187
115
|
p.x = lx;
|
|
188
116
|
p.y = ly;
|
|
117
|
+
// High gravity, low horizontal velocity
|
|
189
118
|
p.velocity.set(Random.uniform(-horizontalSpread, horizontalSpread), Random.uniform(0, 50));
|
|
190
119
|
this.fragments.push({ sprite, particle: p });
|
|
191
120
|
this.pContainer.addChild(sprite);
|
|
192
121
|
}
|
|
193
122
|
}
|
|
194
123
|
this.sourceSprite.visible = false;
|
|
195
|
-
if (this.options.useCustomBlur) {
|
|
196
|
-
this.updateTexelSize();
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
updateTexelSize() {
|
|
200
|
-
var _a, _b;
|
|
201
|
-
if (!this.options.useCustomBlur)
|
|
202
|
-
return;
|
|
203
|
-
// Approximate texel size based on source sprite dimensions
|
|
204
|
-
const w = this.sourceSprite.width * Math.abs(this.sourceSprite.scale.x) || 256;
|
|
205
|
-
const h = this.sourceSprite.height * Math.abs(this.sourceSprite.scale.y) || 256;
|
|
206
|
-
const texelX = 1.0 / w;
|
|
207
|
-
const texelY = 1.0 / h;
|
|
208
|
-
const blur = (_a = this.pContainer.filters) === null || _a === void 0 ? void 0 : _a[0];
|
|
209
|
-
if (blur && 'blurUniforms' in (blur.resources || {})) {
|
|
210
|
-
const uniforms = blur.resources.blurUniforms;
|
|
211
|
-
if ((_b = uniforms === null || uniforms === void 0 ? void 0 : uniforms.uTexelSize) === null || _b === void 0 ? void 0 : _b.value) {
|
|
212
|
-
uniforms.uTexelSize.value[0] = texelX;
|
|
213
|
-
uniforms.uTexelSize.value[1] = texelY;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
124
|
}
|
|
217
125
|
start() {
|
|
218
126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -224,9 +132,42 @@ export default class MeltEffect extends Container {
|
|
|
224
132
|
});
|
|
225
133
|
});
|
|
226
134
|
}
|
|
135
|
+
melt() {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
return this.start();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
update() {
|
|
141
|
+
if (!this.isProcessing)
|
|
142
|
+
return;
|
|
143
|
+
const dt = Ticker.shared.deltaMS / 1000;
|
|
144
|
+
this.currentTime += dt;
|
|
145
|
+
for (let i = this.fragments.length - 1; i >= 0; i--) {
|
|
146
|
+
const f = this.fragments[i];
|
|
147
|
+
const p = f.particle;
|
|
148
|
+
// Gravity and Viscosity
|
|
149
|
+
p.velocity.y += this.options.gravity * dt;
|
|
150
|
+
p.velocity.x *= this.options.viscosity;
|
|
151
|
+
p.velocity.y *= this.options.viscosity;
|
|
152
|
+
p.x += p.velocity.x * dt;
|
|
153
|
+
p.y += p.velocity.y * dt;
|
|
154
|
+
f.sprite.x = p.x;
|
|
155
|
+
f.sprite.y = p.y;
|
|
156
|
+
// Gradually shrink fragments so the liquid "dries up"
|
|
157
|
+
const lifeRatio = 1 - this.currentTime / this.options.duration;
|
|
158
|
+
f.sprite.scale.set(this.sourceSprite.scale.x * lifeRatio);
|
|
159
|
+
if (lifeRatio <= 0) {
|
|
160
|
+
this.removeFragment(i);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (this.fragments.length === 0) {
|
|
164
|
+
this.finish();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
227
167
|
removeFragment(index) {
|
|
228
168
|
const f = this.fragments[index];
|
|
229
|
-
|
|
169
|
+
if (f.particle)
|
|
170
|
+
ParticlePool.global.push(f.particle);
|
|
230
171
|
this.pContainer.removeChild(f.sprite);
|
|
231
172
|
f.sprite.destroy();
|
|
232
173
|
this.fragments.splice(index, 1);
|
|
@@ -237,10 +178,6 @@ export default class MeltEffect extends Container {
|
|
|
237
178
|
Ticker.shared.remove(this.update, this);
|
|
238
179
|
(_a = this.meltResolve) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
239
180
|
}
|
|
240
|
-
destroy(options) {
|
|
241
|
-
Ticker.shared.remove(this.update, this);
|
|
242
|
-
super.destroy(options);
|
|
243
|
-
}
|
|
244
181
|
static melt(sprite_1) {
|
|
245
182
|
return __awaiter(this, arguments, void 0, function* (sprite, options = {}) {
|
|
246
183
|
if (!sprite.parent)
|
|
@@ -250,7 +187,6 @@ export default class MeltEffect extends Container {
|
|
|
250
187
|
sprite.parent.addChildAt(effect, index);
|
|
251
188
|
yield effect.start();
|
|
252
189
|
effect.destroy({ children: true });
|
|
253
|
-
// sprite.destroy(); // Uncomment if you want to remove the original sprite too
|
|
254
190
|
});
|
|
255
191
|
}
|
|
256
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeltEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/MeltEffect.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MeltEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/MeltEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParticleContainer, Sprite } from 'pixi.js';
|
|
2
2
|
export type ShatterMode = 'radial' | 'directional' | 'swirl';
|
|
3
3
|
export interface IShatterEffectOptions {
|
|
4
4
|
gridCols?: number;
|
|
@@ -21,7 +21,7 @@ export interface IShatterEffectOptions {
|
|
|
21
21
|
enableRotation?: boolean;
|
|
22
22
|
rotationStrength?: number;
|
|
23
23
|
}
|
|
24
|
-
export default class ShatterEffect extends
|
|
24
|
+
export default class ShatterEffect extends ParticleContainer {
|
|
25
25
|
private sourceSprite;
|
|
26
26
|
private fragments;
|
|
27
27
|
private isExploded;
|