custom-pixi-particles 8.9.0 → 8.9.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/index.d.ts +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/behaviour/MoveToPointBehaviour.d.ts +9 -1
- package/dist/lib/behaviour/MoveToPointBehaviour.js +12 -4
- package/dist/lib/behaviour/MoveToPointBehaviour.js.map +1 -1
- package/dist/lib/behaviour/SoundReactiveBehaviour.js +2 -1
- package/dist/lib/behaviour/SoundReactiveBehaviour.js.map +1 -1
- package/dist/lib/effects/DissolveEffect.d.ts +2 -2
- package/dist/lib/effects/DissolveEffect.js +47 -44
- package/dist/lib/effects/DissolveEffect.js.map +1 -1
- package/dist/lib/effects/GhostEffect.d.ts +1 -1
- package/dist/lib/effects/GhostEffect.js +15 -5
- package/dist/lib/effects/GhostEffect.js.map +1 -1
- package/dist/lib/effects/GlitchEffect.d.ts +2 -2
- package/dist/lib/effects/GlitchEffect.js +8 -15
- package/dist/lib/effects/GlitchEffect.js.map +1 -1
- package/dist/lib/effects/MagneticAssemblyEffect.d.ts +2 -2
- package/dist/lib/effects/MagneticAssemblyEffect.js +7 -13
- package/dist/lib/effects/MagneticAssemblyEffect.js.map +1 -1
- package/dist/lib/effects/MeltEffect.d.ts +8 -1
- package/dist/lib/effects/MeltEffect.js +151 -82
- package/dist/lib/effects/MeltEffect.js.map +1 -1
- package/dist/lib/effects/ShatterEffect.d.ts +2 -2
- package/dist/lib/effects/ShatterEffect.js +24 -33
- package/dist/lib/effects/ShatterEffect.js.map +1 -1
- package/dist/lib/emitter/Emitter.d.ts +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 +3 -4
- package/dist/lib/pixi/Renderer.js +14 -38
- package/dist/lib/pixi/Renderer.js.map +1 -1
- package/dist/lib/pixi/TestRenderer.d.ts +2 -3
- package/dist/lib/pixi/TestRenderer.js +12 -30
- package/dist/lib/pixi/TestRenderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,26 +7,19 @@ 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, 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 Container {
|
|
13
13
|
constructor(sourceSprite, options = {}) {
|
|
14
14
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
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
|
-
});
|
|
15
|
+
super();
|
|
25
16
|
this.sourceSprite = sourceSprite;
|
|
26
17
|
this.fragments = [];
|
|
27
18
|
this.currentTime = 0;
|
|
28
19
|
this.lastRefreshTime = 0;
|
|
29
20
|
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;
|
|
30
23
|
this.options = {
|
|
31
24
|
slices,
|
|
32
25
|
offsetRange: (_c = options.offsetRange) !== null && _c !== void 0 ? _c : 30,
|
|
@@ -42,7 +35,7 @@ export default class GlitchEffect extends ParticleContainer {
|
|
|
42
35
|
}
|
|
43
36
|
prepare() {
|
|
44
37
|
const texture = this.sourceSprite.texture;
|
|
45
|
-
if (!texture || !texture.
|
|
38
|
+
if (!texture || !texture.source)
|
|
46
39
|
return;
|
|
47
40
|
const { slices, rgbSplit } = this.options;
|
|
48
41
|
const texFrame = texture.frame;
|
|
@@ -53,7 +46,7 @@ export default class GlitchEffect extends ParticleContainer {
|
|
|
53
46
|
for (let i = 0; i < slices; i++) {
|
|
54
47
|
const yOffset = i * sliceHeight;
|
|
55
48
|
const fragRect = new Rectangle(texFrame.x, texFrame.y + yOffset, texFrame.width, sliceHeight);
|
|
56
|
-
const fragTex = new Texture(texture.
|
|
49
|
+
const fragTex = new Texture({ source: texture.source, frame: fragRect });
|
|
57
50
|
const sliceSprites = [];
|
|
58
51
|
const tints = rgbSplit ? [0xff0000, 0x00ff00, 0x0000ff] : [0xffffff];
|
|
59
52
|
tints.forEach((tint) => {
|
|
@@ -62,7 +55,7 @@ export default class GlitchEffect extends ParticleContainer {
|
|
|
62
55
|
sprite.scale.set(scale);
|
|
63
56
|
sprite.tint = tint;
|
|
64
57
|
if (rgbSplit)
|
|
65
|
-
sprite.blendMode =
|
|
58
|
+
sprite.blendMode = 'add';
|
|
66
59
|
sliceSprites.push(sprite);
|
|
67
60
|
this.addChild(sprite);
|
|
68
61
|
});
|
|
@@ -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 { Container, 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 Container {
|
|
14
14
|
private sourceSprite;
|
|
15
15
|
private fragments;
|
|
16
16
|
private isProcessing;
|
|
@@ -7,25 +7,19 @@ 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, 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 Container {
|
|
14
14
|
constructor(sourceSprite, options = {}) {
|
|
15
15
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
16
|
-
|
|
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
|
-
});
|
|
16
|
+
super();
|
|
25
17
|
this.sourceSprite = sourceSprite;
|
|
26
18
|
this.fragments = [];
|
|
27
19
|
this.isProcessing = false;
|
|
28
20
|
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;
|
|
29
23
|
this.options = {
|
|
30
24
|
gridCols: cols,
|
|
31
25
|
gridRows: rows,
|
|
@@ -43,7 +37,7 @@ export default class MagneticAssemblyEffect extends ParticleContainer {
|
|
|
43
37
|
}
|
|
44
38
|
prepare() {
|
|
45
39
|
const texture = this.sourceSprite.texture;
|
|
46
|
-
if (!texture || !texture.
|
|
40
|
+
if (!texture || !texture.source)
|
|
47
41
|
return;
|
|
48
42
|
const { gridCols, gridRows, scatterRange, mode, stagger } = this.options;
|
|
49
43
|
const texFrame = texture.frame;
|
|
@@ -58,7 +52,7 @@ export default class MagneticAssemblyEffect extends ParticleContainer {
|
|
|
58
52
|
const y1 = Math.floor(row * stepH);
|
|
59
53
|
// Create sub-texture
|
|
60
54
|
const fragRect = new Rectangle(texFrame.x + x1, texFrame.y + y1, stepW, stepH);
|
|
61
|
-
const fragTex = new Texture(texture.
|
|
55
|
+
const fragTex = new Texture({ source: texture.source, frame: fragRect });
|
|
62
56
|
const sprite = new Sprite(fragTex);
|
|
63
57
|
sprite.anchor.set(0.5);
|
|
64
58
|
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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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Container, Sprite } from 'pixi.js
|
|
1
|
+
import { Container, Sprite } from 'pixi.js';
|
|
2
2
|
export interface IMeltEffectOptions {
|
|
3
3
|
gridCols?: number;
|
|
4
4
|
gridRows?: number;
|
|
@@ -8,6 +8,7 @@ export interface IMeltEffectOptions {
|
|
|
8
8
|
duration?: number;
|
|
9
9
|
blurAmount?: number;
|
|
10
10
|
threshold?: number;
|
|
11
|
+
useCustomBlur?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export default class MeltEffect extends Container {
|
|
13
14
|
private sourceSprite;
|
|
@@ -19,10 +20,16 @@ export default class MeltEffect extends Container {
|
|
|
19
20
|
private currentTime;
|
|
20
21
|
constructor(sourceSprite: Sprite, options?: IMeltEffectOptions);
|
|
21
22
|
private prepare;
|
|
23
|
+
private updateTexelSize;
|
|
22
24
|
start(): Promise<void>;
|
|
23
25
|
melt(): Promise<void>;
|
|
24
26
|
private update;
|
|
25
27
|
private removeFragment;
|
|
26
28
|
private finish;
|
|
29
|
+
destroy(options?: boolean | {
|
|
30
|
+
children?: boolean;
|
|
31
|
+
texture?: boolean;
|
|
32
|
+
baseTexture?: boolean;
|
|
33
|
+
}): void;
|
|
27
34
|
static melt(sprite: Sprite, options?: IMeltEffectOptions): Promise<void>;
|
|
28
35
|
}
|
|
@@ -7,54 +7,101 @@ 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 { Container, Filter,
|
|
10
|
+
import { BlurFilter, Container, Filter, GlProgram, Rectangle, Sprite, Texture, Ticker } from 'pixi.js';
|
|
11
11
|
import ParticlePool from '../ParticlePool';
|
|
12
12
|
import Random from '../util/Random';
|
|
13
|
-
//
|
|
13
|
+
// Standard vertex shader for custom filters
|
|
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
|
|
14
39
|
const blurFrag = `
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
40
|
+
in vec2 vTextureCoord;
|
|
41
|
+
uniform sampler2D uTexture;
|
|
42
|
+
uniform vec2 uTexelSize;
|
|
43
|
+
uniform float uBlurRadius;
|
|
19
44
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
45
|
+
void main(void) {
|
|
46
|
+
vec4 sum = vec4(0.0);
|
|
47
|
+
float radius = uBlurRadius;
|
|
23
48
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
49
|
+
// 3×3 box blur
|
|
50
|
+
for (int x = -1; x <= 1; x++) {
|
|
51
|
+
for (int y = -1; y <= 1; y++) {
|
|
52
|
+
vec2 offset = vec2(float(x), float(y)) * uTexelSize * radius;
|
|
53
|
+
sum += texture(uTexture, vTextureCoord + offset);
|
|
30
54
|
}
|
|
31
|
-
|
|
32
|
-
gl_FragColor = sum / 9.0;
|
|
33
55
|
}
|
|
56
|
+
|
|
57
|
+
gl_FragColor = sum / 9.0;
|
|
58
|
+
}
|
|
34
59
|
`;
|
|
35
|
-
//
|
|
60
|
+
// Threshold fragment shader
|
|
36
61
|
const thresholdFrag = `
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
gl_FragColor = color;
|
|
48
|
-
}
|
|
62
|
+
in vec2 vTextureCoord;
|
|
63
|
+
uniform sampler2D uTexture;
|
|
64
|
+
uniform float threshold;
|
|
65
|
+
|
|
66
|
+
void main(void) {
|
|
67
|
+
vec4 color = texture(uTexture, vTextureCoord);
|
|
68
|
+
color.a = step(threshold, color.a);
|
|
69
|
+
gl_FragColor = color;
|
|
70
|
+
}
|
|
49
71
|
`;
|
|
50
72
|
export default class MeltEffect extends Container {
|
|
51
73
|
constructor(sourceSprite, options = {}) {
|
|
52
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
74
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
53
75
|
super();
|
|
54
76
|
this.sourceSprite = sourceSprite;
|
|
55
77
|
this.fragments = [];
|
|
56
78
|
this.isProcessing = false;
|
|
57
79
|
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
|
+
};
|
|
58
105
|
const cols = (_a = options.gridCols) !== null && _a !== void 0 ? _a : 15;
|
|
59
106
|
const rows = (_b = options.gridRows) !== null && _b !== void 0 ? _b : 15;
|
|
60
107
|
this.options = {
|
|
@@ -64,39 +111,64 @@ export default class MeltEffect extends Container {
|
|
|
64
111
|
viscosity: (_d = options.viscosity) !== null && _d !== void 0 ? _d : 0.98,
|
|
65
112
|
horizontalSpread: (_e = options.horizontalSpread) !== null && _e !== void 0 ? _e : 50,
|
|
66
113
|
duration: (_f = options.duration) !== null && _f !== void 0 ? _f : 2.5,
|
|
67
|
-
blurAmount: (_g = options.blurAmount) !== null && _g !== void 0 ? _g :
|
|
114
|
+
blurAmount: (_g = options.blurAmount) !== null && _g !== void 0 ? _g : 12,
|
|
68
115
|
threshold: (_h = options.threshold) !== null && _h !== void 0 ? _h : 0.5,
|
|
116
|
+
useCustomBlur: (_j = options.useCustomBlur) !== null && _j !== void 0 ? _j : false,
|
|
69
117
|
};
|
|
70
|
-
|
|
71
|
-
this.pContainer = new ParticleContainer(cols * rows, {
|
|
72
|
-
vertices: true,
|
|
73
|
-
position: true,
|
|
74
|
-
uvs: true,
|
|
75
|
-
alpha: true,
|
|
76
|
-
tint: true,
|
|
77
|
-
});
|
|
118
|
+
this.pContainer = new Container();
|
|
78
119
|
this.addChild(this.pContainer);
|
|
79
120
|
this.x = sourceSprite.x;
|
|
80
121
|
this.y = sourceSprite.y;
|
|
81
122
|
this.rotation = sourceSprite.rotation;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
123
|
+
this.scale.copyFrom(sourceSprite.scale);
|
|
124
|
+
// ─── Filters ────────────────────────────────────────────────
|
|
125
|
+
let blurFilter;
|
|
126
|
+
if (this.options.useCustomBlur) {
|
|
127
|
+
blurFilter = new Filter({
|
|
128
|
+
glProgram: new GlProgram({
|
|
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
|
+
},
|
|
88
158
|
});
|
|
89
159
|
this.pContainer.filters = [blurFilter, thresholdFilter];
|
|
90
160
|
}
|
|
91
161
|
prepare() {
|
|
92
162
|
const texture = this.sourceSprite.texture;
|
|
93
|
-
|
|
163
|
+
// v8: no .valid property anymore; check source existence + basic validity
|
|
164
|
+
if (!texture || !texture.source)
|
|
94
165
|
return;
|
|
95
166
|
const { gridCols, gridRows, horizontalSpread } = this.options;
|
|
96
167
|
const texFrame = texture.frame;
|
|
97
168
|
const stepW = texFrame.width / gridCols;
|
|
98
169
|
const stepH = texFrame.height / gridRows;
|
|
99
|
-
const
|
|
170
|
+
const scaleX = this.sourceSprite.scale.x;
|
|
171
|
+
const scaleY = this.sourceSprite.scale.y;
|
|
100
172
|
const anchorX = this.sourceSprite.anchor.x;
|
|
101
173
|
const anchorY = this.sourceSprite.anchor.y;
|
|
102
174
|
for (let row = 0; row < gridRows; row++) {
|
|
@@ -104,23 +176,43 @@ export default class MeltEffect extends Container {
|
|
|
104
176
|
const x1 = Math.floor(col * stepW);
|
|
105
177
|
const y1 = Math.floor(row * stepH);
|
|
106
178
|
const fragRect = new Rectangle(texFrame.x + x1, texFrame.y + y1, stepW, stepH);
|
|
107
|
-
const fragTex = new Texture(texture.
|
|
179
|
+
const fragTex = new Texture({ source: texture.source, frame: fragRect });
|
|
108
180
|
const sprite = new Sprite(fragTex);
|
|
109
181
|
sprite.anchor.set(0.5);
|
|
110
|
-
sprite.scale.set(
|
|
111
|
-
const lx = (x1 - texFrame.width * anchorX + stepW / 2) *
|
|
112
|
-
const ly = (y1 - texFrame.height * anchorY + stepH / 2) *
|
|
182
|
+
sprite.scale.set(scaleX, scaleY);
|
|
183
|
+
const lx = (x1 - texFrame.width * anchorX + stepW / 2) * scaleX;
|
|
184
|
+
const ly = (y1 - texFrame.height * anchorY + stepH / 2) * scaleY;
|
|
113
185
|
const p = ParticlePool.global.pop();
|
|
114
186
|
p.reset();
|
|
115
187
|
p.x = lx;
|
|
116
188
|
p.y = ly;
|
|
117
|
-
// High gravity, low horizontal velocity
|
|
118
189
|
p.velocity.set(Random.uniform(-horizontalSpread, horizontalSpread), Random.uniform(0, 50));
|
|
119
190
|
this.fragments.push({ sprite, particle: p });
|
|
120
191
|
this.pContainer.addChild(sprite);
|
|
121
192
|
}
|
|
122
193
|
}
|
|
123
194
|
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
|
+
}
|
|
124
216
|
}
|
|
125
217
|
start() {
|
|
126
218
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -137,37 +229,9 @@ export default class MeltEffect extends Container {
|
|
|
137
229
|
return this.start();
|
|
138
230
|
});
|
|
139
231
|
}
|
|
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
|
-
}
|
|
167
232
|
removeFragment(index) {
|
|
168
233
|
const f = this.fragments[index];
|
|
169
|
-
|
|
170
|
-
ParticlePool.global.push(f.particle);
|
|
234
|
+
ParticlePool.global.push(f.particle);
|
|
171
235
|
this.pContainer.removeChild(f.sprite);
|
|
172
236
|
f.sprite.destroy();
|
|
173
237
|
this.fragments.splice(index, 1);
|
|
@@ -178,6 +242,10 @@ export default class MeltEffect extends Container {
|
|
|
178
242
|
Ticker.shared.remove(this.update, this);
|
|
179
243
|
(_a = this.meltResolve) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
180
244
|
}
|
|
245
|
+
destroy(options) {
|
|
246
|
+
Ticker.shared.remove(this.update, this);
|
|
247
|
+
super.destroy(options);
|
|
248
|
+
}
|
|
181
249
|
static melt(sprite_1) {
|
|
182
250
|
return __awaiter(this, arguments, void 0, function* (sprite, options = {}) {
|
|
183
251
|
if (!sprite.parent)
|
|
@@ -187,6 +255,7 @@ export default class MeltEffect extends Container {
|
|
|
187
255
|
sprite.parent.addChildAt(effect, index);
|
|
188
256
|
yield effect.start();
|
|
189
257
|
effect.destroy({ children: true });
|
|
258
|
+
// sprite.destroy(); // Uncomment if you want to remove the original sprite too
|
|
190
259
|
});
|
|
191
260
|
}
|
|
192
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeltEffect.js","sourceRoot":"","sources":["../../../src/lib/effects/MeltEffect.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,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 { Container, 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 Container {
|
|
25
25
|
private sourceSprite;
|
|
26
26
|
private fragments;
|
|
27
27
|
private isExploded;
|