forge-svf-utils
Version:
Utilities for working with Autodesk Forge SVF file format.
32 lines (31 loc) • 1.34 kB
JavaScript
;
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;