MCPcopy Create free account
hub / github.com/esengine/esengine / readNode

Function readNode

scripts/debug-fbx-animation.mjs:25–149  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

23let offset = 27;
24
25function readNode() {
26 const startOffset = offset;
27 let endOffset, numProperties, propertyListLen, nameLen;
28
29 if (is64Bit) {
30 endOffset = Number(view.getBigUint64(offset, true));
31 numProperties = Number(view.getBigUint64(offset + 8, true));
32 propertyListLen = Number(view.getBigUint64(offset + 16, true));
33 nameLen = view.getUint8(offset + 24);
34 offset += 25;
35 } else {
36 endOffset = view.getUint32(offset, true);
37 numProperties = view.getUint32(offset + 4, true);
38 propertyListLen = view.getUint32(offset + 8, true);
39 nameLen = view.getUint8(offset + 12);
40 offset += 13;
41 }
42
43 if (endOffset === 0) return null;
44
45 const name = new TextDecoder().decode(buffer.slice(offset, offset + nameLen));
46 offset += nameLen;
47
48 // Read properties
49 const properties = [];
50 const propsEnd = offset + propertyListLen;
51
52 while (offset < propsEnd) {
53 const typeCode = String.fromCharCode(buffer[offset]);
54 offset++;
55
56 switch (typeCode) {
57 case 'Y':
58 properties.push(view.getInt16(offset, true));
59 offset += 2;
60 break;
61 case 'C':
62 properties.push(buffer[offset] !== 0);
63 offset += 1;
64 break;
65 case 'I':
66 properties.push(view.getInt32(offset, true));
67 offset += 4;
68 break;
69 case 'F':
70 properties.push(view.getFloat32(offset, true));
71 offset += 4;
72 break;
73 case 'D':
74 properties.push(view.getFloat64(offset, true));
75 offset += 8;
76 break;
77 case 'L':
78 properties.push(view.getBigInt64(offset, true));
79 offset += 8;
80 break;
81 case 'S':
82 case 'R':

Callers 1

Calls 8

getUint8Method · 0.80
getUint32Method · 0.80
getInt16Method · 0.80
getInt32Method · 0.80
getFloat32Method · 0.80
getFloat64Method · 0.80
pushMethod · 0.65
decodeMethod · 0.45

Tested by

no test coverage detected