@flighthq/scene3d-formats 0.2.1-next.840.857425c

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.
Files changed (74) hide show
  1. package/dist/awd2Inflate.d.ts +4 -0
  2. package/dist/awd2Inflate.d.ts.map +1 -0
  3. package/dist/awd2Inflate.js +249 -0
  4. package/dist/awd2Inflate.js.map +1 -0
  5. package/dist/awd2Parse.d.ts +7 -0
  6. package/dist/awd2Parse.d.ts.map +1 -0
  7. package/dist/awd2Parse.js +1533 -0
  8. package/dist/awd2Parse.js.map +1 -0
  9. package/dist/awd2Schema.d.ts +44 -0
  10. package/dist/awd2Schema.d.ts.map +1 -0
  11. package/dist/awd2Schema.js +67 -0
  12. package/dist/awd2Schema.js.map +1 -0
  13. package/dist/gltfParse.d.ts +9 -0
  14. package/dist/gltfParse.d.ts.map +1 -0
  15. package/dist/gltfParse.js +1456 -0
  16. package/dist/gltfParse.js.map +1 -0
  17. package/dist/gltfPunctualLights.d.ts +3 -0
  18. package/dist/gltfPunctualLights.d.ts.map +1 -0
  19. package/dist/gltfPunctualLights.js +103 -0
  20. package/dist/gltfPunctualLights.js.map +1 -0
  21. package/dist/index.d.ts +12 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +12 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/md2Parse.d.ts +5 -0
  26. package/dist/md2Parse.d.ts.map +1 -0
  27. package/dist/md2Parse.js +408 -0
  28. package/dist/md2Parse.js.map +1 -0
  29. package/dist/md2Schema.d.ts +12 -0
  30. package/dist/md2Schema.d.ts.map +1 -0
  31. package/dist/md2Schema.js +193 -0
  32. package/dist/md2Schema.js.map +1 -0
  33. package/dist/md5AnimParse.d.ts +3 -0
  34. package/dist/md5AnimParse.d.ts.map +1 -0
  35. package/dist/md5AnimParse.js +385 -0
  36. package/dist/md5AnimParse.js.map +1 -0
  37. package/dist/md5Parse.d.ts +6 -0
  38. package/dist/md5Parse.d.ts.map +1 -0
  39. package/dist/md5Parse.js +635 -0
  40. package/dist/md5Parse.js.map +1 -0
  41. package/dist/mtlParse.d.ts +3 -0
  42. package/dist/mtlParse.d.ts.map +1 -0
  43. package/dist/mtlParse.js +256 -0
  44. package/dist/mtlParse.js.map +1 -0
  45. package/dist/objParse.d.ts +5 -0
  46. package/dist/objParse.d.ts.map +1 -0
  47. package/dist/objParse.js +464 -0
  48. package/dist/objParse.js.map +1 -0
  49. package/dist/sceneSkeleton.d.ts +3 -0
  50. package/dist/sceneSkeleton.d.ts.map +1 -0
  51. package/dist/sceneSkeleton.js +34 -0
  52. package/dist/sceneSkeleton.js.map +1 -0
  53. package/dist/shared.d.ts +18 -0
  54. package/dist/shared.d.ts.map +1 -0
  55. package/dist/shared.js +143 -0
  56. package/dist/shared.js.map +1 -0
  57. package/dist/threeDsParse.d.ts +4 -0
  58. package/dist/threeDsParse.d.ts.map +1 -0
  59. package/dist/threeDsParse.js +718 -0
  60. package/dist/threeDsParse.js.map +1 -0
  61. package/package.json +55 -0
  62. package/src/awd2Inflate.test.ts +118 -0
  63. package/src/awd2Parse.test.ts +2431 -0
  64. package/src/gltfParse.test.ts +2339 -0
  65. package/src/gltfPunctualLights.test.ts +184 -0
  66. package/src/gltfTreeShaking.test.ts +45 -0
  67. package/src/md2Parse.test.ts +1033 -0
  68. package/src/md5AnimParse.test.ts +673 -0
  69. package/src/md5Parse.test.ts +1094 -0
  70. package/src/mtlParse.test.ts +244 -0
  71. package/src/objParse.test.ts +690 -0
  72. package/src/sceneSkeleton.test.ts +35 -0
  73. package/src/shared.test.ts +210 -0
  74. package/src/threeDsParse.test.ts +1089 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md2Schema.js","sourceRoot":"","sources":["../src/md2Schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AnimationClip, ImportDiagnostic, Node3D } from '@flighthq/types';
2
+ export declare function parseMd5Anim(source: string, joints: readonly Node3D[], diagnostics?: ImportDiagnostic[]): AnimationClip | null;
3
+ //# sourceMappingURL=md5AnimParse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5AnimParse.d.ts","sourceRoot":"","sources":["../src/md5AnimParse.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAoB,aAAa,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA6BjG,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,aAAa,GAAG,IAAI,CA0JtB"}
@@ -0,0 +1,385 @@
1
+ import { createAnimationChannel, createAnimationClip, createAnimationTrack } from '@flighthq/animation';
2
+ import { reportImportDiagnostic } from '@flighthq/importdiagnostics';
3
+ import { ImportDiagnosticSeverity, Scene3DAnimationPathRotation, Scene3DAnimationPathTranslation, } from '@flighthq/types';
4
+ import { convertPositionsZUpToYUp, convertQuaternionsZUpToYUp } from './shared';
5
+ // Parses an id Tech 4 MD5 animation file (.md5anim) into an AnimationClip that drives the given
6
+ // joint Node3Ds (produced by createScene3DFromMd5Mesh). The ASCII line-oriented format declares a
7
+ // skeleton hierarchy, a baseframe pose, and per-frame animated components selected by a bitmask.
8
+ // Each joint produces up to two channels (translation and rotation) in the returned clip. Channels
9
+ // bind to their joint by NAME (falling back to array position for unnamed joints), so the caller may
10
+ // pass the joint nodes in any order — see the name-binding note in buildAnimationClip.
11
+ //
12
+ // IMPORTANT: .md5anim baseframe/frame joint transforms are PARENT-RELATIVE (unlike the .md5mesh
13
+ // joints, which are absolute). These relative values are driven straight onto the joints' LOCAL
14
+ // transforms, and the NESTED skeleton createScene3DFromMd5Mesh builds (which converts its absolute bind
15
+ // pose to parent-relative locals) composes parent × child back to the correct absolute world pose.
16
+ // The two files are coupled: a flat skeleton, or one that kept absolute bind locals, would deform the
17
+ // mesh wrongly. Do not "compose to absolute" here — the scene graph does that.
18
+ //
19
+ // Joint positions and orientations are converted from MD5's right-handed Z-up coordinate system
20
+ // to Flight's right-handed Y-up system via convertPositionsZUpToYUp and
21
+ // convertQuaternionsZUpToYUp. Quaternion W is reconstructed from XYZ.
22
+ //
23
+ // Returns null when the source is empty or cannot be parsed. Malformed lines record a diagnostic and
24
+ // are skipped; the function never throws on bad input.
25
+ export function parseMd5Anim(source, joints, diagnostics) {
26
+ const lines = source.split('\n');
27
+ let i = 0;
28
+ let frameRate = 24;
29
+ let numFrames = 0;
30
+ let numJoints = 0;
31
+ const hierarchy = [];
32
+ const baseframe = [];
33
+ const frames = [];
34
+ const md5Drops = diagnostics ? new Map() : null;
35
+ while (i < lines.length) {
36
+ const line = lines[i].trim();
37
+ i++;
38
+ if (line.length === 0 || line.startsWith('//'))
39
+ continue;
40
+ if (line.startsWith('MD5Version')) {
41
+ const version = parseInt(line.split(/\s+/)[1], 10);
42
+ if (Number.isFinite(version) && version !== 10) {
43
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.unsupported-version', 'parseMd5Anim', {
44
+ version,
45
+ });
46
+ }
47
+ continue;
48
+ }
49
+ if (line.startsWith('commandline'))
50
+ continue;
51
+ if (line.startsWith('numFrames')) {
52
+ numFrames = parseInt(line.split(/\s+/)[1], 10);
53
+ if (!Number.isFinite(numFrames)) {
54
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.non-numeric-numframes', 'parseMd5Anim');
55
+ numFrames = 0;
56
+ }
57
+ continue;
58
+ }
59
+ if (line.startsWith('numJoints')) {
60
+ numJoints = parseInt(line.split(/\s+/)[1], 10);
61
+ if (!Number.isFinite(numJoints)) {
62
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.non-numeric-numjoints', 'parseMd5Anim');
63
+ numJoints = 0;
64
+ }
65
+ continue;
66
+ }
67
+ if (line.startsWith('frameRate')) {
68
+ frameRate = parseInt(line.split(/\s+/)[1], 10);
69
+ if (!Number.isFinite(frameRate) || frameRate <= 0) {
70
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.invalid-framerate', 'parseMd5Anim');
71
+ frameRate = 24;
72
+ }
73
+ continue;
74
+ }
75
+ if (line.startsWith('numAnimatedComponents'))
76
+ continue;
77
+ if (line === 'hierarchy {') {
78
+ i = parseHierarchyBlock(lines, i, hierarchy, md5Drops);
79
+ continue;
80
+ }
81
+ if (line === 'bounds {') {
82
+ i = skipBlock(lines, i);
83
+ continue;
84
+ }
85
+ if (line === 'baseframe {') {
86
+ i = parseBaseframeBlock(lines, i, baseframe, md5Drops);
87
+ continue;
88
+ }
89
+ if (line.startsWith('frame ') && line.endsWith('{')) {
90
+ const frameData = [];
91
+ i = parseFrameBlock(lines, i, frameData, md5Drops);
92
+ frames.push(frameData);
93
+ continue;
94
+ }
95
+ }
96
+ // Resolve the outcome first, then flush the aggregated block-level drops once — so no accumulated
97
+ // crumb is lost on either early-reject path below (parseMd5Anim is the physical emitter, hence origin).
98
+ let clip = null;
99
+ if (hierarchy.length === 0 || frames.length === 0) {
100
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'md5anim.no-data', 'parseMd5Anim');
101
+ }
102
+ else {
103
+ if (hierarchy.length !== numJoints) {
104
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.joint-count-mismatch', 'parseMd5Anim', {
105
+ declared: numJoints,
106
+ found: hierarchy.length,
107
+ });
108
+ }
109
+ if (frames.length !== numFrames) {
110
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Recover, 'md5anim.frame-count-mismatch', 'parseMd5Anim', {
111
+ declared: numFrames,
112
+ found: frames.length,
113
+ });
114
+ }
115
+ if (joints.length < hierarchy.length) {
116
+ reportImportDiagnostic(diagnostics, ImportDiagnosticSeverity.Reject, 'md5anim.joints-too-few', 'parseMd5Anim', {
117
+ animationJoints: hierarchy.length,
118
+ suppliedJoints: joints.length,
119
+ });
120
+ }
121
+ else {
122
+ clip = buildAnimationClip(joints, hierarchy, baseframe, frames, frameRate);
123
+ }
124
+ }
125
+ if (md5Drops !== null) {
126
+ for (const tally of md5Drops.values()) {
127
+ reportImportDiagnostic(diagnostics, tally.severity, tally.kind, 'parseMd5Anim', {
128
+ ...tally.detail,
129
+ count: tally.count,
130
+ });
131
+ }
132
+ }
133
+ return clip;
134
+ }
135
+ // Builds the AnimationClip from parsed MD5 anim data. Each joint gets a translation channel
136
+ // (3 components) and a rotation channel (4 components, quaternion slerp).
137
+ function buildAnimationClip(joints, hierarchy, baseframe, frames, frameRate) {
138
+ const frameCount = frames.length;
139
+ const jointCount = hierarchy.length;
140
+ const channels = [];
141
+ // Build time array: one entry per frame, spaced by 1/frameRate.
142
+ const times = [];
143
+ for (let f = 0; f < frameCount; f++) {
144
+ times.push(f / frameRate);
145
+ }
146
+ // Bind each animation channel to its joint by NAME, not array position. MD5 joint names are unique,
147
+ // and the caller may pass the joint nodes in any order — the mesh importer supplies them in MD5 skeleton
148
+ // order, but a consumer that re-collects them from the scene graph (e.g. a depth-first walk of a nested
149
+ // skeleton) yields a different order. Index binding silently mis-poses the joints whose two orders differ
150
+ // (worst at skeleton branches like finger chains); name binding is order-independent. Falls back to the
151
+ // positional joint when a hierarchy name has no matching node (e.g. unnamed nodes), preserving the old
152
+ // behavior for callers that pass MD5-ordered, possibly-unnamed joints.
153
+ const nodeByName = new Map();
154
+ for (const joint of joints) {
155
+ if (joint.name)
156
+ nodeByName.set(joint.name, joint);
157
+ }
158
+ for (let j = 0; j < jointCount; j++) {
159
+ const entry = hierarchy[j];
160
+ const base = j < baseframe.length ? baseframe[j] : DEFAULT_BASEFRAME;
161
+ const flags = entry.flags;
162
+ // Extract per-frame translation and rotation for this joint.
163
+ const translationValues = [];
164
+ const rotationValues = [];
165
+ for (let f = 0; f < frameCount; f++) {
166
+ const frameData = frames[f];
167
+ let tx = base.positionX;
168
+ let ty = base.positionY;
169
+ let tz = base.positionZ;
170
+ let qx = base.orientationX;
171
+ let qy = base.orientationY;
172
+ let qz = base.orientationZ;
173
+ let componentOffset = entry.startIndex;
174
+ if (flags & FLAG_TX) {
175
+ tx = frameData[componentOffset++] ?? tx;
176
+ }
177
+ if (flags & FLAG_TY) {
178
+ ty = frameData[componentOffset++] ?? ty;
179
+ }
180
+ if (flags & FLAG_TZ) {
181
+ tz = frameData[componentOffset++] ?? tz;
182
+ }
183
+ if (flags & FLAG_QX) {
184
+ qx = frameData[componentOffset++] ?? qx;
185
+ }
186
+ if (flags & FLAG_QY) {
187
+ qy = frameData[componentOffset++] ?? qy;
188
+ }
189
+ if (flags & FLAG_QZ) {
190
+ qz = frameData[componentOffset++] ?? qz;
191
+ }
192
+ // Reconstruct quaternion W from XYZ.
193
+ const sumSq = qx * qx + qy * qy + qz * qz;
194
+ const qw = sumSq < 1 ? -Math.sqrt(1 - sumSq) : 0;
195
+ // Push in MD5's native Z-up space; batch-converted below.
196
+ translationValues.push(tx, ty, tz);
197
+ rotationValues.push(qx, qy, qz, qw);
198
+ }
199
+ // Convert from Z-up to Y-up.
200
+ convertPositionsZUpToYUp(translationValues);
201
+ convertQuaternionsZUpToYUp(rotationValues);
202
+ const node = nodeByName.get(entry.name) ?? joints[j];
203
+ const translationTrack = createAnimationTrack({
204
+ components: 3,
205
+ times,
206
+ values: translationValues,
207
+ });
208
+ channels.push(createAnimationChannel(translationTrack, { node, path: Scene3DAnimationPathTranslation }));
209
+ const rotationTrack = createAnimationTrack({
210
+ components: 4,
211
+ quaternion: true,
212
+ times,
213
+ values: rotationValues,
214
+ });
215
+ channels.push(createAnimationChannel(rotationTrack, { node, path: Scene3DAnimationPathRotation }));
216
+ }
217
+ return createAnimationClip(channels);
218
+ }
219
+ // Parses the hierarchy { ... } block. Returns the line index after the closing brace.
220
+ function parseHierarchyBlock(lines, startLine, hierarchy, md5Drops) {
221
+ let i = startLine;
222
+ while (i < lines.length) {
223
+ const line = lines[i].trim();
224
+ i++;
225
+ if (line === '}')
226
+ return i;
227
+ if (line.length === 0 || line.startsWith('//'))
228
+ continue;
229
+ const entry = parseHierarchyLine(line, md5Drops, i - 1);
230
+ if (entry !== null)
231
+ hierarchy.push(entry);
232
+ }
233
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Recover, 'md5anim.hierarchy-block-unclosed', '', {});
234
+ return i;
235
+ }
236
+ // Parses a single hierarchy line: "jointName" parentIndex flags startIndex
237
+ function parseHierarchyLine(line, md5Drops, lineIndex) {
238
+ const nameStart = line.indexOf('"');
239
+ const nameEnd = line.indexOf('"', nameStart + 1);
240
+ if (nameStart < 0 || nameEnd < 0) {
241
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.malformed-hierarchy', 'missing-name-quotes', {
242
+ firstLine: lineIndex + 1,
243
+ reason: 'missing-name-quotes',
244
+ });
245
+ return null;
246
+ }
247
+ const name = line.slice(nameStart + 1, nameEnd);
248
+ const rest = line.slice(nameEnd + 1).trim();
249
+ const tokens = rest.split(/\s+/).filter((t) => t.length > 0);
250
+ if (tokens.length < 3) {
251
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.malformed-hierarchy', 'not-enough-components', {
252
+ firstLine: lineIndex + 1,
253
+ reason: 'not-enough-components',
254
+ });
255
+ return null;
256
+ }
257
+ const parentIndex = parseInt(tokens[0], 10);
258
+ const flags = parseInt(tokens[1], 10);
259
+ const startIndex = parseInt(tokens[2], 10);
260
+ if (!Number.isFinite(parentIndex) || !Number.isFinite(flags) || !Number.isFinite(startIndex)) {
261
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.malformed-hierarchy', 'non-numeric-values', {
262
+ firstLine: lineIndex + 1,
263
+ reason: 'non-numeric-values',
264
+ });
265
+ return null;
266
+ }
267
+ return { flags, name, parentIndex, startIndex };
268
+ }
269
+ // Parses the baseframe { ... } block. Returns the line index after the closing brace.
270
+ function parseBaseframeBlock(lines, startLine, baseframe, md5Drops) {
271
+ let i = startLine;
272
+ while (i < lines.length) {
273
+ const line = lines[i].trim();
274
+ i++;
275
+ if (line === '}')
276
+ return i;
277
+ if (line.length === 0 || line.startsWith('//'))
278
+ continue;
279
+ const pose = parseBaseframeLine(line, md5Drops, i - 1);
280
+ if (pose !== null)
281
+ baseframe.push(pose);
282
+ }
283
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Recover, 'md5anim.baseframe-block-unclosed', '', {});
284
+ return i;
285
+ }
286
+ // Parses a baseframe line: ( posX posY posZ ) ( quatX quatY quatZ )
287
+ function parseBaseframeLine(line, md5Drops, lineIndex) {
288
+ const tokens = line
289
+ .replace(/[()]/g, '')
290
+ .split(/\s+/)
291
+ .filter((t) => t.length > 0);
292
+ if (tokens.length < 6) {
293
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.malformed-baseframe', 'not-enough-components', {
294
+ firstLine: lineIndex + 1,
295
+ reason: 'not-enough-components',
296
+ });
297
+ return null;
298
+ }
299
+ const positionX = parseFloat(tokens[0]);
300
+ const positionY = parseFloat(tokens[1]);
301
+ const positionZ = parseFloat(tokens[2]);
302
+ const orientationX = parseFloat(tokens[3]);
303
+ const orientationY = parseFloat(tokens[4]);
304
+ const orientationZ = parseFloat(tokens[5]);
305
+ if (!Number.isFinite(positionX) ||
306
+ !Number.isFinite(positionY) ||
307
+ !Number.isFinite(positionZ) ||
308
+ !Number.isFinite(orientationX) ||
309
+ !Number.isFinite(orientationY) ||
310
+ !Number.isFinite(orientationZ)) {
311
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.malformed-baseframe', 'non-numeric-values', {
312
+ firstLine: lineIndex + 1,
313
+ reason: 'non-numeric-values',
314
+ });
315
+ return null;
316
+ }
317
+ return { orientationX, orientationY, orientationZ, positionX, positionY, positionZ };
318
+ }
319
+ // Parses a frame N { ... } block, collecting all float values. Returns the line index after the
320
+ // closing brace.
321
+ function parseFrameBlock(lines, startLine, frameData, md5Drops) {
322
+ let i = startLine;
323
+ while (i < lines.length) {
324
+ const line = lines[i].trim();
325
+ i++;
326
+ if (line === '}')
327
+ return i;
328
+ if (line.length === 0 || line.startsWith('//'))
329
+ continue;
330
+ const tokens = line.split(/\s+/).filter((t) => t.length > 0);
331
+ for (const token of tokens) {
332
+ const value = parseFloat(token);
333
+ if (!Number.isFinite(value)) {
334
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Drop, 'md5anim.non-numeric-frame-value', 'non-numeric-frame-value', {
335
+ firstLine: i,
336
+ firstToken: token,
337
+ });
338
+ continue;
339
+ }
340
+ frameData.push(value);
341
+ }
342
+ }
343
+ tallyMd5AnimDrop(md5Drops, ImportDiagnosticSeverity.Recover, 'md5anim.frame-block-unclosed', '', {});
344
+ return i;
345
+ }
346
+ // Skips a block delimited by { ... }. Returns the line index after the closing brace.
347
+ function skipBlock(lines, startLine) {
348
+ let i = startLine;
349
+ while (i < lines.length) {
350
+ if (lines[i].trim() === '}')
351
+ return i + 1;
352
+ i++;
353
+ }
354
+ return i;
355
+ }
356
+ // MD5 anim hierarchy entry flags: each bit indicates which component is animated and read from the
357
+ // frame data rather than the baseframe.
358
+ const FLAG_TX = 1;
359
+ const FLAG_TY = 2;
360
+ const FLAG_TZ = 4;
361
+ const FLAG_QX = 8;
362
+ const FLAG_QY = 16;
363
+ const FLAG_QZ = 32;
364
+ const DEFAULT_BASEFRAME = {
365
+ orientationX: 0,
366
+ orientationY: 0,
367
+ orientationZ: 0,
368
+ positionX: 0,
369
+ positionY: 0,
370
+ positionZ: 0,
371
+ };
372
+ // Records one offender against its (kind, discriminator) tally — the aggregate-once alternative to a
373
+ // per-line/per-token `reportImportDiagnostic` in a hierarchy/baseframe/frame block. No-op (never allocates)
374
+ // when no collector is engaged. `firstDetail` is kept from the FIRST offender; later ones only bump count.
375
+ function tallyMd5AnimDrop(tallies, severity, kind, discriminator, firstDetail) {
376
+ if (tallies === null)
377
+ return;
378
+ const key = `${kind}|${discriminator}`;
379
+ const existing = tallies.get(key);
380
+ if (existing === undefined)
381
+ tallies.set(key, { count: 1, detail: firstDetail, kind, severity });
382
+ else
383
+ existing.count++;
384
+ }
385
+ //# sourceMappingURL=md5AnimParse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5AnimParse.js","sourceRoot":"","sources":["../src/md5AnimParse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Scene3D } from '@flighthq/types';
2
+ import type { ImportDiagnostic, Scene3DDocument } from '@flighthq/types';
3
+ export declare function createScene3DFromMd5Mesh(source: string, diagnostics?: ImportDiagnostic[]): Scene3D;
4
+ export declare function importMd5Mesh(meshSource: string, animSource?: string | null, diagnostics?: ImportDiagnostic[]): Scene3D;
5
+ export declare function parseMd5Mesh(source: string, diagnostics?: ImportDiagnostic[]): Scene3DDocument;
6
+ //# sourceMappingURL=md5Parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md5Parse.d.ts","sourceRoot":"","sources":["../src/md5Parse.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAIhB,eAAe,EAQhB,MAAM,iBAAiB,CAAC;AA0BzB,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAElG;AAUD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,OAAO,CAmBT;AAyBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAyP9F"}