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
JavaScript
;
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;