UNPKG

tsinsim

Version:

An InSim library for Node.js (JavaScript runtime environment) with TypeScript support.

44 lines (43 loc) 1.58 kB
import parseLFSMessage from 'parse-lfs-message'; import { Vector3 } from '../../utilities/vector.js'; export const PacketUnpack = (vk, buffer) => { const data = {}; var offset = 0; for (const key of Object.keys(vk)) { const type = vk[key].type; const length = vk[key].length; if (type != 'char') { if (type == 'byte') { data[key] = buffer.readUInt8(offset); } else if (type == 'word') { data[key] = buffer.readUInt16LE(offset); } else if (type == 'short') { data[key] = buffer.readInt16LE(offset); } else if (type == 'int') { data[key] = buffer.readInt32LE(offset); } else if (type == 'unsigned') { data[key] = buffer.readUInt32LE(offset); } else if (type == 'float') { data[key] = buffer.readFloatLE(offset); } else if (type == 'vector') { data[key] = new Vector3(buffer.readFloatLE(offset), buffer.readFloatLE(offset + 4), buffer.readFloatLE(offset + 8)); } else if (type == 'vec') { data[key] = new Vector3(buffer.readInt32LE(offset), buffer.readInt32LE(offset + 4), buffer.readInt32LE(offset + 8)); } } else { if (type == 'char') { data[key] = parseLFSMessage(buffer.subarray(offset, offset + length)); } } offset += length; } return data; };