diff --git a/data/shared/citizen/scripting/v8/main.js b/data/shared/citizen/scripting/v8/main.js index cfba3db175..dc4d3b44fd 100644 --- a/data/shared/citizen/scripting/v8/main.js +++ b/data/shared/citizen/scripting/v8/main.js @@ -3,6 +3,9 @@ const EXT_FUNCREF = 10; const EXT_LOCALFUNCREF = 11; +const EXT_VECTOR2 = 20; +const EXT_VECTOR3 = 21; +const EXT_VECTOR4 = 22; (function (global) { let boundaryIdx = 1; @@ -47,6 +50,16 @@ const EXT_LOCALFUNCREF = 11; binarraybuffer: true }); + // Unpack a msgpack buffer into an array of vector components with preserved precision + const vectorUnpacker = (data => Array.from(new Float32Array(data.buffer), (v) => Number(v.toPrecision(7)))); + + // Vector2 unpacker + codec.addExtUnpacker(EXT_VECTOR2, vectorUnpacker); + // Vector3 unpacker + codec.addExtUnpacker(EXT_VECTOR3, vectorUnpacker); + // Vector4 unpacker + codec.addExtUnpacker(EXT_VECTOR4, vectorUnpacker); + const pack = data => msgpack.encode(data, { codec }); const unpack = data => msgpack.decode(data, { codec });