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

Function readNode

scripts/verify-animation-skeleton-mapping.mjs:25–146  ·  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 const properties = [];
49 const propsEnd = offset + propertyListLen;
50
51 while (offset < propsEnd) {
52 const typeCode = String.fromCharCode(buffer[offset]);
53 offset++;
54
55 switch (typeCode) {
56 case 'Y':
57 properties.push(view.getInt16(offset, true));
58 offset += 2;
59 break;
60 case 'C':
61 properties.push(buffer[offset] !== 0);
62 offset += 1;
63 break;
64 case 'I':
65 properties.push(view.getInt32(offset, true));
66 offset += 4;
67 break;
68 case 'F':
69 properties.push(view.getFloat32(offset, true));
70 offset += 4;
71 break;
72 case 'D':
73 properties.push(view.getFloat64(offset, true));
74 offset += 8;
75 break;
76 case 'L':
77 properties.push(view.getBigInt64(offset, true));
78 offset += 8;
79 break;
80 case 'S':
81 case 'R':
82 const strLen = view.getUint32(offset, true);

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