UNPKG

forge-svf-utils

Version:

Utilities for working with Autodesk Forge SVF file format.

32 lines (31 loc) 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const packfile_reader_1 = require("./packfile-reader"); /** * Parses fragments from a binary buffer, typically stored in a file called 'FragmentList.pack', * referenced in the SVF manifest as an asset of type 'Autodesk.CloudPlatform.FragmentList'. * @generator * @param {Buffer} buffer Binary buffer to parse. * @returns {Iterable<IFragment>} Instances of parsed fragments. */ function* parseFragments(buffer) { const pfr = new packfile_reader_1.PackFileReader(buffer); for (let i = 0, len = pfr.numEntries(); i < len; i++) { const entryType = pfr.seekEntry(i); console.assert(entryType); console.assert(entryType.version > 4); const flags = pfr.getUint8(); const visible = (flags & 0x01) !== 0; const materialID = pfr.getVarint(); const geometryID = pfr.getVarint(); const transform = pfr.getTransform(); const bboxOffset = [0, 0, 0]; // TODO: find the bbox offset const bbox = [0, 0, 0, 0, 0, 0]; for (let j = 0; j < 6; j++) { bbox[j] = pfr.getFloat32() + bboxOffset[j % 3]; } const dbID = pfr.getVarint(); yield { visible, materialID, geometryID, dbID, transform, bbox }; } } exports.parseFragments = parseFragments;