UNPKG

fbx-parser

Version:

This parser will parse FBX text files and convert them into a JavaScript-Object structure.

106 lines (105 loc) 3.86 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.FBXReader = exports.FBXReaderNode = void 0; var FBXReaderNode = /** @class */ (function () { function FBXReaderNode(fbxNode) { this.fbxNode = fbxNode; } FBXReaderNode.prototype.nodeFilter = function (a, b) { var name = undefined; var propFilter = undefined; if (typeof a === 'string') { name = a; if (typeof b !== 'undefined') propFilter = b; } else propFilter = a; var filter; if (typeof propFilter !== 'undefined') { var propFilterFunc_1 = function (node) { for (var prop in propFilter) { var index = parseInt(prop); if (node.props[index] !== propFilter[index]) return false; } return true; }; if (typeof name !== 'undefined') { filter = function (node) { return node.name === name && propFilterFunc_1(node); }; } else { filter = propFilterFunc_1; } } else { filter = function (node) { return node.name === name; }; } return filter; }; FBXReaderNode.prototype.node = function (a, b) { var node = this.fbxNode.nodes.find(this.nodeFilter(a, b)); if (typeof node === 'undefined') return; return new FBXReaderNode(node); }; FBXReaderNode.prototype.nodes = function (a, b) { var nodes = this.fbxNode.nodes.filter(this.nodeFilter(a, b)).map(function (node) { return new FBXReaderNode(node); }); return nodes; }; FBXReaderNode.prototype.prop = function (index, type) { var prop = this.fbxNode.props[index]; if (typeof type === 'undefined') return prop; if (type === 'boolean') return typeof prop === 'boolean' ? prop : undefined; if (type === 'number') return typeof prop === 'number' ? prop : undefined; if (type === 'bigint') return typeof prop === 'bigint' ? prop : undefined; if (type === 'string') return typeof prop === 'string' ? prop : undefined; // array types if (!Array.isArray(prop)) return undefined; if (prop.length == 0) return prop; if (type === 'boolean[]') return typeof prop[0] === 'boolean' ? prop : undefined; if (type === 'number[]') return typeof prop[0] === 'number' ? prop : undefined; if (type === 'bigint[]') return typeof prop[0] === 'bigint' ? prop : undefined; }; return FBXReaderNode; }()); exports.FBXReaderNode = FBXReaderNode; var FBXReader = /** @class */ (function (_super) { __extends(FBXReader, _super); function FBXReader(fbx) { var _this = this; var rootNode = { name: '', props: [], nodes: fbx, }; _this = _super.call(this, rootNode) || this; _this.fbx = fbx; return _this; } return FBXReader; }(FBXReaderNode)); exports.FBXReader = FBXReader;