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

Function readNode

scripts/check-prerotation.mjs:21–117  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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

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