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

Function readNode

scripts/verify-anim-t0.mjs:24–120  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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

Callers 1

verify-anim-t0.mjsFile · 0.70

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