@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,4 @@
1
+ import type { AwdDecompressor } from '@flighthq/types';
2
+ export declare const inflateAwdDeflate: AwdDecompressor;
3
+ export declare function registerAwd2DeflateDecompressor(): void;
4
+ //# sourceMappingURL=awd2Inflate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awd2Inflate.d.ts","sourceRoot":"","sources":["../src/awd2Inflate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAkBvD,eAAO,MAAM,iBAAiB,EAAE,eAc/B,CAAC;AAKF,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD"}
@@ -0,0 +1,249 @@
1
+ import { registerAwd2Decompressor } from './awd2Parse';
2
+ import { AWD2_COMPRESSION_DEFLATE } from './awd2Schema';
3
+ // Vendored, dependency-free, synchronous DEFLATE/zlib inflater used as the default AWD decompressor.
4
+ // Away3D's exporter compresses the AWD body with `ByteArray.compress()` (zlib format: a 2-byte header,
5
+ // a raw DEFLATE stream, then a 4-byte Adler-32), so `inflateAwdDeflate` accepts a zlib-wrapped stream and
6
+ // transparently falls back to treating the input as headerless raw DEFLATE. It is kept in its own module
7
+ // so `registerAwd2Decompressor`'s opt-in registry stays tree-shakable — a bundle that never calls
8
+ // `registerAwd2DeflateDecompressor` pays nothing for this ~200 lines of Huffman decoding.
9
+ //
10
+ // The seam is deliberately sync (RFC 1951/1950 inflate is a straight-line state machine) so the existing
11
+ // synchronous `parseAwd2` keeps working; a host with a faster native codec can register its own instead.
12
+ // Inflates a zlib-wrapped or raw DEFLATE stream, returning the decompressed bytes or null on any malformed
13
+ // input (bad Huffman table, back-reference past the output start, truncated stream). Typed as an
14
+ // AwdDecompressor so it can be handed straight to registerAwd2Decompressor.
15
+ export const inflateAwdDeflate = (compressed) => {
16
+ const input = compressed;
17
+ // Detect a zlib header: low nibble of CMF is the compression method (8 = deflate) and the 16-bit
18
+ // (CMF,FLG) big-endian value is a multiple of 31. A preset dictionary (FDICT) is not supported.
19
+ let start = 0;
20
+ if (input.length >= 2 && (input[0] & 0x0f) === 8 && (((input[0] << 8) | input[1]) & 0xffff) % 31 === 0) {
21
+ if ((input[1] & 0x20) !== 0)
22
+ return null; // FDICT preset dictionary — unsupported
23
+ start = 2;
24
+ }
25
+ try {
26
+ return rawInflate(input, start);
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ };
32
+ // Registers `inflateAwdDeflate` as the decompressor for AWD2_COMPRESSION_DEFLATE, enabling
33
+ // `parseAwd2`/`parseAwd2SkeletonAnimations` to import Away3D's default (compressed) AWD exports. Opt-in so
34
+ // the codec is only bundled when a caller asks for it. Idempotent; last registration wins.
35
+ export function registerAwd2DeflateDecompressor() {
36
+ registerAwd2Decompressor(AWD2_COMPRESSION_DEFLATE, inflateAwdDeflate);
37
+ }
38
+ // RFC 1951 length codes 257-285: the base copy length and the number of extra bits that follow.
39
+ const LENGTH_BASE = [
40
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258,
41
+ ];
42
+ const LENGTH_EXTRA = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
43
+ // RFC 1951 distance codes 0-29: the base back-distance and the number of extra bits that follow.
44
+ const DISTANCE_BASE = [
45
+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
46
+ 8193, 12289, 16385, 24577,
47
+ ];
48
+ const DISTANCE_EXTRA = [
49
+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,
50
+ ];
51
+ // The order in which the 19 code-length-code lengths are written in a dynamic-Huffman block header.
52
+ const CODE_LENGTH_ORDER = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
53
+ // An LSB-first bit reader over the DEFLATE stream, plus the growable output buffer. Throwing on overrun
54
+ // keeps the decode a straight line; inflateAwdDeflate turns the throw into a null return.
55
+ class InflateState {
56
+ input;
57
+ position;
58
+ bitBuffer = 0;
59
+ bitCount = 0;
60
+ output = new Uint8Array(1024);
61
+ outputLength = 0;
62
+ constructor(input, position) {
63
+ this.input = input;
64
+ this.position = position;
65
+ }
66
+ readBit() {
67
+ if (this.bitCount === 0) {
68
+ if (this.position >= this.input.length)
69
+ throw new Error('deflate: read past end of stream');
70
+ this.bitBuffer = this.input[this.position++];
71
+ this.bitCount = 8;
72
+ }
73
+ const bit = this.bitBuffer & 1;
74
+ this.bitBuffer >>= 1;
75
+ this.bitCount--;
76
+ return bit;
77
+ }
78
+ readBits(count, base) {
79
+ let value = 0;
80
+ for (let i = 0; i < count; i++)
81
+ value |= this.readBit() << i;
82
+ return value + base;
83
+ }
84
+ writeByte(byte) {
85
+ if (this.outputLength >= this.output.length) {
86
+ const grown = new Uint8Array(this.output.length * 2);
87
+ grown.set(this.output);
88
+ this.output = grown;
89
+ }
90
+ this.output[this.outputLength++] = byte;
91
+ }
92
+ }
93
+ // Inflates the raw DEFLATE block stream at `start`, returning exactly the decompressed bytes.
94
+ function rawInflate(input, start) {
95
+ const state = new InflateState(input, start);
96
+ let final = 0;
97
+ do {
98
+ final = state.readBit();
99
+ const type = state.readBits(2, 0);
100
+ if (type === 0)
101
+ inflateStoredBlock(state);
102
+ else if (type === 1)
103
+ inflateHuffmanBlock(state, FIXED_LITERAL_TREE, FIXED_DISTANCE_TREE);
104
+ else if (type === 2)
105
+ inflateDynamicBlock(state);
106
+ else
107
+ throw new Error('deflate: invalid block type');
108
+ } while (final === 0);
109
+ return state.output.slice(0, state.outputLength);
110
+ }
111
+ // A stored (uncompressed) block: align to the next byte, read the 16-bit LEN and its one's-complement
112
+ // NLEN, then copy LEN literal bytes.
113
+ function inflateStoredBlock(state) {
114
+ state.bitBuffer = 0;
115
+ state.bitCount = 0;
116
+ if (state.position + 4 > state.input.length)
117
+ throw new Error('deflate: truncated stored block header');
118
+ const len = state.input[state.position] | (state.input[state.position + 1] << 8);
119
+ const nlen = state.input[state.position + 2] | (state.input[state.position + 3] << 8);
120
+ state.position += 4;
121
+ if ((len ^ 0xffff) !== nlen)
122
+ throw new Error('deflate: stored block length mismatch');
123
+ if (state.position + len > state.input.length)
124
+ throw new Error('deflate: truncated stored block data');
125
+ for (let i = 0; i < len; i++)
126
+ state.writeByte(state.input[state.position++]);
127
+ }
128
+ // Decodes one Huffman-coded block against the given literal/length and distance trees, emitting literals
129
+ // and resolving <length, distance> back-references against the bytes already written.
130
+ function inflateHuffmanBlock(state, literalTree, distanceTree) {
131
+ for (;;) {
132
+ const symbol = decodeSymbol(state, literalTree);
133
+ if (symbol === 256)
134
+ return; // end of block
135
+ if (symbol < 256) {
136
+ state.writeByte(symbol);
137
+ continue;
138
+ }
139
+ const lengthIndex = symbol - 257;
140
+ if (lengthIndex >= LENGTH_BASE.length)
141
+ throw new Error('deflate: invalid length symbol');
142
+ const length = state.readBits(LENGTH_EXTRA[lengthIndex], LENGTH_BASE[lengthIndex]);
143
+ const distanceSymbol = decodeSymbol(state, distanceTree);
144
+ if (distanceSymbol >= DISTANCE_BASE.length)
145
+ throw new Error('deflate: invalid distance symbol');
146
+ const distance = state.readBits(DISTANCE_EXTRA[distanceSymbol], DISTANCE_BASE[distanceSymbol]);
147
+ let source = state.outputLength - distance;
148
+ if (source < 0)
149
+ throw new Error('deflate: back-reference before start of output');
150
+ for (let i = 0; i < length; i++)
151
+ state.writeByte(state.output[source++]);
152
+ }
153
+ }
154
+ // Builds the dynamic literal/length and distance Huffman trees from the block header (their code lengths
155
+ // are themselves Huffman-coded by a code-length code), then decodes the block.
156
+ function inflateDynamicBlock(state) {
157
+ const literalCount = state.readBits(5, 257);
158
+ const distanceCount = state.readBits(5, 1);
159
+ const codeLengthCount = state.readBits(4, 4);
160
+ const codeLengthLengths = new Array(19).fill(0);
161
+ for (let i = 0; i < codeLengthCount; i++)
162
+ codeLengthLengths[CODE_LENGTH_ORDER[i]] = state.readBits(3, 0);
163
+ const codeLengthTree = buildHuffmanTree(codeLengthLengths, 19);
164
+ // Decode the literal+distance code lengths as one run, honoring the repeat codes 16 (copy previous
165
+ // 3-6×), 17 (zero 3-10×), and 18 (zero 11-138×).
166
+ const lengths = new Array(literalCount + distanceCount).fill(0);
167
+ let i = 0;
168
+ while (i < lengths.length) {
169
+ const symbol = decodeSymbol(state, codeLengthTree);
170
+ if (symbol < 16) {
171
+ lengths[i++] = symbol;
172
+ }
173
+ else if (symbol === 16) {
174
+ if (i === 0)
175
+ throw new Error('deflate: repeat with no previous length');
176
+ const repeat = state.readBits(2, 3);
177
+ const previous = lengths[i - 1];
178
+ for (let r = 0; r < repeat && i < lengths.length; r++)
179
+ lengths[i++] = previous;
180
+ }
181
+ else if (symbol === 17) {
182
+ const repeat = state.readBits(3, 3);
183
+ for (let r = 0; r < repeat && i < lengths.length; r++)
184
+ lengths[i++] = 0;
185
+ }
186
+ else if (symbol === 18) {
187
+ const repeat = state.readBits(7, 11);
188
+ for (let r = 0; r < repeat && i < lengths.length; r++)
189
+ lengths[i++] = 0;
190
+ }
191
+ else {
192
+ throw new Error('deflate: invalid code-length symbol');
193
+ }
194
+ }
195
+ const literalTree = buildHuffmanTree(lengths.slice(0, literalCount), literalCount);
196
+ const distanceTree = buildHuffmanTree(lengths.slice(literalCount), distanceCount);
197
+ inflateHuffmanBlock(state, literalTree, distanceTree);
198
+ }
199
+ // Builds a canonical Huffman decode tree from per-symbol code lengths (0 = unused). Symbols are bucketed
200
+ // by length so decodeSymbol can walk the code space one bit at a time.
201
+ function buildHuffmanTree(lengths, count) {
202
+ const counts = new Array(16).fill(0);
203
+ for (let i = 0; i < count; i++)
204
+ counts[lengths[i]]++;
205
+ counts[0] = 0;
206
+ const offsets = new Array(16).fill(0);
207
+ for (let len = 1; len < 16; len++)
208
+ offsets[len] = offsets[len - 1] + counts[len - 1];
209
+ const symbols = new Array(count).fill(0);
210
+ for (let i = 0; i < count; i++) {
211
+ if (lengths[i] !== 0)
212
+ symbols[offsets[lengths[i]]++] = i;
213
+ }
214
+ return { counts, symbols };
215
+ }
216
+ // Reads bits until they identify one canonical Huffman symbol (the tinf decode: extend the code one bit
217
+ // at a time, subtracting each length's code count until the code falls within a bucket).
218
+ function decodeSymbol(state, tree) {
219
+ let code = 0;
220
+ let first = 0;
221
+ let index = 0;
222
+ for (let len = 1; len < 16; len++) {
223
+ code |= state.readBit();
224
+ const count = tree.counts[len];
225
+ if (code - first < count)
226
+ return tree.symbols[index + (code - first)];
227
+ index += count;
228
+ first += count;
229
+ first <<= 1;
230
+ code <<= 1;
231
+ }
232
+ throw new Error('deflate: invalid Huffman code');
233
+ }
234
+ // The RFC 1951 fixed Huffman trees: literals/lengths 0-287 (lengths 8/9/7/8 by range) and 5-bit distances.
235
+ const FIXED_LITERAL_TREE = buildFixedLiteralTree();
236
+ const FIXED_DISTANCE_TREE = buildHuffmanTree(new Array(30).fill(5), 30);
237
+ function buildFixedLiteralTree() {
238
+ const lengths = new Array(288);
239
+ for (let i = 0; i < 144; i++)
240
+ lengths[i] = 8;
241
+ for (let i = 144; i < 256; i++)
242
+ lengths[i] = 9;
243
+ for (let i = 256; i < 280; i++)
244
+ lengths[i] = 7;
245
+ for (let i = 280; i < 288; i++)
246
+ lengths[i] = 8;
247
+ return buildHuffmanTree(lengths, 288);
248
+ }
249
+ //# sourceMappingURL=awd2Inflate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awd2Inflate.js","sourceRoot":"","sources":["../src/awd2Inflate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Scene3D } from '@flighthq/types';
2
+ import type { AnimationClip, AwdDecompressor, ImportDiagnostic, Scene3DDocument, Node3D } from '@flighthq/types';
3
+ export declare function createScene3DFromAwd2(bytes: Readonly<Uint8Array>, diagnostics?: ImportDiagnostic[]): Scene3D;
4
+ export declare function parseAwd2(bytes: Readonly<Uint8Array>, diagnostics?: ImportDiagnostic[]): Scene3DDocument;
5
+ export declare function parseAwd2SkeletonAnimations(bytes: Readonly<Uint8Array>, joints: readonly Node3D[], diagnostics?: ImportDiagnostic[]): Record<string, AnimationClip>;
6
+ export declare function registerAwd2Decompressor(compression: number, decompressor: AwdDecompressor | null): void;
7
+ //# sourceMappingURL=awd2Parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awd2Parse.d.ts","sourceRoot":"","sources":["../src/awd2Parse.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EACf,gBAAgB,EAIhB,eAAe,EAMf,MAAM,EAKP,MAAM,iBAAiB,CAAC;AA+DzB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAE5G;AA0BD,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAkQxG;AAUD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiJ/B;AAOD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAGxG"}