@flighthq/particles-formats 0.1.0
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/detect.d.ts +18 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +75 -0
- package/dist/detect.js.map +1 -0
- package/dist/formatRegistry.d.ts +60 -0
- package/dist/formatRegistry.d.ts.map +1 -0
- package/dist/formatRegistry.js +75 -0
- package/dist/formatRegistry.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/libgdxParse.d.ts +27 -0
- package/dist/libgdxParse.d.ts.map +1 -0
- package/dist/libgdxParse.js +316 -0
- package/dist/libgdxParse.js.map +1 -0
- package/dist/libgdxSchema.d.ts +68 -0
- package/dist/libgdxSchema.d.ts.map +1 -0
- package/dist/libgdxSchema.js +12 -0
- package/dist/libgdxSchema.js.map +1 -0
- package/dist/libgdxSerialize.d.ts +17 -0
- package/dist/libgdxSerialize.d.ts.map +1 -0
- package/dist/libgdxSerialize.js +295 -0
- package/dist/libgdxSerialize.js.map +1 -0
- package/dist/parseParticleConfig.d.ts +34 -0
- package/dist/parseParticleConfig.d.ts.map +1 -0
- package/dist/parseParticleConfig.js +96 -0
- package/dist/parseParticleConfig.js.map +1 -0
- package/dist/particleDesignerParse.d.ts +23 -0
- package/dist/particleDesignerParse.d.ts.map +1 -0
- package/dist/particleDesignerParse.js +214 -0
- package/dist/particleDesignerParse.js.map +1 -0
- package/dist/particleDesignerSchema.d.ts +51 -0
- package/dist/particleDesignerSchema.d.ts.map +1 -0
- package/dist/particleDesignerSchema.js +5 -0
- package/dist/particleDesignerSchema.js.map +1 -0
- package/dist/particleDesignerSerialize.d.ts +22 -0
- package/dist/particleDesignerSerialize.d.ts.map +1 -0
- package/dist/particleDesignerSerialize.js +209 -0
- package/dist/particleDesignerSerialize.js.map +1 -0
- package/dist/pixiParse.d.ts +18 -0
- package/dist/pixiParse.d.ts.map +1 -0
- package/dist/pixiParse.js +173 -0
- package/dist/pixiParse.js.map +1 -0
- package/dist/serializeResult.d.ts +15 -0
- package/dist/serializeResult.d.ts.map +1 -0
- package/dist/serializeResult.js +2 -0
- package/dist/serializeResult.js.map +1 -0
- package/dist/spineParse.d.ts +18 -0
- package/dist/spineParse.d.ts.map +1 -0
- package/dist/spineParse.js +263 -0
- package/dist/spineParse.js.map +1 -0
- package/dist/spineSchema.d.ts +41 -0
- package/dist/spineSchema.d.ts.map +1 -0
- package/dist/spineSchema.js +8 -0
- package/dist/spineSchema.js.map +1 -0
- package/dist/spineSerialize.d.ts +16 -0
- package/dist/spineSerialize.d.ts.map +1 -0
- package/dist/spineSerialize.js +108 -0
- package/dist/spineSerialize.js.map +1 -0
- package/dist/starlingPexParse.d.ts +29 -0
- package/dist/starlingPexParse.d.ts.map +1 -0
- package/dist/starlingPexParse.js +254 -0
- package/dist/starlingPexParse.js.map +1 -0
- package/dist/starlingPexSchema.d.ts +49 -0
- package/dist/starlingPexSchema.d.ts.map +1 -0
- package/dist/starlingPexSchema.js +15 -0
- package/dist/starlingPexSchema.js.map +1 -0
- package/dist/starlingPexSerialize.d.ts +20 -0
- package/dist/starlingPexSerialize.d.ts.map +1 -0
- package/dist/starlingPexSerialize.js +184 -0
- package/dist/starlingPexSerialize.js.map +1 -0
- package/dist/unityParse.d.ts +23 -0
- package/dist/unityParse.d.ts.map +1 -0
- package/dist/unityParse.js +347 -0
- package/dist/unityParse.js.map +1 -0
- package/dist/unitySchema.d.ts +109 -0
- package/dist/unitySchema.d.ts.map +1 -0
- package/dist/unitySchema.js +9 -0
- package/dist/unitySchema.js.map +1 -0
- package/dist/unitySerialize.d.ts +20 -0
- package/dist/unitySerialize.d.ts.map +1 -0
- package/dist/unitySerialize.js +148 -0
- package/dist/unitySerialize.js.map +1 -0
- package/package.json +38 -0
- package/src/detect.test.ts +99 -0
- package/src/formatRegistry.test.ts +118 -0
- package/src/libgdxParse.test.ts +309 -0
- package/src/libgdxSerialize.test.ts +279 -0
- package/src/parseParticleConfig.test.ts +447 -0
- package/src/particleDesignerParse.test.ts +279 -0
- package/src/particleDesignerSerialize.test.ts +113 -0
- package/src/pixiParse.test.ts +131 -0
- package/src/spineParse.test.ts +289 -0
- package/src/spineSerialize.test.ts +81 -0
- package/src/starlingPexParse.test.ts +154 -0
- package/src/starlingPexSerialize.test.ts +115 -0
- package/src/unityParse.test.ts +328 -0
- package/src/unitySerialize.test.ts +77 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { createParticleEmitterConfig } from '@flighthq/particles';
|
|
2
|
+
const DEG2RAD = Math.PI / 180;
|
|
3
|
+
// ─── Minimal plist XML parser ────────────────────────────────────────────────
|
|
4
|
+
function parsePlistRawDict(xml) {
|
|
5
|
+
const result = {};
|
|
6
|
+
const TAG_RE = /<(\/?)(\w+)([^>]*)>/g;
|
|
7
|
+
let currentKey = null;
|
|
8
|
+
let inTag = null;
|
|
9
|
+
let lastTagEnd = 0;
|
|
10
|
+
let m;
|
|
11
|
+
while ((m = TAG_RE.exec(xml)) !== null) {
|
|
12
|
+
const [full, close, name, attrs] = m;
|
|
13
|
+
const isSelfClose = attrs.trimEnd().endsWith('/') || full.endsWith('/>');
|
|
14
|
+
const text = xml.slice(lastTagEnd, m.index).trim();
|
|
15
|
+
lastTagEnd = m.index + full.length;
|
|
16
|
+
if (!close && !isSelfClose) {
|
|
17
|
+
if (name === 'key')
|
|
18
|
+
inTag = 'key';
|
|
19
|
+
else if (name === 'integer' || name === 'real' || name === 'string')
|
|
20
|
+
inTag = name;
|
|
21
|
+
}
|
|
22
|
+
else if (isSelfClose) {
|
|
23
|
+
if ((name === 'true' || name === 'false') && currentKey !== null) {
|
|
24
|
+
result[currentKey] = name === 'true';
|
|
25
|
+
currentKey = null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
if (name === 'key' && inTag === 'key') {
|
|
30
|
+
currentKey = text || null;
|
|
31
|
+
inTag = null;
|
|
32
|
+
}
|
|
33
|
+
else if (currentKey !== null) {
|
|
34
|
+
if (name === 'integer' && inTag === 'integer')
|
|
35
|
+
result[currentKey] = parseInt(text, 10);
|
|
36
|
+
else if (name === 'real' && inTag === 'real')
|
|
37
|
+
result[currentKey] = parseFloat(text);
|
|
38
|
+
else if (name === 'string' && inTag === 'string')
|
|
39
|
+
result[currentKey] = unescapeXml(text);
|
|
40
|
+
if (['integer', 'real', 'string'].includes(name)) {
|
|
41
|
+
currentKey = null;
|
|
42
|
+
inTag = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
function unescapeXml(s) {
|
|
50
|
+
return s
|
|
51
|
+
.replace(/</g, '<')
|
|
52
|
+
.replace(/>/g, '>')
|
|
53
|
+
.replace(/"/g, '"')
|
|
54
|
+
.replace(/'/g, "'")
|
|
55
|
+
.replace(/&/g, '&');
|
|
56
|
+
}
|
|
57
|
+
function num(d, key, def = 0) {
|
|
58
|
+
const v = d[key];
|
|
59
|
+
// Reject NaN (e.g. from an empty or malformed <integer>/<real> tag) so a
|
|
60
|
+
// corrupt field falls back to its default instead of poisoning the config.
|
|
61
|
+
return typeof v === 'number' && Number.isFinite(v) ? v : def;
|
|
62
|
+
}
|
|
63
|
+
function str(d, key, def = '') {
|
|
64
|
+
const v = d[key];
|
|
65
|
+
return typeof v === 'string' ? v : def;
|
|
66
|
+
}
|
|
67
|
+
// ─── Shared conversion logic operating directly on the raw dict ──────────────
|
|
68
|
+
function rawDictToConfig(d, textureSize) {
|
|
69
|
+
const angleRad = num(d, 'angle', 90) * DEG2RAD;
|
|
70
|
+
const lifespan = num(d, 'particleLifespan', 1);
|
|
71
|
+
const lifespanVar = num(d, 'particleLifespanVariance', 0);
|
|
72
|
+
const speed = num(d, 'speed', 100);
|
|
73
|
+
const speedVar = num(d, 'speedVariance', 0);
|
|
74
|
+
const vx = num(d, 'sourcePositionVariancex', 0);
|
|
75
|
+
const vy = num(d, 'sourcePositionVariancey', 0);
|
|
76
|
+
const emitterShape = vx === 0 && vy === 0 ? 'point' : vx === vy ? 'circle' : 'rect';
|
|
77
|
+
const startSize = num(d, 'startParticleSize', 32) / textureSize;
|
|
78
|
+
const startVar = num(d, 'startParticleSizeVariance', 0) / textureSize;
|
|
79
|
+
const finishSize = num(d, 'finishParticleSize', 16) / textureSize;
|
|
80
|
+
const rotStart = num(d, 'rotationStart', 0);
|
|
81
|
+
const rotEnd = num(d, 'rotationEnd', 0);
|
|
82
|
+
const rotStartVar = num(d, 'rotationStartVariance', 0);
|
|
83
|
+
const rotEndVar = num(d, 'rotationEndVariance', 0);
|
|
84
|
+
const lifetimeMid = lifespan + lifespanVar * 0.5 || 1;
|
|
85
|
+
const rotSpeedMid = ((rotStart + rotEnd) * 0.5 * DEG2RAD) / lifetimeMid;
|
|
86
|
+
const rotSpeedVar = (Math.max(rotStartVar, rotEndVar) * DEG2RAD) / lifetimeMid;
|
|
87
|
+
// Particle Designer `duration` is in seconds; -1 (or 0) means emit forever.
|
|
88
|
+
const pdDuration = num(d, 'duration', -1);
|
|
89
|
+
return createParticleEmitterConfig({
|
|
90
|
+
maxParticles: num(d, 'maxParticles', 200) | 0,
|
|
91
|
+
loop: pdDuration <= 0,
|
|
92
|
+
duration: pdDuration > 0 ? pdDuration : 0,
|
|
93
|
+
lifetimeMin: Math.max(0, lifespan - lifespanVar),
|
|
94
|
+
lifetimeMax: lifespan + lifespanVar,
|
|
95
|
+
speedMin: Math.max(0, speed - speedVar),
|
|
96
|
+
speedMax: speed + speedVar,
|
|
97
|
+
directionX: Math.cos(angleRad),
|
|
98
|
+
directionY: -Math.sin(angleRad),
|
|
99
|
+
spread: num(d, 'angleVariance', 0) * DEG2RAD,
|
|
100
|
+
gravityX: num(d, 'gravityx', 0),
|
|
101
|
+
gravityY: num(d, 'gravityy', 0),
|
|
102
|
+
emitterShape,
|
|
103
|
+
emitterRadius: emitterShape === 'circle' ? vx : 0,
|
|
104
|
+
emitterWidth: emitterShape === 'rect' ? vx * 2 : 0,
|
|
105
|
+
emitterHeight: emitterShape === 'rect' ? vy * 2 : 0,
|
|
106
|
+
scaleMin: Math.max(0, startSize - startVar),
|
|
107
|
+
scaleMax: startSize + startVar,
|
|
108
|
+
scaleEnd: startSize > 0 ? finishSize / startSize : 1,
|
|
109
|
+
colorStartR: num(d, 'startColorRed', 1),
|
|
110
|
+
colorStartG: num(d, 'startColorGreen', 1),
|
|
111
|
+
colorStartB: num(d, 'startColorBlue', 1),
|
|
112
|
+
colorStartVarianceR: num(d, 'startColorVarianceRed', 0),
|
|
113
|
+
colorStartVarianceG: num(d, 'startColorVarianceGreen', 0),
|
|
114
|
+
colorStartVarianceB: num(d, 'startColorVarianceBlue', 0),
|
|
115
|
+
colorEndR: num(d, 'finishColorRed', 1),
|
|
116
|
+
colorEndG: num(d, 'finishColorGreen', 1),
|
|
117
|
+
colorEndB: num(d, 'finishColorBlue', 1),
|
|
118
|
+
colorEndVarianceR: num(d, 'finishColorVarianceRed', 0),
|
|
119
|
+
colorEndVarianceG: num(d, 'finishColorVarianceGreen', 0),
|
|
120
|
+
colorEndVarianceB: num(d, 'finishColorVarianceBlue', 0),
|
|
121
|
+
alphaStart: num(d, 'startColorAlpha', 1),
|
|
122
|
+
alphaEnd: num(d, 'finishColorAlpha', 0),
|
|
123
|
+
rotationSpeedMin: rotSpeedMid - rotSpeedVar,
|
|
124
|
+
rotationSpeedMax: rotSpeedMid + rotSpeedVar,
|
|
125
|
+
blendMode: pdBlendMode(num(d, 'blendFuncSource', 770), num(d, 'blendFuncDestination', 771)),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function pdBlendMode(src, dst) {
|
|
129
|
+
// GL_ONE=1, GL_SRC_ALPHA=770, GL_ONE_MINUS_SRC_ALPHA=771
|
|
130
|
+
if ((src === 770 || src === 1) && dst === 1)
|
|
131
|
+
return 'add';
|
|
132
|
+
if (src === 770 && dst === 771)
|
|
133
|
+
return 'normal';
|
|
134
|
+
if (src === 1 && dst === 771)
|
|
135
|
+
return 'normal'; // premultiplied alpha
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
139
|
+
/** Parse a Particle Designer plist XML string directly to a ParticleEmitterConfig.
|
|
140
|
+
*
|
|
141
|
+
* Single-pass: no intermediate document object is allocated.
|
|
142
|
+
* Use `parseParticleDesignerPlistDocument` instead when you need round-trip serialisation. */
|
|
143
|
+
export function parseParticleDesignerPlist(plistXml, options) {
|
|
144
|
+
return rawDictToConfig(parsePlistRawDict(plistXml), options?.textureSize ?? 1);
|
|
145
|
+
}
|
|
146
|
+
function collectParticleDesignerWarnings(d) {
|
|
147
|
+
const warnings = [];
|
|
148
|
+
if (num(d, 'emitterType', 0) === 1) {
|
|
149
|
+
warnings.push('Radial (emitterType=1) emitter was approximated as a gravity emitter; radial motion is not simulated');
|
|
150
|
+
}
|
|
151
|
+
if (num(d, 'radialAcceleration', 0) !== 0 || num(d, 'radialAccelVariance', 0) !== 0) {
|
|
152
|
+
warnings.push('radialAcceleration is not supported and was ignored');
|
|
153
|
+
}
|
|
154
|
+
if (num(d, 'tangentialAcceleration', 0) !== 0 || num(d, 'tangentialAccelVariance', 0) !== 0) {
|
|
155
|
+
warnings.push('tangentialAcceleration is not supported and was ignored');
|
|
156
|
+
}
|
|
157
|
+
return warnings;
|
|
158
|
+
}
|
|
159
|
+
/** Parse a Particle Designer plist XML string and preserve the full document for
|
|
160
|
+
* round-trip serialisation via `serializeParticleDesignerPlist`. */
|
|
161
|
+
export function parseParticleDesignerPlistDocument(plistXml, options) {
|
|
162
|
+
const textureSize = options?.textureSize ?? 1;
|
|
163
|
+
const d = parsePlistRawDict(plistXml);
|
|
164
|
+
const document = {
|
|
165
|
+
maxParticles: num(d, 'maxParticles', 200) | 0,
|
|
166
|
+
emitterType: (num(d, 'emitterType', 0) === 1 ? 1 : 0),
|
|
167
|
+
duration: num(d, 'duration', -1),
|
|
168
|
+
particleLifespan: num(d, 'particleLifespan', 1),
|
|
169
|
+
particleLifespanVariance: num(d, 'particleLifespanVariance', 0),
|
|
170
|
+
speed: num(d, 'speed', 100),
|
|
171
|
+
speedVariance: num(d, 'speedVariance', 0),
|
|
172
|
+
angle: num(d, 'angle', 90),
|
|
173
|
+
angleVariance: num(d, 'angleVariance', 0),
|
|
174
|
+
gravityx: num(d, 'gravityx', 0),
|
|
175
|
+
gravityy: num(d, 'gravityy', 0),
|
|
176
|
+
sourcePositionVariancex: num(d, 'sourcePositionVariancex', 0),
|
|
177
|
+
sourcePositionVariancey: num(d, 'sourcePositionVariancey', 0),
|
|
178
|
+
startParticleSize: num(d, 'startParticleSize', 32),
|
|
179
|
+
startParticleSizeVariance: num(d, 'startParticleSizeVariance', 0),
|
|
180
|
+
finishParticleSize: num(d, 'finishParticleSize', 16),
|
|
181
|
+
finishParticleSizeVariance: num(d, 'finishParticleSizeVariance', 0),
|
|
182
|
+
startColorRed: num(d, 'startColorRed', 1),
|
|
183
|
+
startColorGreen: num(d, 'startColorGreen', 1),
|
|
184
|
+
startColorBlue: num(d, 'startColorBlue', 1),
|
|
185
|
+
startColorAlpha: num(d, 'startColorAlpha', 1),
|
|
186
|
+
startColorVarianceRed: num(d, 'startColorVarianceRed', 0),
|
|
187
|
+
startColorVarianceGreen: num(d, 'startColorVarianceGreen', 0),
|
|
188
|
+
startColorVarianceBlue: num(d, 'startColorVarianceBlue', 0),
|
|
189
|
+
startColorVarianceAlpha: num(d, 'startColorVarianceAlpha', 0),
|
|
190
|
+
finishColorRed: num(d, 'finishColorRed', 1),
|
|
191
|
+
finishColorGreen: num(d, 'finishColorGreen', 1),
|
|
192
|
+
finishColorBlue: num(d, 'finishColorBlue', 1),
|
|
193
|
+
finishColorAlpha: num(d, 'finishColorAlpha', 0),
|
|
194
|
+
finishColorVarianceRed: num(d, 'finishColorVarianceRed', 0),
|
|
195
|
+
finishColorVarianceGreen: num(d, 'finishColorVarianceGreen', 0),
|
|
196
|
+
finishColorVarianceBlue: num(d, 'finishColorVarianceBlue', 0),
|
|
197
|
+
finishColorVarianceAlpha: num(d, 'finishColorVarianceAlpha', 0),
|
|
198
|
+
rotationStart: num(d, 'rotationStart', 0),
|
|
199
|
+
rotationStartVariance: num(d, 'rotationStartVariance', 0),
|
|
200
|
+
rotationEnd: num(d, 'rotationEnd', 0),
|
|
201
|
+
rotationEndVariance: num(d, 'rotationEndVariance', 0),
|
|
202
|
+
maxRadius: num(d, 'maxRadius', 0),
|
|
203
|
+
maxRadiusVariance: num(d, 'maxRadiusVariance', 0),
|
|
204
|
+
minRadius: num(d, 'minRadius', 0),
|
|
205
|
+
minRadiusVariance: num(d, 'minRadiusVariance', 0),
|
|
206
|
+
rotatePerSecond: num(d, 'rotatePerSecond', 0),
|
|
207
|
+
rotatePerSecondVariance: num(d, 'rotatePerSecondVariance', 0),
|
|
208
|
+
blendFuncSource: num(d, 'blendFuncSource', 770),
|
|
209
|
+
blendFuncDestination: num(d, 'blendFuncDestination', 771),
|
|
210
|
+
textureFileName: str(d, 'textureFileName', ''),
|
|
211
|
+
};
|
|
212
|
+
return { config: rawDictToConfig(d, textureSize), document, warnings: collectParticleDesignerWarnings(d) };
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=particleDesignerParse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleDesignerParse.js","sourceRoot":"","sources":["../src/particleDesignerParse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type ParticleDesignerEmitterType = 0 | 1;
|
|
2
|
+
export interface ParticleDesignerDocument {
|
|
3
|
+
maxParticles: number;
|
|
4
|
+
emitterType: ParticleDesignerEmitterType;
|
|
5
|
+
duration: number;
|
|
6
|
+
particleLifespan: number;
|
|
7
|
+
particleLifespanVariance: number;
|
|
8
|
+
speed: number;
|
|
9
|
+
speedVariance: number;
|
|
10
|
+
angle: number;
|
|
11
|
+
angleVariance: number;
|
|
12
|
+
gravityx: number;
|
|
13
|
+
gravityy: number;
|
|
14
|
+
sourcePositionVariancex: number;
|
|
15
|
+
sourcePositionVariancey: number;
|
|
16
|
+
startParticleSize: number;
|
|
17
|
+
startParticleSizeVariance: number;
|
|
18
|
+
finishParticleSize: number;
|
|
19
|
+
finishParticleSizeVariance: number;
|
|
20
|
+
startColorRed: number;
|
|
21
|
+
startColorGreen: number;
|
|
22
|
+
startColorBlue: number;
|
|
23
|
+
startColorAlpha: number;
|
|
24
|
+
startColorVarianceRed: number;
|
|
25
|
+
startColorVarianceGreen: number;
|
|
26
|
+
startColorVarianceBlue: number;
|
|
27
|
+
startColorVarianceAlpha: number;
|
|
28
|
+
finishColorRed: number;
|
|
29
|
+
finishColorGreen: number;
|
|
30
|
+
finishColorBlue: number;
|
|
31
|
+
finishColorAlpha: number;
|
|
32
|
+
finishColorVarianceRed: number;
|
|
33
|
+
finishColorVarianceGreen: number;
|
|
34
|
+
finishColorVarianceBlue: number;
|
|
35
|
+
finishColorVarianceAlpha: number;
|
|
36
|
+
rotationStart: number;
|
|
37
|
+
rotationStartVariance: number;
|
|
38
|
+
rotationEnd: number;
|
|
39
|
+
rotationEndVariance: number;
|
|
40
|
+
maxRadius: number;
|
|
41
|
+
maxRadiusVariance: number;
|
|
42
|
+
minRadius: number;
|
|
43
|
+
minRadiusVariance: number;
|
|
44
|
+
rotatePerSecond: number;
|
|
45
|
+
rotatePerSecondVariance: number;
|
|
46
|
+
blendFuncSource: number;
|
|
47
|
+
blendFuncDestination: number;
|
|
48
|
+
textureFileName: string;
|
|
49
|
+
}
|
|
50
|
+
export type ParticleDesignerRawDict = Record<string, string | number | boolean>;
|
|
51
|
+
//# sourceMappingURL=particleDesignerSchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleDesignerSchema.d.ts","sourceRoot":"","sources":["../src/particleDesignerSchema.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,2BAA2B,GAAG,CAAC,GAAG,CAAC,CAAC;AAEhD,MAAM,WAAW,wBAAwB;IAEvC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,2BAA2B,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAGjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,MAAM,CAAC;IAGjC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IAGtB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IAGtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAGhC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IAGnC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAGhC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IAGjC,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAG5B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAGhC,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Particle Designer plist schema — field names as they appear in the XML file.
|
|
2
|
+
// Reference: https://www.71squared.com/particledesigner (format documented in the tool's export)
|
|
3
|
+
// Targets Particle Designer 3.x and cocos2d-compatible plist files.
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=particleDesignerSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleDesignerSchema.js","sourceRoot":"","sources":["../src/particleDesignerSchema.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iGAAiG;AACjG,oEAAoE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ParticleEmitterConfig } from '@flighthq/types';
|
|
2
|
+
import type { ParticleDesignerDocument } from './particleDesignerSchema';
|
|
3
|
+
import type { ParticleSerializeResult } from './serializeResult';
|
|
4
|
+
export interface ParticleDesignerSerializeOptions {
|
|
5
|
+
/** Side length of the particle texture in pixels — reverses the normalisation
|
|
6
|
+
* applied during parsing. Defaults to 1. */
|
|
7
|
+
textureSize?: number;
|
|
8
|
+
}
|
|
9
|
+
/** Serialise a ParticleEmitterConfig to a Particle Designer plist XML string.
|
|
10
|
+
*
|
|
11
|
+
* Pass the `document` returned by `parseParticleDesignerPlist` to preserve
|
|
12
|
+
* any fields that don't round-trip through the config (texture name, blend
|
|
13
|
+
* function, emitter type, duration, color variances). */
|
|
14
|
+
export declare function serializeParticleDesignerPlist(config: Readonly<ParticleEmitterConfig>, existing?: Partial<ParticleDesignerDocument>, options?: ParticleDesignerSerializeOptions): string;
|
|
15
|
+
/** Serialise a ParticleEmitterConfig to a Particle Designer plist XML string,
|
|
16
|
+
* returning both the serialized text and any warnings for features the format
|
|
17
|
+
* cannot represent.
|
|
18
|
+
*
|
|
19
|
+
* Pass the `document` returned by `parseParticleDesignerPlistDocument` to
|
|
20
|
+
* preserve any fields that don't round-trip through the config. */
|
|
21
|
+
export declare function serializeParticleDesignerPlistDocument(config: Readonly<ParticleEmitterConfig>, existing?: Partial<ParticleDesignerDocument>, options?: ParticleDesignerSerializeOptions): ParticleSerializeResult;
|
|
22
|
+
//# sourceMappingURL=particleDesignerSerialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleDesignerSerialize.d.ts","sourceRoot":"","sources":["../src/particleDesignerSerialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,WAAW,gCAAgC;IAC/C;kDAC8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmLD;;;;0DAI0D;AAC1D,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAC5C,OAAO,CAAC,EAAE,gCAAgC,GACzC,MAAM,CAIR;AAED;;;;;oEAKoE;AACpE,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,EAC5C,OAAO,CAAC,EAAE,gCAAgC,GACzC,uBAAuB,CAIzB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
const RAD2DEG = 180 / Math.PI;
|
|
2
|
+
function configToDocument(config, existing, textureSize) {
|
|
3
|
+
// Direction vector → degrees (0°=right, 90°=up-screen)
|
|
4
|
+
const angleDeg = Math.atan2(-config.directionY, config.directionX) * RAD2DEG;
|
|
5
|
+
// Scale multipliers → absolute pixel sizes
|
|
6
|
+
const startSize = (config.scaleMin + config.scaleMax) * 0.5 * textureSize;
|
|
7
|
+
const startVar = (config.scaleMax - config.scaleMin) * 0.5 * textureSize;
|
|
8
|
+
const finishSize = startSize * config.scaleEnd;
|
|
9
|
+
// Rotation speed → Particle Designer rotation range
|
|
10
|
+
const rotSpeedMid = (config.rotationSpeedMin + config.rotationSpeedMax) * 0.5;
|
|
11
|
+
const rotSpeedVar = (config.rotationSpeedMax - config.rotationSpeedMin) * 0.5;
|
|
12
|
+
const lifetimeMid = (config.lifetimeMin + config.lifetimeMax) * 0.5;
|
|
13
|
+
const rotStart = rotSpeedMid * lifetimeMid * RAD2DEG;
|
|
14
|
+
const rotVar = rotSpeedVar * lifetimeMid * RAD2DEG;
|
|
15
|
+
// Emitter shape → sourcePositionVariance
|
|
16
|
+
let vx = 0;
|
|
17
|
+
let vy = 0;
|
|
18
|
+
if (config.emitterShape === 'circle') {
|
|
19
|
+
vx = config.emitterRadius;
|
|
20
|
+
vy = config.emitterRadius;
|
|
21
|
+
}
|
|
22
|
+
else if (config.emitterShape === 'rect') {
|
|
23
|
+
vx = config.emitterWidth * 0.5;
|
|
24
|
+
vy = config.emitterHeight * 0.5;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
maxParticles: config.maxParticles,
|
|
28
|
+
emitterType: existing.emitterType ?? 0,
|
|
29
|
+
duration: config.duration > 0 && !config.loop ? config.duration : (existing.duration ?? -1),
|
|
30
|
+
particleLifespan: (config.lifetimeMin + config.lifetimeMax) * 0.5,
|
|
31
|
+
particleLifespanVariance: (config.lifetimeMax - config.lifetimeMin) * 0.5,
|
|
32
|
+
speed: (config.speedMin + config.speedMax) * 0.5,
|
|
33
|
+
speedVariance: (config.speedMax - config.speedMin) * 0.5,
|
|
34
|
+
angle: angleDeg,
|
|
35
|
+
angleVariance: config.spread * RAD2DEG,
|
|
36
|
+
gravityx: config.gravityX,
|
|
37
|
+
gravityy: config.gravityY,
|
|
38
|
+
sourcePositionVariancex: vx,
|
|
39
|
+
sourcePositionVariancey: vy,
|
|
40
|
+
startParticleSize: startSize,
|
|
41
|
+
startParticleSizeVariance: startVar,
|
|
42
|
+
finishParticleSize: finishSize,
|
|
43
|
+
finishParticleSizeVariance: existing.finishParticleSizeVariance ?? 0,
|
|
44
|
+
startColorRed: config.colorStartR,
|
|
45
|
+
startColorGreen: config.colorStartG,
|
|
46
|
+
startColorBlue: config.colorStartB,
|
|
47
|
+
startColorAlpha: config.alphaStart,
|
|
48
|
+
startColorVarianceRed: config.colorStartVarianceR !== 0 ? config.colorStartVarianceR : (existing.startColorVarianceRed ?? 0),
|
|
49
|
+
startColorVarianceGreen: config.colorStartVarianceG !== 0 ? config.colorStartVarianceG : (existing.startColorVarianceGreen ?? 0),
|
|
50
|
+
startColorVarianceBlue: config.colorStartVarianceB !== 0 ? config.colorStartVarianceB : (existing.startColorVarianceBlue ?? 0),
|
|
51
|
+
startColorVarianceAlpha: existing.startColorVarianceAlpha ?? 0,
|
|
52
|
+
finishColorRed: config.colorEndR,
|
|
53
|
+
finishColorGreen: config.colorEndG,
|
|
54
|
+
finishColorBlue: config.colorEndB,
|
|
55
|
+
finishColorAlpha: config.alphaEnd,
|
|
56
|
+
finishColorVarianceRed: config.colorEndVarianceR !== 0 ? config.colorEndVarianceR : (existing.finishColorVarianceRed ?? 0),
|
|
57
|
+
finishColorVarianceGreen: config.colorEndVarianceG !== 0 ? config.colorEndVarianceG : (existing.finishColorVarianceGreen ?? 0),
|
|
58
|
+
finishColorVarianceBlue: config.colorEndVarianceB !== 0 ? config.colorEndVarianceB : (existing.finishColorVarianceBlue ?? 0),
|
|
59
|
+
finishColorVarianceAlpha: existing.finishColorVarianceAlpha ?? 0,
|
|
60
|
+
rotationStart: rotStart,
|
|
61
|
+
rotationStartVariance: rotVar,
|
|
62
|
+
rotationEnd: rotStart,
|
|
63
|
+
rotationEndVariance: rotVar,
|
|
64
|
+
maxRadius: existing.maxRadius ?? 0,
|
|
65
|
+
maxRadiusVariance: existing.maxRadiusVariance ?? 0,
|
|
66
|
+
minRadius: existing.minRadius ?? 0,
|
|
67
|
+
minRadiusVariance: existing.minRadiusVariance ?? 0,
|
|
68
|
+
rotatePerSecond: existing.rotatePerSecond ?? 0,
|
|
69
|
+
rotatePerSecondVariance: existing.rotatePerSecondVariance ?? 0,
|
|
70
|
+
blendFuncSource: blendModeToSrc(config.blendMode, existing.blendFuncSource ?? 770),
|
|
71
|
+
blendFuncDestination: blendModeToDst(config.blendMode, existing.blendFuncDestination ?? 771),
|
|
72
|
+
textureFileName: existing.textureFileName ?? '',
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function documentToPlist(doc) {
|
|
76
|
+
const lines = [
|
|
77
|
+
'<?xml version="1.0" encoding="utf-8"?>',
|
|
78
|
+
'<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">',
|
|
79
|
+
'<plist version="1.0">',
|
|
80
|
+
'<dict>',
|
|
81
|
+
];
|
|
82
|
+
function kv(key, value) {
|
|
83
|
+
lines.push(`\t<key>${key}</key>`);
|
|
84
|
+
if (typeof value === 'boolean') {
|
|
85
|
+
lines.push(`\t<${value ? 'true' : 'false'}/>`);
|
|
86
|
+
}
|
|
87
|
+
else if (typeof value === 'number') {
|
|
88
|
+
if (Number.isInteger(value))
|
|
89
|
+
lines.push(`\t<integer>${value}</integer>`);
|
|
90
|
+
else
|
|
91
|
+
lines.push(`\t<real>${value}</real>`);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
lines.push(`\t<string>${escapeXml(value)}</string>`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
kv('maxParticles', doc.maxParticles);
|
|
98
|
+
kv('emitterType', doc.emitterType);
|
|
99
|
+
kv('duration', doc.duration);
|
|
100
|
+
kv('particleLifespan', doc.particleLifespan);
|
|
101
|
+
kv('particleLifespanVariance', doc.particleLifespanVariance);
|
|
102
|
+
kv('speed', doc.speed);
|
|
103
|
+
kv('speedVariance', doc.speedVariance);
|
|
104
|
+
kv('angle', doc.angle);
|
|
105
|
+
kv('angleVariance', doc.angleVariance);
|
|
106
|
+
kv('gravityx', doc.gravityx);
|
|
107
|
+
kv('gravityy', doc.gravityy);
|
|
108
|
+
kv('sourcePositionVariancex', doc.sourcePositionVariancex);
|
|
109
|
+
kv('sourcePositionVariancey', doc.sourcePositionVariancey);
|
|
110
|
+
kv('startParticleSize', doc.startParticleSize);
|
|
111
|
+
kv('startParticleSizeVariance', doc.startParticleSizeVariance);
|
|
112
|
+
kv('finishParticleSize', doc.finishParticleSize);
|
|
113
|
+
kv('finishParticleSizeVariance', doc.finishParticleSizeVariance);
|
|
114
|
+
kv('startColorRed', doc.startColorRed);
|
|
115
|
+
kv('startColorGreen', doc.startColorGreen);
|
|
116
|
+
kv('startColorBlue', doc.startColorBlue);
|
|
117
|
+
kv('startColorAlpha', doc.startColorAlpha);
|
|
118
|
+
kv('startColorVarianceRed', doc.startColorVarianceRed);
|
|
119
|
+
kv('startColorVarianceGreen', doc.startColorVarianceGreen);
|
|
120
|
+
kv('startColorVarianceBlue', doc.startColorVarianceBlue);
|
|
121
|
+
kv('startColorVarianceAlpha', doc.startColorVarianceAlpha);
|
|
122
|
+
kv('finishColorRed', doc.finishColorRed);
|
|
123
|
+
kv('finishColorGreen', doc.finishColorGreen);
|
|
124
|
+
kv('finishColorBlue', doc.finishColorBlue);
|
|
125
|
+
kv('finishColorAlpha', doc.finishColorAlpha);
|
|
126
|
+
kv('finishColorVarianceRed', doc.finishColorVarianceRed);
|
|
127
|
+
kv('finishColorVarianceGreen', doc.finishColorVarianceGreen);
|
|
128
|
+
kv('finishColorVarianceBlue', doc.finishColorVarianceBlue);
|
|
129
|
+
kv('finishColorVarianceAlpha', doc.finishColorVarianceAlpha);
|
|
130
|
+
kv('rotationStart', doc.rotationStart);
|
|
131
|
+
kv('rotationStartVariance', doc.rotationStartVariance);
|
|
132
|
+
kv('rotationEnd', doc.rotationEnd);
|
|
133
|
+
kv('rotationEndVariance', doc.rotationEndVariance);
|
|
134
|
+
kv('maxRadius', doc.maxRadius);
|
|
135
|
+
kv('maxRadiusVariance', doc.maxRadiusVariance);
|
|
136
|
+
kv('minRadius', doc.minRadius);
|
|
137
|
+
kv('minRadiusVariance', doc.minRadiusVariance);
|
|
138
|
+
kv('rotatePerSecond', doc.rotatePerSecond);
|
|
139
|
+
kv('rotatePerSecondVariance', doc.rotatePerSecondVariance);
|
|
140
|
+
kv('blendFuncSource', doc.blendFuncSource);
|
|
141
|
+
kv('blendFuncDestination', doc.blendFuncDestination);
|
|
142
|
+
kv('textureFileName', doc.textureFileName);
|
|
143
|
+
lines.push('</dict>');
|
|
144
|
+
lines.push('</plist>');
|
|
145
|
+
return lines.join('\n');
|
|
146
|
+
}
|
|
147
|
+
function escapeXml(s) {
|
|
148
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
149
|
+
}
|
|
150
|
+
function blendModeToSrc(mode, fallback) {
|
|
151
|
+
if (mode === 'add')
|
|
152
|
+
return 770; // GL_SRC_ALPHA
|
|
153
|
+
if (mode === 'normal')
|
|
154
|
+
return 770;
|
|
155
|
+
return fallback;
|
|
156
|
+
}
|
|
157
|
+
function blendModeToDst(mode, fallback) {
|
|
158
|
+
if (mode === 'add')
|
|
159
|
+
return 1; // GL_ONE
|
|
160
|
+
if (mode === 'normal')
|
|
161
|
+
return 771; // GL_ONE_MINUS_SRC_ALPHA
|
|
162
|
+
return fallback;
|
|
163
|
+
}
|
|
164
|
+
/** Serialise a ParticleEmitterConfig to a Particle Designer plist XML string.
|
|
165
|
+
*
|
|
166
|
+
* Pass the `document` returned by `parseParticleDesignerPlist` to preserve
|
|
167
|
+
* any fields that don't round-trip through the config (texture name, blend
|
|
168
|
+
* function, emitter type, duration, color variances). */
|
|
169
|
+
export function serializeParticleDesignerPlist(config, existing, options) {
|
|
170
|
+
const textureSize = options?.textureSize ?? 1;
|
|
171
|
+
const doc = configToDocument(config, existing ?? {}, textureSize);
|
|
172
|
+
return documentToPlist(doc);
|
|
173
|
+
}
|
|
174
|
+
/** Serialise a ParticleEmitterConfig to a Particle Designer plist XML string,
|
|
175
|
+
* returning both the serialized text and any warnings for features the format
|
|
176
|
+
* cannot represent.
|
|
177
|
+
*
|
|
178
|
+
* Pass the `document` returned by `parseParticleDesignerPlistDocument` to
|
|
179
|
+
* preserve any fields that don't round-trip through the config. */
|
|
180
|
+
export function serializeParticleDesignerPlistDocument(config, existing, options) {
|
|
181
|
+
const text = serializeParticleDesignerPlist(config, existing, options);
|
|
182
|
+
const warnings = collectParticleDesignerSerializeWarnings(config);
|
|
183
|
+
return { text, warnings };
|
|
184
|
+
}
|
|
185
|
+
/** Collect serialize-side warnings for features in `config` that the Particle
|
|
186
|
+
* Designer plist format cannot represent. */
|
|
187
|
+
function collectParticleDesignerSerializeWarnings(config) {
|
|
188
|
+
const warnings = [];
|
|
189
|
+
if (config.blendMode !== null && config.blendMode !== 'add' && config.blendMode !== 'normal') {
|
|
190
|
+
warnings.push(`Blend mode '${config.blendMode}' has no Particle Designer equivalent and was approximated as 'normal'`);
|
|
191
|
+
}
|
|
192
|
+
if (config.colorCurve !== null) {
|
|
193
|
+
warnings.push('Color curve has more than two stops; Particle Designer stores only start and end colors');
|
|
194
|
+
}
|
|
195
|
+
if (config.alphaCurve !== null) {
|
|
196
|
+
warnings.push('Alpha curve has more than two stops; Particle Designer stores only start and end alpha');
|
|
197
|
+
}
|
|
198
|
+
if (config.scaleCurve !== null) {
|
|
199
|
+
warnings.push('Scale curve has more than two stops; Particle Designer stores only start and end size');
|
|
200
|
+
}
|
|
201
|
+
if (config.burstCount > 0) {
|
|
202
|
+
warnings.push('Emission bursts are not supported by the Particle Designer format and were ignored');
|
|
203
|
+
}
|
|
204
|
+
if (config.velocityInheritance !== 0) {
|
|
205
|
+
warnings.push('velocityInheritance is not supported by the Particle Designer format and was ignored');
|
|
206
|
+
}
|
|
207
|
+
return warnings;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=particleDesignerSerialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particleDesignerSerialize.js","sourceRoot":"","sources":["../src/particleDesignerSerialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ParticleEmitterConfig } from '@flighthq/types';
|
|
2
|
+
export interface PixiParseResult {
|
|
3
|
+
config: ParticleEmitterConfig;
|
|
4
|
+
/** Features present in the source that the common-subset importer cannot
|
|
5
|
+
* represent and silently dropped — surface these in your asset pipeline. */
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
/** @deprecated Use `PixiParseResult`. */
|
|
9
|
+
export type PixiParsed = PixiParseResult;
|
|
10
|
+
/** Parse a Pixi.js / pixi-particle-emitter JSON config string directly to a ParticleEmitterConfig.
|
|
11
|
+
*
|
|
12
|
+
* Supports the pixi-particle-emitter v3/v4/v5 config shape.
|
|
13
|
+
* Throws a clear, format-tagged error when the input is not valid JSON or not an object. */
|
|
14
|
+
export declare function parsePixiParticle(json: string): ParticleEmitterConfig;
|
|
15
|
+
/** Parse a Pixi.js / pixi-particle-emitter JSON config string, returning the config
|
|
16
|
+
* and any import warnings for features that could not be represented. */
|
|
17
|
+
export declare function parsePixiParticleDocument(json: string): PixiParseResult;
|
|
18
|
+
//# sourceMappingURL=pixiParse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pixiParse.d.ts","sourceRoot":"","sources":["../src/pixiParse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B;iFAC6E;IAC7E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG,eAAe,CAAC;AAEzC;;;6FAG6F;AAC7F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAErE;AAED;0EAC0E;AAC1E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAMvE"}
|