diff --git a/dist/convert2xkt.cjs.js b/dist/convert2xkt.cjs.js index 33ea3ea..b2a4a97 100644 --- a/dist/convert2xkt.cjs.js +++ b/dist/convert2xkt.cjs.js @@ -16135,6 +16135,7 @@ function parseGLTFIntoXKTModel({ includeTextures: (includeTextures !== false), geometryCreated: {}, nextId: 0, + geometriesCreated : {}, stats }; @@ -16423,7 +16424,7 @@ function parseScene(ctx, scene) { } } -function countMeshUsage(ctx, node, level=0) { +function countMeshUsage(ctx, node, level = 0) { if (!node) { return; } @@ -16439,12 +16440,12 @@ function countMeshUsage(ctx, node, level=0) { ctx.error("Node not found: " + i); continue; } - countMeshUsage(ctx, childNode, level+1); + countMeshUsage(ctx, childNode, level + 1); } } } -function testIfNodesHaveNames(node, level=0) { +function testIfNodesHaveNames(node, level = 0) { if (!node) { return; } @@ -16455,7 +16456,7 @@ function testIfNodesHaveNames(node, level=0) { const children = node.children; for (let i = 0, len = children.length; i < len; i++) { const childNode = children[i]; - if (testIfNodesHaveNames(childNode, level+1)) { + if (testIfNodesHaveNames(childNode, level + 1)) { return true; } } @@ -16609,6 +16610,17 @@ function parseNodeMatrix(node, matrix) { return matrix; } +function createPrimitiveHash(primitive) { + const hash = []; + const attributes = primitive.attributes; + if (attributes) { + for (let key in attributes) { + hash.push(attributes[key].id); + } + } + return hash.join("."); +} + /** * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel. * @@ -16630,10 +16642,10 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { for (let i = 0; i < numPrimitives; i++) { try { const primitive = mesh.primitives[i]; - if (!primitive._xktGeometryId) { - const xktGeometryId = "geometry-" + ctx.nextId++; + const geometryId = createPrimitiveHash(primitive); + if (!ctx.geometriesCreated[geometryId]) { const geometryCfg = { - geometryId: xktGeometryId + geometryId }; switch (primitive.mode) { case 0: // POINTS @@ -16688,13 +16700,13 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { } } ctx.xktModel.createGeometry(geometryCfg); - primitive._xktGeometryId = xktGeometryId; + ctx.geometriesCreated[geometryId] = true; ctx.stats.numGeometries++; } const xktMeshId = ctx.nextId++; const meshCfg = { meshId: xktMeshId, - geometryId: primitive._xktGeometryId, + geometryId, matrix: matrix ? matrix.slice() : math.identityMat4() }; const material = primitive.material; diff --git a/dist/xeokit-convert.cjs.js b/dist/xeokit-convert.cjs.js index 222558f..6604620 100644 --- a/dist/xeokit-convert.cjs.js +++ b/dist/xeokit-convert.cjs.js @@ -10461,6 +10461,7 @@ function parseGLTFIntoXKTModel(_ref) { includeTextures: includeTextures !== false, geometryCreated: {}, nextId: 0, + geometriesCreated: {}, stats: stats }; ctx.log("Using parser: parseGLTFIntoXKTModel"); @@ -10914,6 +10915,16 @@ function parseNodeMatrix(node, matrix) { } return matrix; } +function createPrimitiveHash(primitive) { + var hash = []; + var attributes = primitive.attributes; + if (attributes) { + for (var key in attributes) { + hash.push(attributes[key].id); + } + } + return hash.join("."); +} /** * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel. @@ -10936,10 +10947,10 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { for (var i = 0; i < numPrimitives; i++) { try { var primitive = mesh.primitives[i]; - if (!primitive._xktGeometryId) { - var xktGeometryId = "geometry-" + ctx.nextId++; + var geometryId = createPrimitiveHash(primitive); + if (!ctx.geometriesCreated[geometryId]) { var geometryCfg = { - geometryId: xktGeometryId + geometryId: geometryId }; switch (primitive.mode) { case 0: @@ -11001,13 +11012,13 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { } } ctx.xktModel.createGeometry(geometryCfg); - primitive._xktGeometryId = xktGeometryId; + ctx.geometriesCreated[geometryId] = true; ctx.stats.numGeometries++; } var xktMeshId = ctx.nextId++; var meshCfg = { meshId: xktMeshId, - geometryId: primitive._xktGeometryId, + geometryId: geometryId, matrix: matrix ? matrix.slice() : _lib_math_js__WEBPACK_IMPORTED_MODULE_1__.math.identityMat4() }; var material = primitive.material; diff --git a/dist/xeokit-convert.cjs.js.map b/dist/xeokit-convert.cjs.js.map index 3cd74bb..c68625a 100644 --- a/dist/xeokit-convert.cjs.js.map +++ b/dist/xeokit-convert.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"xeokit-convert.cjs.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AAJA,IAKMA,MAAM,gBAAAC,YAAA;AAER;AACJ;AACA;AACI,SAAAD,OAAYE,IAAI,EAAE;EAAAC,eAAA,OAAAH,MAAA;EAEd;AACR;AACA;AACA;AACA;EACQ,IAAI,CAACE,IAAI,GAAGA,IAAI;;EAEhB;AACR;AACA;EACQ,IAAI,CAACE,QAAQ,GAAG,IAAI;;EAEpB;AACR;AACA;EACQ,IAAI,CAACC,IAAI,GAAG,IAAI;;EAEhB;AACR;AACA;EACQ,IAAI,CAACC,KAAK,GAAG,IAAI;AACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;ACjC+B;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASME,SAAS,gBAAAP,YAAA;AAEX;AACJ;AACA;AACA;AACA;AACI,SAAAO,UAAYC,QAAQ,EAAGC,MAAM,EAAE;EAAAP,eAAA,OAAAK,SAAA;EAE3B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACC,QAAQ,GAAGA,QAAQ;;EAExB;AACR;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACE,WAAW,GAAG,IAAI;;EAEvB;AACR;AACA;AACA;AACA;EACQ,IAAI,CAACD,MAAM,GAAGA,MAAM;;EAEpB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACR,IAAI,GAAGK,8CAAI,CAACK,KAAK,CAAC,CAAC;;EAExB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACC,mBAAmB,GAAG,KAAK;AACpC,CAAC;;;;;;;;;;;;;;;;;;;;;ACtEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASMC,WAAW;EAEb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAAAA,YAAYC,GAAG,EAAE;IAAAZ,eAAA,OAAAW,WAAA;IAEb;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACE,UAAU,GAAGD,GAAG,CAACC,UAAU;;IAEhC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGF,GAAG,CAACE,aAAa;;IAEtC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGH,GAAG,CAACG,aAAa;;IAEtC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,YAAY,GAAG,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,SAAS,GAAGL,GAAG,CAACK,SAAS;;IAE9B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,kBAAkB,GAAG,IAAIC,WAAW,CAACP,GAAG,CAACK,SAAS,CAACG,MAAM,CAAC;;IAE/D;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,OAAO,GAAGT,GAAG,CAACS,OAAO;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,IAAI;;IAE7B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAGX,GAAG,CAACW,gBAAgB;;IAE5C;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,GAAG,GAAGZ,GAAG,CAACY,GAAG;;IAElB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGb,GAAG,CAACa,aAAa;;IAEtC;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,OAAO,GAAGd,GAAG,CAACc,OAAO;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAGf,GAAG,CAACe,WAAW;;IAElC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,KAAK,GAAG,KAAK;EACtB;;EAEA;AACJ;AACA;AACA;EAHI9B,YAAA,CAAAa,WAAA;IAAAkB,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAa;MAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,EAAE;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,EAAE;;IAEzB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,4BAA4B,GAAG,IAAI/N,YAAY,CAAC,EAAE,CAAC;;IAExD;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACgO,UAAU,GAAG,CAAC,CAAC;;IAEpB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,cAAc,GAAG,EAAE;;IAExB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC;;IAElB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,YAAY,GAAG,EAAE;;IAEtB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,EAAE;;IAEzB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACnQ,MAAM,GAAG,CAAC,CAAC;;IAEhB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACoQ,UAAU,GAAG,EAAE;;IAEpB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC1Q,QAAQ,GAAG,CAAC,CAAC;;IAElB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC2Q,YAAY,GAAG,EAAE;;IAEtB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,SAAS,GAAG,EAAE;;IAEnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC9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","sources":["webpack://convert2xkt/webpack/universalModuleDefinition","webpack://convert2xkt/./src/XKTModel/KDNode.js","webpack://convert2xkt/./src/XKTModel/XKTEntity.js","webpack://convert2xkt/./src/XKTModel/XKTGeometry.js","webpack://convert2xkt/./src/XKTModel/XKTMesh.js","webpack://convert2xkt/./src/XKTModel/XKTMetaObject.js","webpack://convert2xkt/./src/XKTModel/XKTModel.js","webpack://convert2xkt/./src/XKTModel/XKTPropertySet.js","webpack://convert2xkt/./src/XKTModel/XKTTexture.js","webpack://convert2xkt/./src/XKTModel/XKTTextureSet.js","webpack://convert2xkt/./src/XKTModel/XKTTile.js","webpack://convert2xkt/./src/XKTModel/lib/buildEdgeIndices.js","webpack://convert2xkt/./src/XKTModel/lib/geometryCompression.js","webpack://convert2xkt/./src/XKTModel/lib/isTriangleMeshSolid.js","webpack://convert2xkt/./src/XKTModel/lib/toArraybuffer.js","webpack://convert2xkt/./src/XKTModel/lib/utils.js","webpack://convert2xkt/./src/XKTModel/writeXKTModelToArrayBuffer.js","webpack://convert2xkt/./src/XKT_INFO.js","webpack://convert2xkt/./src/constants.js","webpack://convert2xkt/./src/convert2xkt.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxLinesGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildCylinderGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildGridGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildPlaneGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildSphereGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildTorusGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildVectorTextGeometry.js","webpack://convert2xkt/./src/index.js","webpack://convert2xkt/./src/lib/earcut.js","webpack://convert2xkt/./src/lib/faceToVertexNormals.js","webpack://convert2xkt/./src/lib/math.js","webpack://convert2xkt/./src/lib/mergeVertices.js","webpack://convert2xkt/./src/parsers/parseCityJSONIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseGLTFIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseGLTFJSONIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseIFCIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseLASIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseMetaModelIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parsePCDIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parsePLYIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseSTLIntoXKTModel.js","webpack://convert2xkt/external commonjs \"@loaders.gl/core\"","webpack://convert2xkt/external commonjs \"@loaders.gl/gltf\"","webpack://convert2xkt/external commonjs \"@loaders.gl/images\"","webpack://convert2xkt/external commonjs \"@loaders.gl/las\"","webpack://convert2xkt/external commonjs \"@loaders.gl/ply\"","webpack://convert2xkt/external commonjs \"@loaders.gl/polyfills\"","webpack://convert2xkt/external commonjs \"@loaders.gl/textures\"","webpack://convert2xkt/external commonjs \"fs\"","webpack://convert2xkt/external commonjs \"pako\"","webpack://convert2xkt/external commonjs \"path\"","webpack://convert2xkt/webpack/bootstrap","webpack://convert2xkt/webpack/runtime/compat get default export","webpack://convert2xkt/webpack/runtime/define property getters","webpack://convert2xkt/webpack/runtime/hasOwnProperty shorthand","webpack://convert2xkt/webpack/runtime/make namespace object","webpack://convert2xkt/./index.dist.node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"convert2xkt\"] = factory();\n\telse\n\t\troot[\"convert2xkt\"] = factory();\n})(global, () => {\nreturn ","/**\n * A kd-Tree node, used internally by {@link XKTModel}.\n *\n * @private\n */\nclass KDNode {\n\n /**\n * Create a KDNode with an axis-aligned 3D World-space boundary.\n */\n constructor(aabb) {\n\n /**\n * The axis-aligned 3D World-space boundary of this KDNode.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}s within this KDNode.\n */\n this.entities = null;\n\n /**\n * The left child KDNode.\n */\n this.left = null;\n\n /**\n * The right child KDNode.\n */\n this.right = null;\n }\n}\n\nexport {KDNode};","import {math} from \"../lib/math.js\";\n\n/**\n * An object within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTModel#entities} and {@link XKTModel#entitiesList}\n * * Has one or more {@link XKTMesh}s, each having an {@link XKTGeometry}\n *\n * @class XKTEntity\n */\nclass XKTEntity {\n\n /**\n * @private\n * @param entityId\n * @param meshes\n */\n constructor(entityId, meshes) {\n\n /**\n * Unique ID of this ````XKTEntity```` in {@link XKTModel#entities}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * We can also use {@link XKTModel#createMetaObject} to create an {@link XKTMetaObject} to specify metadata for\n * this ````XKTEntity````. To associate the {@link XKTMetaObject} with our {@link XKTEntity}, we give\n * {@link XKTMetaObject#metaObjectId} the same value as {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.entityId = entityId;\n\n /**\n * Index of this ````XKTEntity```` in {@link XKTModel#entitiesList}.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Number}\n */\n this.entityIndex = null;\n\n /**\n * A list of {@link XKTMesh}s that indicate which {@link XKTGeometry}s are used by this Entity.\n *\n * @type {XKTMesh[]}\n */\n this.meshes = meshes;\n\n /**\n * World-space axis-aligned bounding box (AABB) that encloses the {@link XKTGeometry#positions} of\n * the {@link XKTGeometry}s that are used by this ````XKTEntity````.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Float32Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this ````XKTEntity```` shares {@link XKTGeometry}s with other {@link XKTEntity}'s.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * Note that when an ````XKTEntity```` shares ````XKTGeometrys````, it shares **all** of its ````XKTGeometrys````. An ````XKTEntity````\n * never shares only some of its ````XKTGeometrys```` - it always shares either the whole set or none at all.\n *\n * @type {Boolean}\n */\n this.hasReusedGeometries = false;\n }\n}\n\nexport {XKTEntity};","/**\n * An element of reusable geometry within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createGeometry}\n * * Stored in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}\n * * Referenced by {@link XKTMesh}s, which belong to {@link XKTEntity}s\n *\n * @class XKTGeometry\n */\nclass XKTGeometry {\n\n /**\n * @private\n * @param {*} cfg Configuration for the XKTGeometry.\n * @param {Number} cfg.geometryId Unique ID of the geometry in {@link XKTModel#geometries}.\n * @param {String} cfg.primitiveType Type of this geometry - \"triangles\", \"points\" or \"lines\" so far.\n * @param {Number} cfg.geometryIndex Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n * @param {Float64Array} cfg.positions Non-quantized 3D vertex positions.\n * @param {Float32Array} cfg.normals Non-compressed vertex normals.\n * @param {Uint8Array} cfg.colorsCompressed Unsigned 8-bit integer RGBA vertex colors.\n * @param {Float32Array} cfg.uvs Non-compressed vertex UV coordinates.\n * @param {Uint32Array} cfg.indices Indices to organize the vertex positions and normals into triangles.\n * @param {Uint32Array} cfg.edgeIndices Indices to organize the vertex positions into edges.\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTGeometry in {@link XKTModel#geometries}.\n *\n * @type {Number}\n */\n this.geometryId = cfg.geometryId;\n\n /**\n * The type of primitive - \"triangles\" | \"points\" | \"lines\".\n *\n * @type {String}\n */\n this.primitiveType = cfg.primitiveType;\n\n /**\n * Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n *\n * @type {Number}\n */\n this.geometryIndex = cfg.geometryIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTGeometry.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * Non-quantized 3D vertex positions.\n *\n * Defined for all primitive types.\n *\n * @type {Float64Array}\n */\n this.positions = cfg.positions;\n\n /**\n * Quantized vertex positions.\n *\n * Defined for all primitive types.\n *\n * This array is later created from {@link XKTGeometry#positions} by {@link XKTModel#finalize}.\n *\n * @type {Uint16Array}\n */\n this.positionsQuantized = new Uint16Array(cfg.positions.length);\n\n /**\n * Non-compressed 3D vertex normals.\n *\n * Defined only for triangle primitives. Can be null if we want xeokit to auto-generate them. Ignored for points and lines.\n *\n * @type {Float32Array}\n */\n this.normals = cfg.normals;\n\n /**\n * Compressed vertex normals.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * This array is later created from {@link XKTGeometry#normals} by {@link XKTModel#finalize}.\n *\n * Will be null if {@link XKTGeometry#normals} is also null.\n *\n * @type {Int8Array}\n */\n this.normalsOctEncoded = null;\n\n /**\n * Compressed RGBA vertex colors.\n *\n * Defined only for point primitives. Ignored for triangles and lines.\n *\n * @type {Uint8Array}\n */\n this.colorsCompressed = cfg.colorsCompressed;\n\n /**\n * Non-compressed vertex UVs.\n *\n * @type {Float32Array}\n */\n this.uvs = cfg.uvs;\n\n /**\n * Compressed vertex UVs.\n *\n * @type {Uint16Array}\n */\n this.uvsCompressed = cfg.uvsCompressed;\n\n /**\n * Indices that organize the vertex positions and normals as triangles.\n *\n * Defined only for triangle and lines primitives. Ignored for points.\n *\n * @type {Uint32Array}\n */\n this.indices = cfg.indices;\n\n /**\n * Indices that organize the vertex positions as edges.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * @type {Uint32Array}\n */\n this.edgeIndices = cfg.edgeIndices;\n\n /**\n * When {@link XKTGeometry#primitiveType} is \"triangles\", this is ````true```` when this geometry is a watertight mesh.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.solid = false;\n }\n\n /**\n * Convenience property that is ````true```` when {@link XKTGeometry#numInstances} is greater that one.\n * @returns {boolean}\n */\n get reused() {\n return (this.numInstances > 1);\n }\n}\n\nexport {XKTGeometry};","/**\n * Represents the usage of a {@link XKTGeometry} by an {@link XKTEntity}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTEntity#meshes} and {@link XKTModel#meshesList}\n * * Has an {@link XKTGeometry}, and an optional {@link XKTTextureSet}, both of which it can share with other {@link XKTMesh}es\n * * Has {@link XKTMesh#color}, {@link XKTMesh#opacity}, {@link XKTMesh#metallic} and {@link XKTMesh#roughness} PBR attributes\n * @class XKTMesh\n */\nclass XKTMesh {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTMesh in {@link XKTModel#meshes}.\n *\n * @type {Number}\n */\n this.meshId = cfg.meshId;\n\n /**\n * Index of this XKTMesh in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.meshIndex = cfg.meshIndex;\n\n /**\n * The 4x4 modeling transform matrix.\n *\n * Transform is relative to the center of the {@link XKTTile} that contains this XKTMesh's {@link XKTEntity},\n * which is given in {@link XKTMesh#entity}.\n *\n * When the ````XKTEntity```` shares its {@link XKTGeometry}s with other ````XKTEntity````s, this matrix is used\n * to transform this XKTMesh's XKTGeometry into World-space. When this XKTMesh does not share its ````XKTGeometry````,\n * then this matrix is ignored.\n *\n * @type {Number[]}\n */\n this.matrix = cfg.matrix;\n\n /**\n * The instanced {@link XKTGeometry}.\n *\n * @type {XKTGeometry}\n */\n this.geometry = cfg.geometry;\n\n /**\n * RGB color of this XKTMesh.\n *\n * @type {Float32Array}\n */\n this.color = cfg.color || new Float32Array([1, 1, 1]);\n\n /**\n * PBR metallness of this XKTMesh.\n *\n * @type {Number}\n */\n this.metallic = (cfg.metallic !== null && cfg.metallic !== undefined) ? cfg.metallic : 0;\n\n /**\n * PBR roughness of this XKTMesh.\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {Number}\n * @type {XKTTextureSet}\n */\n this.roughness = (cfg.roughness !== null && cfg.roughness !== undefined) ? cfg.roughness : 1;\n\n /**\n * Opacity of this XKTMesh.\n *\n * @type {Number}\n */\n this.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? cfg.opacity : 1.0;\n\n /**\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {XKTTextureSet}\n */\n this.textureSet = cfg.textureSet;\n\n /**\n * The owner {@link XKTEntity}.\n *\n * Set by {@link XKTModel#createEntity}.\n *\n * @type {XKTEntity}\n */\n this.entity = null; // Set after instantiation, when the Entity is known\n }\n}\n\nexport {XKTMesh};","/**\n * A meta object within an {@link XKTModel}.\n *\n * These are plugged together into a parent-child hierarchy to represent structural\n * metadata for the {@link XKTModel}.\n *\n * The leaf XKTMetaObjects are usually associated with\n * an {@link XKTEntity}, which they do so by sharing the same ID,\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * * Created by {@link XKTModel#createMetaObject}\n * * Stored in {@link XKTModel#metaObjects} and {@link XKTModel#metaObjectsList}\n * * Has an ID, a type, and a human-readable name\n * * May have a parent {@link XKTMetaObject}\n * * When no children, is usually associated with an {@link XKTEntity}\n *\n * @class XKTMetaObject\n */\nclass XKTMetaObject {\n\n /**\n * @private\n * @param metaObjectId\n * @param propertySetIds\n * @param metaObjectType\n * @param metaObjectName\n * @param parentMetaObjectId\n */\n constructor(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId) {\n\n /**\n * Unique ID of this ````XKTMetaObject```` in {@link XKTModel#metaObjects}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * If this is a leaf XKTMetaObject, where it is not a parent to any other XKTMetaObject,\n * then this will be equal to the ID of an {@link XKTEntity} in {@link XKTModel#entities},\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.metaObjectId = metaObjectId;\n\n /**\n * Unique ID of one or more property sets that contains additional metadata about this\n * {@link XKTMetaObject}. The property sets can be stored in an external system, or\n * within the {@link XKTModel}, as {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n *\n * @type {String[]}\n */\n this.propertySetIds = propertySetIds;\n\n /**\n * Indicates the XKTMetaObject meta object type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.metaObjectType = metaObjectType;\n\n /**\n * Indicates the XKTMetaObject meta object name.\n *\n * This defaults to {@link XKTMetaObject#metaObjectId}.\n *\n * @type {string}\n */\n this.metaObjectName = metaObjectName;\n\n /**\n * The parent XKTMetaObject, if any.\n *\n * Will be null if there is no parent.\n *\n * @type {String}\n */\n this.parentMetaObjectId = parentMetaObjectId;\n }\n}\n\nexport {XKTMetaObject};","import {math} from \"../lib/math.js\";\nimport {geometryCompression} from \"./lib/geometryCompression.js\";\nimport {buildEdgeIndices} from \"./lib/buildEdgeIndices.js\";\nimport {isTriangleMeshSolid} from \"./lib/isTriangleMeshSolid.js\";\n\nimport {XKTMesh} from './XKTMesh.js';\nimport {XKTGeometry} from './XKTGeometry.js';\nimport {XKTEntity} from './XKTEntity.js';\nimport {XKTTile} from './XKTTile.js';\nimport {KDNode} from \"./KDNode.js\";\nimport {XKTMetaObject} from \"./XKTMetaObject.js\";\nimport {XKTPropertySet} from \"./XKTPropertySet.js\";\nimport {mergeVertices} from \"../lib/mergeVertices.js\";\nimport {XKT_INFO} from \"../XKT_INFO.js\";\nimport {XKTTexture} from \"./XKTTexture\";\nimport {XKTTextureSet} from \"./XKTTextureSet\";\nimport {encode, load} from \"@loaders.gl/core\";\nimport {KTX2BasisWriter} from \"@loaders.gl/textures\";\nimport {ImageLoader} from '@loaders.gl/images';\n\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\n\nconst tempMat4 = math.mat4();\nconst tempMat4b = math.mat4();\n\nconst kdTreeDimLength = new Float64Array(3);\n\n// XKT texture types\n\nconst COLOR_TEXTURE = 0;\nconst METALLIC_ROUGHNESS_TEXTURE = 1;\nconst NORMALS_TEXTURE = 2;\nconst EMISSIVE_TEXTURE = 3;\nconst OCCLUSION_TEXTURE = 4;\n\n// KTX2 encoding options for each texture type\n\nconst TEXTURE_ENCODING_OPTIONS = {}\nTEXTURE_ENCODING_OPTIONS[COLOR_TEXTURE] = {\n useSRGB: true,\n qualityLevel: 50,\n encodeUASTC: true,\n mipmaps: true\n};\nTEXTURE_ENCODING_OPTIONS[EMISSIVE_TEXTURE] = {\n useSRGB: true,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[METALLIC_ROUGHNESS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 50,\n mipmaps: true // Needed for GGX roughness shading\n};\nTEXTURE_ENCODING_OPTIONS[NORMALS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[OCCLUSION_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\n\n/**\n * A document model that represents the contents of an .XKT file.\n *\n * * An XKTModel contains {@link XKTTile}s, which spatially subdivide the model into axis-aligned, box-shaped regions.\n * * Each {@link XKTTile} contains {@link XKTEntity}s, which represent the objects within its region.\n * * Each {@link XKTEntity} has {@link XKTMesh}s, which each have a {@link XKTGeometry}. Each {@link XKTGeometry} can be shared by multiple {@link XKTMesh}s.\n * * Import models into an XKTModel using {@link parseGLTFJSONIntoXKTModel}, {@link parseIFCIntoXKTModel}, {@link parseCityJSONIntoXKTModel} etc.\n * * Build an XKTModel programmatically using {@link XKTModel#createGeometry}, {@link XKTModel#createMesh} and {@link XKTModel#createEntity}.\n * * Serialize an XKTModel to an ArrayBuffer using {@link writeXKTModelToArrayBuffer}.\n *\n * ## Usage\n *\n * See [main docs page](/docs/#javascript-api) for usage examples.\n *\n * @class XKTModel\n */\nclass XKTModel {\n\n /**\n * Constructs a new XKTModel.\n *\n * @param {*} [cfg] Configuration\n * @param {Number} [cfg.edgeThreshold=10]\n * @param {Number} [cfg.minTileSize=500]\n */\n constructor(cfg = {}) {\n\n /**\n * The model's ID, if available.\n *\n * Will be \"default\" by default.\n *\n * @type {String}\n */\n this.modelId = cfg.modelId || \"default\";\n\n /**\n * The project ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.projectId = cfg.projectId || \"\";\n\n /**\n * The revision ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.revisionId = cfg.revisionId || \"\";\n\n /**\n * The model author, if available.\n *\n * Will be an empty string by default.\n *\n * @property author\n * @type {String}\n */\n this.author = cfg.author || \"\";\n\n /**\n * The date the model was created, if available.\n *\n * Will be an empty string by default.\n *\n * @property createdAt\n * @type {String}\n */\n this.createdAt = cfg.createdAt || \"\";\n\n /**\n * The application that created the model, if available.\n *\n * Will be an empty string by default.\n *\n * @property creatingApplication\n * @type {String}\n */\n this.creatingApplication = cfg.creatingApplication || \"\";\n\n /**\n * The model schema version, if available.\n *\n * In the case of IFC, this could be \"IFC2x3\" or \"IFC4\", for example.\n *\n * Will be an empty string by default.\n *\n * @property schema\n * @type {String}\n */\n this.schema = cfg.schema || \"\";\n\n /**\n * The XKT format version.\n *\n * @property xktVersion;\n * @type {number}\n */\n this.xktVersion = XKT_INFO.xktVersion;\n\n /**\n *\n * @type {Number|number}\n */\n this.edgeThreshold = cfg.edgeThreshold || 10;\n\n /**\n * Minimum diagonal size of the boundary of an {@link XKTTile}.\n *\n * @type {Number|number}\n */\n this.minTileSize = cfg.minTileSize || 500;\n\n /**\n * Optional overall AABB that contains all the {@link XKTEntity}s we'll create in this model, if previously known.\n *\n * This is the AABB of a complete set of input files that are provided as a split-model set for conversion.\n *\n * This is used to help the {@link XKTTile.aabb}s within split models align neatly with each other, as we\n * build them with a k-d tree in {@link XKTModel#finalize}. Without this, the AABBs of the different parts\n * tend to misalign slightly, resulting in excess number of {@link XKTTile}s, which degrades memory and rendering\n * performance when the XKT is viewer in the xeokit Viewer.\n */\n this.modelAABB = cfg.modelAABB;\n\n /**\n * Map of {@link XKTPropertySet}s within this XKTModel, each mapped to {@link XKTPropertySet#propertySetId}.\n *\n * Created by {@link XKTModel#createPropertySet}.\n *\n * @type {{String:XKTPropertySet}}\n */\n this.propertySets = {};\n\n /**\n * {@link XKTPropertySet}s within this XKTModel.\n *\n * Each XKTPropertySet holds its position in this list in {@link XKTPropertySet#propertySetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTPropertySet[]}\n */\n this.propertySetsList = [];\n\n /**\n * Map of {@link XKTMetaObject}s within this XKTModel, each mapped to {@link XKTMetaObject#metaObjectId}.\n *\n * Created by {@link XKTModel#createMetaObject}.\n *\n * @type {{String:XKTMetaObject}}\n */\n this.metaObjects = {};\n\n /**\n * {@link XKTMetaObject}s within this XKTModel.\n *\n * Each XKTMetaObject holds its position in this list in {@link XKTMetaObject#metaObjectIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMetaObject[]}\n */\n this.metaObjectsList = [];\n\n /**\n * The positions of all shared {@link XKTGeometry}s are de-quantized using this singular\n * de-quantization matrix.\n *\n * This de-quantization matrix is generated from the collective Local-space boundary of the\n * positions of all shared {@link XKTGeometry}s.\n *\n * @type {Float32Array}\n */\n this.reusedGeometriesDecodeMatrix = new Float32Array(16);\n\n /**\n * Map of {@link XKTGeometry}s within this XKTModel, each mapped to {@link XKTGeometry#geometryId}.\n *\n * Created by {@link XKTModel#createGeometry}.\n *\n * @type {{Number:XKTGeometry}}\n */\n this.geometries = {};\n\n /**\n * List of {@link XKTGeometry}s within this XKTModel, in the order they were created.\n *\n * Each XKTGeometry holds its position in this list in {@link XKTGeometry#geometryIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTGeometry[]}\n */\n this.geometriesList = [];\n\n /**\n * Map of {@link XKTTexture}s within this XKTModel, each mapped to {@link XKTTexture#textureId}.\n *\n * Created by {@link XKTModel#createTexture}.\n *\n * @type {{Number:XKTTexture}}\n */\n this.textures = {};\n\n /**\n * List of {@link XKTTexture}s within this XKTModel, in the order they were created.\n *\n * Each XKTTexture holds its position in this list in {@link XKTTexture#textureIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTexture[]}\n */\n this.texturesList = [];\n\n /**\n * Map of {@link XKTTextureSet}s within this XKTModel, each mapped to {@link XKTTextureSet#textureSetId}.\n *\n * Created by {@link XKTModel#createTextureSet}.\n *\n * @type {{Number:XKTTextureSet}}\n */\n this.textureSets = {};\n\n /**\n * List of {@link XKTTextureSet}s within this XKTModel, in the order they were created.\n *\n * Each XKTTextureSet holds its position in this list in {@link XKTTextureSet#textureSetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTextureSet[]}\n */\n this.textureSetsList = [];\n\n /**\n * Map of {@link XKTMesh}s within this XKTModel, each mapped to {@link XKTMesh#meshId}.\n *\n * Created by {@link XKTModel#createMesh}.\n *\n * @type {{Number:XKTMesh}}\n */\n this.meshes = {};\n\n /**\n * List of {@link XKTMesh}s within this XKTModel, in the order they were created.\n *\n * Each XKTMesh holds its position in this list in {@link XKTMesh#meshIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMesh[]}\n */\n this.meshesList = [];\n\n /**\n * Map of {@link XKTEntity}s within this XKTModel, each mapped to {@link XKTEntity#entityId}.\n *\n * Created by {@link XKTModel#createEntity}.\n *\n * @type {{String:XKTEntity}}\n */\n this.entities = {};\n\n /**\n * {@link XKTEntity}s within this XKTModel.\n *\n * Each XKTEntity holds its position in this list in {@link XKTEntity#entityIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTEntity[]}\n */\n this.entitiesList = [];\n\n /**\n * {@link XKTTile}s within this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTile[]}\n */\n this.tilesList = [];\n\n /**\n * The axis-aligned 3D World-space boundary of this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {Float64Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this XKTModel has been finalized.\n *\n * Set ````true```` by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.finalized = false;\n }\n\n /**\n * Creates an {@link XKTPropertySet} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.propertySetId Unique ID for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetType=\"default\"] A meta type for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetName] Human-readable name for the {@link XKTPropertySet}. Defaults to the ````propertySetId```` parameter.\n * @param {String[]} params.properties Properties for the {@link XKTPropertySet}.\n * @returns {XKTPropertySet} The new {@link XKTPropertySet}.\n */\n createPropertySet(params) {\n\n if (!params) {\n throw \"[XKTModel.createPropertySet] Parameters expected: params\";\n }\n\n if (params.propertySetId === null || params.propertySetId === undefined) {\n throw \"[XKTModel.createPropertySet] Parameter expected: params.propertySetId\";\n }\n\n if (params.properties === null || params.properties === undefined) {\n throw \"[XKTModel.createPropertySet] Parameter expected: params.properties\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more property sets\");\n return;\n }\n\n if (this.propertySets[params.propertySetId]) {\n // console.error(\"XKTPropertySet already exists with this ID: \" + params.propertySetId);\n return;\n }\n\n const propertySetId = params.propertySetId;\n const propertySetType = params.propertySetType || \"Default\";\n const propertySetName = params.propertySetName || params.propertySetId;\n const properties = params.properties || [];\n\n const propertySet = new XKTPropertySet(propertySetId, propertySetType, propertySetName, properties);\n\n this.propertySets[propertySetId] = propertySet;\n this.propertySetsList.push(propertySet);\n\n return propertySet;\n }\n\n /**\n * Creates an {@link XKTMetaObject} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.metaObjectId Unique ID for the {@link XKTMetaObject}.\n * @param {String} params.propertySetIds ID of one or more property sets that contains additional metadata about\n * this {@link XKTMetaObject}. The property sets could be stored externally (ie not managed at all by the XKT file),\n * or could be {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n * @param {String} [params.metaObjectType=\"default\"] A meta type for the {@link XKTMetaObject}. Can be anything,\n * but is usually an IFC type, such as \"IfcSite\" or \"IfcWall\".\n * @param {String} [params.metaObjectName] Human-readable name for the {@link XKTMetaObject}. Defaults to the ````metaObjectId```` parameter.\n * @param {String} [params.parentMetaObjectId] ID of the parent {@link XKTMetaObject}, if any. Defaults to the ````metaObjectId```` parameter.\n * @returns {XKTMetaObject} The new {@link XKTMetaObject}.\n */\n createMetaObject(params) {\n\n if (!params) {\n throw \"[XKTModel.createMetaObject] Parameters expected: params\";\n }\n\n if (params.metaObjectId === null || params.metaObjectId === undefined) {\n throw \"[XKTModel.createMetaObject] Parameter expected: params.metaObjectId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more meta objects\");\n return;\n }\n\n if (this.metaObjects[params.metaObjectId]) {\n // console.error(\"XKTMetaObject already exists with this ID: \" + params.metaObjectId);\n return;\n }\n\n const metaObjectId = params.metaObjectId;\n const propertySetIds = params.propertySetIds;\n const metaObjectType = params.metaObjectType || \"Default\";\n const metaObjectName = params.metaObjectName || params.metaObjectId;\n const parentMetaObjectId = params.parentMetaObjectId;\n\n const metaObject = new XKTMetaObject(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId);\n\n this.metaObjects[metaObjectId] = metaObject;\n this.metaObjectsList.push(metaObject);\n\n if (!parentMetaObjectId) {\n if (!this._rootMetaObject) {\n this._rootMetaObject = metaObject;\n }\n }\n\n return metaObject;\n }\n\n /**\n * Creates an {@link XKTTexture} within this XKTModel.\n *\n * Registers the new {@link XKTTexture} in {@link XKTModel#textures} and {@link XKTModel#texturesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureId Unique ID for the {@link XKTTexture}.\n * @param {String} [params.src] Source of an image file for the texture.\n * @param {Buffer} [params.imageData] Image data for the texture.\n * @param {Number} [params.mediaType] Media type (ie. MIME type) of ````imageData````. Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n * @param {Number} [params.width] Texture width, used with ````imageData````. Ignored for compressed textures.\n * @param {Number} [params.height] Texture height, used with ````imageData````. Ignored for compressed textures.\n * @param {Boolean} [params.compressed=true] Whether to compress the texture.\n * @param {Number} [params.minFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers less than one pixel. Supported\n * values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter},\n * {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}. Ignored for compressed textures.\n * @param {Number} [params.magFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}. Ignored for compressed textures.\n * @param {Number} [params.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @param {Number} [params.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * {@param {Number} [params.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @returns {XKTTexture} The new {@link XKTTexture}.\n */\n createTexture(params) {\n\n if (!params) {\n throw \"[XKTModel.createTexture] Parameters expected: params\";\n }\n\n if (params.textureId === null || params.textureId === undefined) {\n throw \"[XKTModel.createTexture] Parameter expected: params.textureId\";\n }\n\n if (!params.imageData && !params.src) {\n throw \"[XKTModel.createTexture] Parameter expected: params.imageData or params.src\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textures\");\n return;\n }\n\n if (this.textures[params.textureId]) {\n console.error(\"XKTTexture already exists with this ID: \" + params.textureId);\n return;\n }\n\n if (params.src) {\n const fileExt = params.src.split('.').pop();\n if (fileExt !== \"jpg\" && fileExt !== \"jpeg\" && fileExt !== \"png\") {\n console.error(`XKTModel does not support image files with extension '${fileExt}' - won't create texture '${params.textureId}`);\n return;\n }\n }\n\n const textureId = params.textureId;\n\n const texture = new XKTTexture({\n textureId,\n imageData: params.imageData,\n mediaType: params.mediaType,\n minFilter: params.minFilter,\n magFilter: params.magFilter,\n wrapS: params.wrapS,\n wrapT: params.wrapT,\n wrapR: params.wrapR,\n width: params.width,\n height: params.height,\n compressed: (params.compressed !== false),\n src: params.src\n });\n\n this.textures[textureId] = texture;\n this.texturesList.push(texture);\n\n return texture;\n }\n\n /**\n * Creates an {@link XKTTextureSet} within this XKTModel.\n *\n * Registers the new {@link XKTTextureSet} in {@link XKTModel#textureSets} and {@link XKTModel#.textureSetsList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureSetId Unique ID for the {@link XKTTextureSet}.\n * @param {*} [params.colorTextureId] ID of *RGBA* base color {@link XKTTexture}, with color in *RGB* and alpha in *A*.\n * @param {*} [params.metallicRoughnessTextureId] ID of *RGBA* metal-roughness {@link XKTTexture}, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [params.normalsTextureId] ID of *RGBA* normal {@link XKTTexture}, with normal map vectors in *RGB*.\n * @param {*} [params.emissiveTextureId] ID of *RGBA* emissive {@link XKTTexture}, with emissive color in *RGB*.\n * @param {*} [params.occlusionTextureId] ID of *RGBA* occlusion {@link XKTTexture}, with occlusion factor in *R*.\n * @returns {XKTTextureSet} The new {@link XKTTextureSet}.\n */\n createTextureSet(params) {\n\n if (!params) {\n throw \"[XKTModel.createTextureSet] Parameters expected: params\";\n }\n\n if (params.textureSetId === null || params.textureSetId === undefined) {\n throw \"[XKTModel.createTextureSet] Parameter expected: params.textureSetId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textureSets\");\n return;\n }\n\n if (this.textureSets[params.textureSetId]) {\n console.error(\"XKTTextureSet already exists with this ID: \" + params.textureSetId);\n return;\n }\n\n let colorTexture;\n if (params.colorTextureId !== undefined && params.colorTextureId !== null) {\n colorTexture = this.textures[params.colorTextureId];\n if (!colorTexture) {\n console.error(`Texture not found: ${params.colorTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n colorTexture.channel = COLOR_TEXTURE;\n }\n\n let metallicRoughnessTexture;\n if (params.metallicRoughnessTextureId !== undefined && params.metallicRoughnessTextureId !== null) {\n metallicRoughnessTexture = this.textures[params.metallicRoughnessTextureId];\n if (!metallicRoughnessTexture) {\n console.error(`Texture not found: ${params.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n metallicRoughnessTexture.channel = METALLIC_ROUGHNESS_TEXTURE;\n }\n\n let normalsTexture;\n if (params.normalsTextureId !== undefined && params.normalsTextureId !== null) {\n normalsTexture = this.textures[params.normalsTextureId];\n if (!normalsTexture) {\n console.error(`Texture not found: ${params.normalsTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n normalsTexture.channel = NORMALS_TEXTURE;\n }\n\n let emissiveTexture;\n if (params.emissiveTextureId !== undefined && params.emissiveTextureId !== null) {\n emissiveTexture = this.textures[params.emissiveTextureId];\n if (!emissiveTexture) {\n console.error(`Texture not found: ${params.emissiveTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n emissiveTexture.channel = EMISSIVE_TEXTURE;\n }\n\n let occlusionTexture;\n if (params.occlusionTextureId !== undefined && params.occlusionTextureId !== null) {\n occlusionTexture = this.textures[params.occlusionTextureId];\n if (!occlusionTexture) {\n console.error(`Texture not found: ${params.occlusionTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n occlusionTexture.channel = OCCLUSION_TEXTURE;\n }\n\n const textureSet = new XKTTextureSet({\n textureSetId: params.textureSetId,\n textureSetIndex: this.textureSetsList.length,\n colorTexture,\n metallicRoughnessTexture,\n normalsTexture,\n emissiveTexture,\n occlusionTexture\n });\n\n this.textureSets[params.textureSetId] = textureSet;\n this.textureSetsList.push(textureSet);\n\n return textureSet;\n }\n\n /**\n * Creates an {@link XKTGeometry} within this XKTModel.\n *\n * Registers the new {@link XKTGeometry} in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.geometryId Unique ID for the {@link XKTGeometry}.\n * @param {String} params.primitiveType The type of {@link XKTGeometry}: \"triangles\", \"lines\" or \"points\".\n * @param {Float64Array} params.positions Floating-point Local-space vertex positions for the {@link XKTGeometry}. Required for all primitive types.\n * @param {Number[]} [params.normals] Floating-point vertex normals for the {@link XKTGeometry}. Only used with triangles primitives. Ignored for points and lines.\n * @param {Number[]} [params.colors] Floating-point RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.uvs] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uv````.\n * @param {Number[]} [params.uv] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uvs````.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Uint32Array} [params.indices] Indices for the {@link XKTGeometry}. Required for triangles and lines primitives. Ignored for points.\n * @param {Number} [params.edgeThreshold=10]\n * @returns {XKTGeometry} The new {@link XKTGeometry}.\n */\n createGeometry(params) {\n\n if (!params) {\n throw \"[XKTModel.createGeometry] Parameters expected: params\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.geometryId\";\n }\n\n if (!params.primitiveType) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.primitiveType\";\n }\n\n if (!params.positions) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.positions\";\n }\n\n const triangles = params.primitiveType === \"triangles\";\n const points = params.primitiveType === \"points\";\n const lines = params.primitiveType === \"lines\";\n const line_strip = params.primitiveType === \"line-strip\";\n const line_loop = params.primitiveType === \"line-loop\";\n const triangle_strip = params.primitiveType === \"triangle-strip\";\n const triangle_fan = params.primitiveType === \"triangle-fan\";\n\n if (!triangles && !points && !lines && !line_strip && !line_loop) {\n throw \"[XKTModel.createGeometry] Unsupported value for params.primitiveType: \"\n + params.primitiveType\n + \"' - supported values are 'triangles', 'points', 'lines', 'line-strip', 'triangle-strip' and 'triangle-fan\";\n }\n\n if (triangles) {\n if (!params.indices) {\n params.indices = this._createDefaultIndices()\n throw \"[XKTModel.createGeometry] Parameter expected for 'triangles' primitive: params.indices\";\n }\n }\n\n if (points) {\n if (!params.colors && !params.colorsCompressed) {\n console.error(\"[XKTModel.createGeometry] Parameter expected for 'points' primitive: params.colors or params.colorsCompressed\");\n return;\n }\n }\n\n if (lines) {\n if (!params.indices) {\n throw \"[XKTModel.createGeometry] Parameter expected for 'lines' primitive: params.indices\";\n }\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more geometries\");\n return;\n }\n\n if (this.geometries[params.geometryId]) {\n console.error(\"XKTGeometry already exists with this ID: \" + params.geometryId);\n return;\n }\n\n const geometryId = params.geometryId;\n const primitiveType = params.primitiveType;\n const positions = new Float64Array(params.positions); // May modify in #finalize\n\n const xktGeometryCfg = {\n geometryId: geometryId,\n geometryIndex: this.geometriesList.length,\n primitiveType: primitiveType,\n positions: positions,\n uvs: params.uvs || params.uv\n }\n\n if (triangles) {\n if (params.normals) {\n xktGeometryCfg.normals = new Float32Array(params.normals);\n }\n if (params.indices) {\n xktGeometryCfg.indices = params.indices;\n } else {\n xktGeometryCfg.indices = this._createDefaultIndices(positions.length / 3);\n }\n }\n\n if (points) {\n if (params.colorsCompressed) {\n xktGeometryCfg.colorsCompressed = new Uint8Array(params.colorsCompressed);\n\n } else {\n const colors = params.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = Math.floor(colors[i] * 255);\n }\n xktGeometryCfg.colorsCompressed = colorsCompressed;\n }\n }\n\n if (lines) {\n xktGeometryCfg.indices = params.indices;\n }\n\n if (triangles) {\n\n if (!params.normals && !params.uv && !params.uvs) {\n\n // Building models often duplicate positions to allow face-aligned vertex normals; when we're not\n // providing normals for a geometry, it becomes possible to merge duplicate vertex positions within it.\n\n // TODO: Make vertex merging also merge normals?\n\n const mergedPositions = [];\n const mergedIndices = [];\n mergeVertices(xktGeometryCfg.positions, xktGeometryCfg.indices, mergedPositions, mergedIndices);\n xktGeometryCfg.positions = new Float64Array(mergedPositions);\n xktGeometryCfg.indices = mergedIndices;\n }\n\n xktGeometryCfg.edgeIndices = buildEdgeIndices(xktGeometryCfg.positions, xktGeometryCfg.indices, null, params.edgeThreshold || this.edgeThreshold || 10);\n }\n\n const geometry = new XKTGeometry(xktGeometryCfg);\n\n this.geometries[geometryId] = geometry;\n this.geometriesList.push(geometry);\n\n return geometry;\n }\n\n _createDefaultIndices(numIndices) {\n const indices = [];\n for (let i = 0; i < numIndices; i++) {\n indices.push(i);\n }\n return indices;\n }\n\n /**\n * Creates an {@link XKTMesh} within this XKTModel.\n *\n * An {@link XKTMesh} can be owned by one {@link XKTEntity}, which can own multiple {@link XKTMesh}es.\n *\n * Registers the new {@link XKTMesh} in {@link XKTModel#meshes} and {@link XKTModel#meshesList}.\n *\n * @param {*} params Method parameters.\n * @param {Number} params.meshId Unique ID for the {@link XKTMesh}.\n * @param {Number} params.geometryId ID of an existing {@link XKTGeometry} in {@link XKTModel#geometries}.\n * @param {Number} [params.textureSetId] Unique ID of an {@link XKTTextureSet} in {@link XKTModel#textureSets}.\n * @param {Float32Array} params.color RGB color for the {@link XKTMesh}, with each color component in range [0..1].\n * @param {Number} [params.metallic=0] How metallic the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully dielectric material, while ````1```` indicates fully metallic.\n * @param {Number} [params.roughness=1] How rough the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully smooth, while ````1```` indicates fully rough.\n * @param {Number} params.opacity Opacity factor for the {@link XKTMesh}, in range [0..1].\n * @param {Float64Array} [params.matrix] Modeling matrix for the {@link XKTMesh}. Overrides ````position````, ````scale```` and ````rotation```` parameters.\n * @param {Number[]} [params.position=[0,0,0]] Position of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] Scale of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.rotation=[0,0,0]] Rotation of the {@link XKTMesh} as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by the ````matrix```` parameter.\n * @returns {XKTMesh} The new {@link XKTMesh}.\n */\n createMesh(params) {\n\n if (params.meshId === null || params.meshId === undefined) {\n throw \"[XKTModel.createMesh] Parameter expected: params.meshId\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"[XKTModel.createMesh] Parameter expected: params.geometryId\";\n }\n\n if (this.finalized) {\n throw \"[XKTModel.createMesh] XKTModel has been finalized, can't add more meshes\";\n }\n\n if (this.meshes[params.meshId]) {\n console.error(\"XKTMesh already exists with this ID: \" + params.meshId);\n return;\n }\n\n const geometry = this.geometries[params.geometryId];\n\n if (!geometry) {\n console.error(\"XKTGeometry not found: \" + params.geometryId);\n return;\n }\n\n geometry.numInstances++;\n\n let textureSet = null;\n if (params.textureSetId) {\n textureSet = this.textureSets[params.textureSetId];\n if (!textureSet) {\n console.error(\"XKTTextureSet not found: \" + params.textureSetId);\n return;\n }\n textureSet.numInstances++;\n }\n\n let matrix = params.matrix;\n\n if (!matrix) {\n\n const position = params.position;\n const scale = params.scale;\n const rotation = params.rotation;\n\n if (position || scale || rotation) {\n matrix = math.identityMat4();\n const quaternion = math.eulerToQuaternion(rotation || [0, 0, 0], \"XYZ\", math.identityQuaternion());\n math.composeMat4(position || [0, 0, 0], quaternion, scale || [1, 1, 1], matrix)\n\n } else {\n matrix = math.identityMat4();\n }\n }\n\n const meshIndex = this.meshesList.length;\n\n const mesh = new XKTMesh({\n meshId: params.meshId,\n meshIndex,\n matrix,\n geometry,\n color: params.color,\n metallic: params.metallic,\n roughness: params.roughness,\n opacity: params.opacity,\n textureSet\n });\n\n this.meshes[mesh.meshId] = mesh;\n this.meshesList.push(mesh);\n\n return mesh;\n }\n\n /**\n * Creates an {@link XKTEntity} within this XKTModel.\n *\n * Registers the new {@link XKTEntity} in {@link XKTModel#entities} and {@link XKTModel#entitiesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.entityId Unique ID for the {@link XKTEntity}.\n * @param {String[]} params.meshIds IDs of {@link XKTMesh}es used by the {@link XKTEntity}. Note that each {@link XKTMesh} can only be used by one {@link XKTEntity}.\n * @returns {XKTEntity} The new {@link XKTEntity}.\n */\n createEntity(params) {\n\n if (!params) {\n throw \"[XKTModel.createEntity] Parameters expected: params\";\n }\n\n if (params.entityId === null || params.entityId === undefined) {\n throw \"[XKTModel.createEntity] Parameter expected: params.entityId\";\n }\n\n if (!params.meshIds) {\n throw \"[XKTModel.createEntity] Parameter expected: params.meshIds\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more entities\");\n return;\n }\n\n if (params.meshIds.length === 0) {\n console.warn(\"XKTEntity has no meshes - won't create: \" + params.entityId);\n return;\n }\n\n let entityId = params.entityId;\n\n if (this.entities[entityId]) {\n while (this.entities[entityId]) {\n entityId = math.createUUID();\n }\n console.error(\"XKTEntity already exists with this ID: \" + params.entityId + \" - substituting random ID instead: \" + entityId);\n }\n\n const meshIds = params.meshIds;\n const meshes = [];\n\n for (let meshIdIdx = 0, meshIdLen = meshIds.length; meshIdIdx < meshIdLen; meshIdIdx++) {\n\n const meshId = meshIds[meshIdIdx];\n const mesh = this.meshes[meshId];\n\n if (!mesh) {\n console.error(\"XKTMesh found: \" + meshId);\n continue;\n }\n\n if (mesh.entity) {\n console.error(\"XKTMesh \" + meshId + \" already used by XKTEntity \" + mesh.entity.entityId);\n continue;\n }\n\n meshes.push(mesh);\n }\n\n const entity = new XKTEntity(entityId, meshes);\n\n for (let i = 0, len = meshes.length; i < len; i++) {\n const mesh = meshes[i];\n mesh.entity = entity;\n }\n\n this.entities[entityId] = entity;\n this.entitiesList.push(entity);\n\n return entity;\n }\n\n /**\n * Creates a default {@link XKTMetaObject} for each {@link XKTEntity} that does not already have one.\n */\n createDefaultMetaObjects() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const metaObjectId = entity.entityId;\n const metaObject = this.metaObjects[metaObjectId];\n\n if (!metaObject) {\n\n if (!this._rootMetaObject) {\n this._rootMetaObject = this.createMetaObject({\n metaObjectId: this.modelId,\n metaObjectType: \"Default\",\n metaObjectName: this.modelId\n });\n }\n\n this.createMetaObject({\n metaObjectId: metaObjectId,\n metaObjectType: \"Default\",\n metaObjectName: \"\" + metaObjectId,\n parentMetaObjectId: this._rootMetaObject.metaObjectId\n });\n }\n }\n }\n\n /**\n * Finalizes this XKTModel.\n *\n * After finalizing, we may then serialize the model to an array buffer using {@link writeXKTModelToArrayBuffer}.\n *\n * Logs error and does nothing if this XKTModel has already been finalized.\n *\n * Internally, this method:\n *\n * * for each {@link XKTEntity} that doesn't already have a {@link XKTMetaObject}, creates one with {@link XKTMetaObject#metaObjectType} set to \"default\"\n * * sets each {@link XKTEntity}'s {@link XKTEntity#hasReusedGeometries} true if it shares its {@link XKTGeometry}s with other {@link XKTEntity}s,\n * * creates each {@link XKTEntity}'s {@link XKTEntity#aabb},\n * * creates {@link XKTTile}s in {@link XKTModel#tilesList}, and\n * * sets {@link XKTModel#finalized} ````true````.\n */\n async finalize() {\n\n if (this.finalized) {\n console.log(\"XKTModel already finalized\");\n return;\n }\n\n this._removeUnusedTextures();\n\n await this._compressTextures();\n\n this._bakeSingleUseGeometryPositions();\n\n this._bakeAndOctEncodeNormals();\n\n this._createEntityAABBs();\n\n const rootKDNode = this._createKDTree();\n\n this.entitiesList = [];\n\n this._createTilesFromKDTree(rootKDNode);\n\n this._createReusedGeometriesDecodeMatrix();\n\n this._flagSolidGeometries();\n\n this.aabb.set(rootKDNode.aabb);\n\n this.finalized = true;\n }\n\n _removeUnusedTextures() {\n let texturesList = [];\n const textures = {};\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n if (texture.channel !== null) {\n texture.textureIndex = texturesList.length;\n texturesList.push(texture);\n textures[texture.textureId] = texture;\n }\n }\n this.texturesList = texturesList;\n this.textures = textures;\n }\n\n _compressTextures() {\n let countTextures = this.texturesList.length;\n return new Promise((resolve) => {\n if (countTextures === 0) {\n resolve();\n return;\n }\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n const encodingOptions = TEXTURE_ENCODING_OPTIONS[texture.channel] || {};\n\n if (texture.src) {\n\n // XKTTexture created with XKTModel#createTexture({ src: ... })\n\n const src = texture.src;\n const fileExt = src.split('.').pop();\n switch (fileExt) {\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n load(src, ImageLoader, {\n image: {\n type: \"data\"\n }\n }).then((imageData) => {\n if (texture.compressed) {\n encode(imageData, KTX2BasisWriter, encodingOptions).then((encodedData) => {\n const encodedImageData = new Uint8Array(encodedData);\n texture.imageData = encodedImageData;\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to load image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n break;\n default:\n if (--countTextures <= 0) {\n resolve();\n }\n break;\n }\n }\n\n if (texture.imageData) {\n\n // XKTTexture created with XKTModel#createTexture({ imageData: ... })\n\n if (texture.compressed) {\n encode(texture.imageData, KTX2BasisWriter, encodingOptions)\n .then((encodedImageData) => {\n texture.imageData = new Uint8Array(encodedImageData);\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }\n }\n });\n }\n\n _bakeSingleUseGeometryPositions() {\n\n for (let j = 0, lenj = this.meshesList.length; j < lenj; j++) {\n\n const mesh = this.meshesList[j];\n\n const geometry = mesh.geometry;\n\n if (geometry.numInstances === 1) {\n\n const matrix = mesh.matrix;\n\n if (matrix && (!math.isIdentityMat4(matrix))) {\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n\n positions[i + 0] = tempVec4b[0];\n positions[i + 1] = tempVec4b[1];\n positions[i + 2] = tempVec4b[2];\n }\n }\n }\n }\n }\n\n _bakeAndOctEncodeNormals() {\n\n for (let i = 0, len = this.meshesList.length; i < len; i++) {\n\n const mesh = this.meshesList[i];\n const geometry = mesh.geometry;\n\n if (geometry.normals && !geometry.normalsOctEncoded) {\n\n geometry.normalsOctEncoded = new Int8Array(geometry.normals.length);\n\n if (geometry.numInstances > 1) {\n geometryCompression.octEncodeNormals(geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n\n } else {\n const modelNormalMatrix = math.inverseMat4(math.transposeMat4(mesh.matrix, tempMat4), tempMat4b);\n geometryCompression.transformAndOctEncodeNormals(modelNormalMatrix, geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n }\n }\n }\n }\n\n _createEntityAABBs() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const entityAABB = entity.aabb;\n const meshes = entity.meshes;\n\n math.collapseAABB3(entityAABB);\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n const matrix = mesh.matrix;\n\n if (geometry.numInstances > 1) {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(entityAABB, tempVec4b);\n }\n\n } else {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n math.expandAABB3Point3(entityAABB, tempVec4a);\n }\n }\n }\n }\n }\n\n _createKDTree() {\n\n let aabb;\n if (this.modelAABB) {\n aabb = this.modelAABB; // Pre-known uber AABB\n } else {\n aabb = math.collapseAABB3();\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n math.expandAABB3(aabb, entity.aabb);\n }\n }\n\n const rootKDNode = new KDNode(aabb);\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n this._insertEntityIntoKDTree(rootKDNode, entity);\n }\n\n return rootKDNode;\n }\n\n _insertEntityIntoKDTree(kdNode, entity) {\n\n const nodeAABB = kdNode.aabb;\n const entityAABB = entity.aabb;\n\n const nodeAABBDiag = math.getAABB3Diag(nodeAABB);\n\n if (nodeAABBDiag < this.minTileSize) {\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n math.expandAABB3(nodeAABB, entityAABB);\n return;\n }\n\n if (kdNode.left) {\n if (math.containsAABB3(kdNode.left.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (kdNode.right) {\n if (math.containsAABB3(kdNode.right.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdTreeDimLength[0] = nodeAABB[3] - nodeAABB[0];\n kdTreeDimLength[1] = nodeAABB[4] - nodeAABB[1];\n kdTreeDimLength[2] = nodeAABB[5] - nodeAABB[2];\n\n let dim = 0;\n\n if (kdTreeDimLength[1] > kdTreeDimLength[dim]) {\n dim = 1;\n }\n\n if (kdTreeDimLength[2] > kdTreeDimLength[dim]) {\n dim = 2;\n }\n\n if (!kdNode.left) {\n const aabbLeft = nodeAABB.slice();\n aabbLeft[dim + 3] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.left = new KDNode(aabbLeft);\n if (math.containsAABB3(aabbLeft, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (!kdNode.right) {\n const aabbRight = nodeAABB.slice();\n aabbRight[dim] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.right = new KDNode(aabbRight);\n if (math.containsAABB3(aabbRight, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n\n math.expandAABB3(nodeAABB, entityAABB);\n }\n\n _createTilesFromKDTree(rootKDNode) {\n this._createTilesFromKDNode(rootKDNode);\n }\n\n _createTilesFromKDNode(kdNode) {\n if (kdNode.entities && kdNode.entities.length > 0) {\n this._createTileFromEntities(kdNode);\n }\n if (kdNode.left) {\n this._createTilesFromKDNode(kdNode.left);\n }\n if (kdNode.right) {\n this._createTilesFromKDNode(kdNode.right);\n }\n }\n\n /**\n * Creates a tile from the given entities.\n *\n * For each single-use {@link XKTGeometry}, this method centers {@link XKTGeometry#positions} to make them relative to the\n * tile's center, then quantizes the positions to unsigned 16-bit integers, relative to the tile's boundary.\n *\n * @param kdNode\n */\n _createTileFromEntities(kdNode) {\n\n const tileAABB = kdNode.aabb;\n const entities = kdNode.entities;\n\n const tileCenter = math.getAABB3Center(tileAABB);\n const tileCenterNeg = math.mulVec3Scalar(tileCenter, -1, math.vec3());\n\n const rtcAABB = math.AABB3(); // AABB centered at the RTC origin\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n for (let i = 0; i < entities.length; i++) {\n\n const entity = entities [i];\n\n const meshes = entity.meshes;\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n\n if (!geometry.reused) { // Batched geometry\n\n const positions = geometry.positions;\n\n // Center positions relative to their tile's World-space center\n\n for (let k = 0, lenk = positions.length; k < lenk; k += 3) {\n\n positions[k + 0] -= tileCenter[0];\n positions[k + 1] -= tileCenter[1];\n positions[k + 2] -= tileCenter[2];\n }\n\n // Quantize positions relative to tile's RTC-space boundary\n\n geometryCompression.quantizePositions(positions, positions.length, rtcAABB, geometry.positionsQuantized);\n\n } else { // Instanced geometry\n\n // Post-multiply a translation to the mesh's modeling matrix\n // to center the entity's geometry instances to the tile RTC center\n\n //////////////////////////////\n // Why do we do this?\n // Seems to break various models\n /////////////////////////////////\n\n math.translateMat4v(tileCenterNeg, mesh.matrix);\n }\n }\n\n entity.entityIndex = this.entitiesList.length;\n\n this.entitiesList.push(entity);\n }\n\n const tile = new XKTTile(tileAABB, entities);\n\n this.tilesList.push(tile);\n }\n\n _createReusedGeometriesDecodeMatrix() {\n\n const tempVec3a = math.vec3();\n const reusedGeometriesAABB = math.collapseAABB3(math.AABB3());\n let countReusedGeometries = 0;\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) { // Instanced geometry\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n math.expandAABB3Point3(reusedGeometriesAABB, tempVec3a);\n }\n\n countReusedGeometries++;\n }\n }\n\n if (countReusedGeometries > 0) {\n\n geometryCompression.createPositionsDecodeMatrix(reusedGeometriesAABB, this.reusedGeometriesDecodeMatrix);\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) {\n geometryCompression.quantizePositions(geometry.positions, geometry.positions.length, reusedGeometriesAABB, geometry.positionsQuantized);\n }\n }\n\n } else {\n math.identityMat4(this.reusedGeometriesDecodeMatrix); // No need for this matrix, but we'll be tidy and set it to identity\n }\n }\n\n _flagSolidGeometries() {\n let maxNumPositions = 0;\n let maxNumIndices = 0;\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n if (geometry.positionsQuantized.length > maxNumPositions) {\n maxNumPositions = geometry.positionsQuantized.length;\n }\n if (geometry.indices.length > maxNumIndices) {\n maxNumIndices = geometry.indices.length;\n }\n }\n }\n let vertexIndexMapping = new Array(maxNumPositions / 3);\n let edges = new Array(maxNumIndices);\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n geometry.solid = isTriangleMeshSolid(geometry.indices, geometry.positionsQuantized, vertexIndexMapping, edges);\n }\n }\n }\n}\n\nexport {\n XKTModel\n}","/**\n * A property set within an {@link XKTModel}.\n *\n * These are shared among {@link XKTMetaObject}s.\n *\n * * Created by {@link XKTModel#createPropertySet}\n * * Stored in {@link XKTModel#propertySets} and {@link XKTModel#propertySetsList}\n * * Has an ID, a type, and a human-readable name\n *\n * @class XKTPropertySet\n */\nclass XKTPropertySet {\n\n /**\n * @private\n */\n constructor(propertySetId, propertySetType, propertySetName, properties) {\n\n /**\n * Unique ID of this ````XKTPropertySet```` in {@link XKTModel#propertySets}.\n *\n * @type {String}\n */\n this.propertySetId = propertySetId;\n\n /**\n * Indicates the ````XKTPropertySet````'s type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.propertySetType = propertySetType;\n\n /**\n * Indicates the XKTPropertySet meta object name.\n *\n * This defaults to {@link XKTPropertySet#propertySetId}.\n *\n * @type {string}\n */\n this.propertySetName = propertySetName;\n\n /**\n * The properties within this ````XKTPropertySet````.\n *\n * @type {*[]}\n */\n this.properties = properties;\n }\n}\n\nexport {XKTPropertySet};","/**\n * A texture shared by {@link XKTTextureSet}s.\n *\n * * Created by {@link XKTModel#createTexture}\n * * Stored in {@link XKTTextureSet#textures}, {@link XKTModel#textures} and {@link XKTModel#texturesList}\n *\n * @class XKTTexture\n */\nimport {RepeatWrapping, LinearMipMapNearestFilter} from \"../constants\";\n\nclass XKTTexture {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTexture in {@link XKTModel#textures}.\n *\n * @type {Number}\n */\n this.textureId = cfg.textureId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureIndex = cfg.textureIndex;\n\n /**\n * Texture image data.\n *\n * @type {Buffer}\n */\n this.imageData = cfg.imageData;\n\n /**\n * Which material channel this texture is applied to, as determined by its {@link XKTTextureSet}s.\n *\n * @type {Number}\n */\n this.channel = null;\n\n /**\n * Width of this XKTTexture.\n *\n * @type {Number}\n */\n this.width = cfg.width;\n\n /**\n * Height of this XKTTexture.\n *\n * @type {Number}\n */\n this.height = cfg.height;\n\n /**\n * Texture file source.\n *\n * @type {String}\n */\n this.src = cfg.src;\n\n /**\n * Whether this XKTTexture is to be compressed.\n *\n * @type {Boolean}\n */\n this.compressed = (!!cfg.compressed);\n\n /**\n * Media type of this XKTTexture.\n *\n * Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.mediaType = cfg.mediaType;\n\n /**\n * How the texture is sampled when a texel covers less than one pixel. Supported values\n * are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter},\n * {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter}\n * and {@link LinearMipMapLinearFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.minFilter = cfg.minFilter || LinearMipMapNearestFilter;\n\n /**\n * How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.magFilter = cfg.magFilter || LinearMipMapNearestFilter;\n\n /**\n * S wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapS = cfg.wrapS || RepeatWrapping;\n\n /**\n * T wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapT = cfg.wrapT || RepeatWrapping;\n\n /**\n * R wrapping mode.\n *\n * Ignored for compressed textures.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * @type {*|number}\n */\n this.wrapR = cfg.wrapR || RepeatWrapping\n }\n}\n\nexport {XKTTexture};","/**\n * A set of textures shared by {@link XKTMesh}es.\n *\n * * Created by {@link XKTModel#createTextureSet}\n * * Registered in {@link XKTMesh#material}, {@link XKTModel#materials} and {@link XKTModel#.textureSetsList}\n *\n * @class XKTMetalRoughMaterial\n */\nclass XKTTextureSet {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTextureSet in {@link XKTModel#materials}.\n *\n * @type {Number}\n */\n this.textureSetId = cfg.textureSetId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureSetIndex = cfg.textureSetIndex;\n\n /**\n * Identifies the material type.\n *\n * @type {Number}\n */\n this.materialType = cfg.materialType;\n\n /**\n * Index of this XKTTextureSet in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.materialIndex = cfg.materialIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTTextureSet.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * RGBA {@link XKTTexture} containing base color in RGB and opacity in A.\n *\n * @type {XKTTexture}\n */\n this.colorTexture = cfg.colorTexture;\n\n /**\n * RGBA {@link XKTTexture} containing metallic and roughness factors in R and G.\n *\n * @type {XKTTexture}\n */\n this.metallicRoughnessTexture = cfg.metallicRoughnessTexture;\n\n /**\n * RGBA {@link XKTTexture} with surface normals in RGB.\n *\n * @type {XKTTexture}\n */\n this.normalsTexture = cfg.normalsTexture;\n\n /**\n * RGBA {@link XKTTexture} with emissive color in RGB.\n *\n * @type {XKTTexture}\n */\n this.emissiveTexture = cfg.emissiveTexture;\n\n /**\n * RGBA {@link XKTTexture} with ambient occlusion factors in RGB.\n *\n * @type {XKTTexture}\n */\n this.occlusionTexture = cfg.occlusionTexture;\n }\n}\n\nexport {XKTTextureSet};","/**\n * @desc A box-shaped 3D region within an {@link XKTModel} that contains {@link XKTEntity}s.\n *\n * * Created by {@link XKTModel#finalize}\n * * Stored in {@link XKTModel#tilesList}\n *\n * @class XKTTile\n */\nclass XKTTile {\n\n /**\n * Creates a new XKTTile.\n *\n * @private\n * @param aabb\n * @param entities\n */\n constructor(aabb, entities) {\n\n /**\n * Axis-aligned World-space bounding box that encloses the {@link XKTEntity}'s within this Tile.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}'s within this XKTTile.\n *\n * @type {XKTEntity[]}\n */\n this.entities = entities;\n }\n}\n\nexport {XKTTile};","import {math} from \"../../lib/math.js\";\n\n/**\n * @private\n */\nconst buildEdgeIndices = (function () {\n\n const uniquePositions = [];\n const indicesLookup = [];\n const indicesReverseLookup = [];\n const weldedIndices = [];\n\n// TODO: Optimize with caching, but need to cater to both compressed and uncompressed positions\n\n const faces = [];\n let numFaces = 0;\n const compa = new Uint16Array(3);\n const compb = new Uint16Array(3);\n const compc = new Uint16Array(3);\n const a = math.vec3();\n const b = math.vec3();\n const c = math.vec3();\n const cb = math.vec3();\n const ab = math.vec3();\n const cross = math.vec3();\n const normal = math.vec3();\n const inverseNormal = math.vec3();\n\n function weldVertices(positions, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = Math.pow(10, precisionPoints);\n let i;\n let len;\n let lenUniquePositions = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = Math.round(vx * precision) + '_' + Math.round(vy * precision) + '_' + Math.round(vz * precision);\n if (positionsMap[key] === undefined) {\n positionsMap[key] = lenUniquePositions / 3;\n uniquePositions[lenUniquePositions++] = vx;\n uniquePositions[lenUniquePositions++] = vy;\n uniquePositions[lenUniquePositions++] = vz;\n }\n indicesLookup[i / 3] = positionsMap[key];\n }\n for (i = 0, len = indices.length; i < len; i++) {\n weldedIndices[i] = indicesLookup[indices[i]];\n indicesReverseLookup[weldedIndices[i]] = indices[i];\n }\n }\n\n function buildFaces(numIndices, positionsDecodeMatrix) {\n numFaces = 0;\n for (let i = 0, len = numIndices; i < len; i += 3) {\n const ia = ((weldedIndices[i]) * 3);\n const ib = ((weldedIndices[i + 1]) * 3);\n const ic = ((weldedIndices[i + 2]) * 3);\n if (positionsDecodeMatrix) {\n compa[0] = uniquePositions[ia];\n compa[1] = uniquePositions[ia + 1];\n compa[2] = uniquePositions[ia + 2];\n compb[0] = uniquePositions[ib];\n compb[1] = uniquePositions[ib + 1];\n compb[2] = uniquePositions[ib + 2];\n compc[0] = uniquePositions[ic];\n compc[1] = uniquePositions[ic + 1];\n compc[2] = uniquePositions[ic + 2];\n // Decode\n math.decompressPosition(compa, positionsDecodeMatrix, a);\n math.decompressPosition(compb, positionsDecodeMatrix, b);\n math.decompressPosition(compc, positionsDecodeMatrix, c);\n } else {\n a[0] = uniquePositions[ia];\n a[1] = uniquePositions[ia + 1];\n a[2] = uniquePositions[ia + 2];\n b[0] = uniquePositions[ib];\n b[1] = uniquePositions[ib + 1];\n b[2] = uniquePositions[ib + 2];\n c[0] = uniquePositions[ic];\n c[1] = uniquePositions[ic + 1];\n c[2] = uniquePositions[ic + 2];\n }\n math.subVec3(c, b, cb);\n math.subVec3(a, b, ab);\n math.cross3Vec3(cb, ab, cross);\n math.normalizeVec3(cross, normal);\n const face = faces[numFaces] || (faces[numFaces] = {normal: math.vec3()});\n face.normal[0] = normal[0];\n face.normal[1] = normal[1];\n face.normal[2] = normal[2];\n numFaces++;\n }\n }\n\n return function (positions, indices, positionsDecodeMatrix, edgeThreshold) {\n weldVertices(positions, indices);\n buildFaces(indices.length, positionsDecodeMatrix);\n const edgeIndices = [];\n const thresholdDot = Math.cos(math.DEGTORAD * edgeThreshold);\n const edges = {};\n let edge1;\n let edge2;\n let index1;\n let index2;\n let key;\n let largeIndex = false;\n let edge;\n let normal1;\n let normal2;\n let dot;\n let ia;\n let ib;\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const faceIndex = i / 3;\n for (let j = 0; j < 3; j++) {\n edge1 = weldedIndices[i + j];\n edge2 = weldedIndices[i + ((j + 1) % 3)];\n index1 = Math.min(edge1, edge2);\n index2 = Math.max(edge1, edge2);\n key = index1 + ',' + index2;\n if (edges[key] === undefined) {\n edges[key] = {\n index1: index1,\n index2: index2,\n face1: faceIndex,\n face2: undefined,\n };\n } else {\n edges[key].face2 = faceIndex;\n }\n }\n }\n for (key in edges) {\n edge = edges[key];\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n if (edge.face2 !== undefined) {\n normal1 = faces[edge.face1].normal;\n normal2 = faces[edge.face2].normal;\n inverseNormal[0] = -normal2[0];\n inverseNormal[1] = -normal2[1];\n inverseNormal[2] = -normal2[2];\n dot = Math.abs(math.dotVec3(normal1, normal2));\n const dot2 = Math.abs(math.dotVec3(normal1, inverseNormal));\n if (dot > thresholdDot && dot2 > thresholdDot) {\n continue;\n }\n }\n ia = indicesReverseLookup[edge.index1];\n ib = indicesReverseLookup[edge.index2];\n if (!largeIndex && ia > 65535 || ib > 65535) {\n largeIndex = true;\n }\n edgeIndices.push(ia);\n edgeIndices.push(ib);\n }\n return (largeIndex) ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices);\n };\n})();\n\n\nexport {buildEdgeIndices};","import {math} from \"../../lib/math.js\";\n\nfunction quantizePositions (positions, lenPositions, aabb, quantizedPositions) {\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n const xMultiplier = maxInt / xwid;\n const yMultiplier = maxInt / ywid;\n const zMultiplier = maxInt / zwid;\n const verify = (num) => num >= 0 ? num : 0;\n for (let i = 0; i < lenPositions; i += 3) {\n quantizedPositions[i + 0] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 0] - xmin) * xMultiplier)));\n quantizedPositions[i + 1] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 1] - ymin) * yMultiplier)));\n quantizedPositions[i + 2] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 2] - zmin) * zMultiplier)));\n }\n}\n\nfunction compressPosition(p, aabb, q) {\n const multiplier = new Float32Array([\n aabb[3] !== aabb[0] ? 65535 / (aabb[3] - aabb[0]) : 0,\n aabb[4] !== aabb[1] ? 65535 / (aabb[4] - aabb[1]) : 0,\n aabb[5] !== aabb[2] ? 65535 / (aabb[5] - aabb[2]) : 0\n ]);\n q[0] = Math.max(0, Math.min(65535, Math.floor((p[0] - aabb[0]) * multiplier[0])));\n q[1] = Math.max(0, Math.min(65535, Math.floor((p[1] - aabb[1]) * multiplier[1])));\n q[2] = Math.max(0, Math.min(65535, Math.floor((p[2] - aabb[2]) * multiplier[2])));\n}\n\nvar createPositionsDecodeMatrix = (function () {\n const translate = math.mat4();\n const scale = math.mat4();\n return function (aabb, positionsDecodeMatrix) {\n positionsDecodeMatrix = positionsDecodeMatrix || math.mat4();\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n math.identityMat4(translate);\n math.translationMat4v(aabb, translate);\n math.identityMat4(scale);\n math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale);\n math.mulMat4(translate, scale, positionsDecodeMatrix);\n return positionsDecodeMatrix;\n };\n})();\n\nfunction transformAndOctEncodeNormals(modelNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n let i, ei;\n let localNormal = math.vec3();\n let worldNormal = math.vec3();\n for (i = 0; i < lenNormals; i += 3) {\n localNormal[0] = normals[i];\n localNormal[1] = normals[i + 1];\n localNormal[2] = normals[i + 2];\n\n math.transformVec3(modelNormalMatrix, localNormal, worldNormal);\n math.normalizeVec3(worldNormal, worldNormal);\n\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(worldNormal, 0, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(worldNormal, 0, dec);\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\nfunction octEncodeNormals(normals, lenNormals, compressedNormals, lenCompressedNormals) { // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n for (let i = 0; i < lenNormals; i += 3) {\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(normals, i, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(normals, i, dec);\n oct = octEncodeVec3(normals, i, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3(array, i, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = array[i] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n let y = array[i + 1] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n if (array[i + 2] < 0) {\n let tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n let tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * Decode an oct-encoded normal\n */\nfunction octDecodeVec2(oct) {\n let x = oct[0];\n let y = oct[1];\n x /= x < 0 ? 127 : 128;\n y /= y < 0 ? 127 : 128;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n return [\n x / length,\n y / length,\n z / length\n ];\n}\n\n/**\n * Dot product of a normal in an array against a candidate decoding\n * @private\n */\nfunction dot(array, i, vec3) {\n return array[i] * vec3[0] + array[i + 1] * vec3[1] + array[i + 2] * vec3[2];\n}\n\n/**\n * @private\n */\nconst geometryCompression = {\n quantizePositions,\n compressPosition,\n createPositionsDecodeMatrix,\n transformAndOctEncodeNormals,\n octEncodeNormals,\n};\n\nexport {geometryCompression}","/**\n * Uses edge adjacency counts to identify if the given triangle mesh can be rendered with backface culling enabled.\n *\n * If all edges are connected to exactly two triangles, then the mesh will likely be a closed solid, and we can safely\n * render it with backface culling enabled.\n *\n * Otherwise, the mesh is a surface, and we must render it with backface culling disabled.\n *\n * @private\n */\nconst isTriangleMeshSolid = (indices, positions, vertexIndexMapping, edges) => {\n\n function compareIndexPositions(a, b)\n {\n let posA, posB;\n\n for (let i = 0; i < 3; i++) {\n posA = positions [a*3+i];\n posB = positions [b*3+i];\n\n if (posA !== posB) {\n return posB - posA;\n }\n }\n\n return 0;\n };\n\n // Group together indices corresponding to same position coordinates\n let newIndices = indices.slice ().sort (compareIndexPositions);\n\n // Calculate the mapping:\n // - from original index in indices array\n // - to indices-for-unique-positions\n let uniqueVertexIndex = null;\n\n for (let i = 0, len = newIndices.length; i < len; i++) {\n if (i == 0 || 0 != compareIndexPositions (\n newIndices[i],\n newIndices[i-1],\n )) {\n // different position\n uniqueVertexIndex = newIndices [i];\n }\n\n vertexIndexMapping [\n newIndices[i]\n ] = uniqueVertexIndex;\n }\n\n // Generate the list of edges\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const a = vertexIndexMapping[indices[i]];\n const b = vertexIndexMapping[indices[i+1]];\n const c = vertexIndexMapping[indices[i+2]];\n\n let a2 = a;\n let b2 = b;\n let c2 = c;\n\n if (a > b && a > c) {\n if (b > c) {\n a2 = a;\n b2 = b;\n c2 = c;\n } else {\n a2 = a;\n b2 = c;\n c2 = b;\n }\n } else if (b > a && b > c) {\n if (a > c) {\n a2 = b;\n b2 = a;\n c2 = c;\n } else {\n a2 = b;\n b2 = c;\n c2 = a;\n }\n } else if (c > a && c > b) {\n if (a > b) {\n a2 = c;\n b2 = a;\n c2 = b;\n } else {\n a2 = c;\n b2 = b;\n c2 = a;\n }\n }\n\n edges[i+0] = [\n a2, b2\n ];\n edges[i+1] = [\n b2, c2\n ];\n\n if (a2 > c2) {\n const temp = c2;\n c2 = a2;\n a2 = temp;\n }\n\n edges[i+2] = [\n c2, a2\n ];\n }\n\n // Group semantically equivalent edgdes together\n function compareEdges (e1, e2) {\n let a, b;\n\n for (let i = 0; i < 2; i++) {\n a = e1[i];\n b = e2[i];\n\n if (b !== a) {\n return b - a;\n }\n }\n\n return 0;\n }\n\n edges = edges.slice(0, indices.length);\n\n edges.sort (compareEdges);\n\n // Make sure each edge is used exactly twice\n let sameEdgeCount = 0;\n\n for (let i = 0; i < edges.length; i++)\n {\n if (i === 0 || 0 !== compareEdges (\n edges[i], edges[i-1]\n )) {\n // different edge\n if (0 !== i && sameEdgeCount !== 2)\n {\n return false;\n }\n\n sameEdgeCount = 1;\n }\n else\n {\n // same edge\n sameEdgeCount++;\n }\n }\n\n if (edges.length > 0 && sameEdgeCount !== 2)\n {\n return false;\n }\n\n // Each edge is used exactly twice, this is a\n // watertight surface and hence a solid geometry.\n return true;\n};\n\nexport {isTriangleMeshSolid};","/**\n * @private\n * @param buf\n * @returns {ArrayBuffer}\n */\nexport function toArrayBuffer(buf) {\n const ab = new ArrayBuffer(buf.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n}","function isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\n\nfunction apply(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n o2[name] = o[name];\n }\n }\n return o2;\n}\n\n/**\n * @private\n */\nconst utils = {\n isString,\n apply\n};\n\nexport {utils};\n","import {XKT_INFO} from \"../XKT_INFO.js\";\nimport * as pako from 'pako';\n\nconst XKT_VERSION = XKT_INFO.xktVersion;\nconst NUM_TEXTURE_ATTRIBUTES = 9;\nconst NUM_MATERIAL_ATTRIBUTES = 6;\n\n/**\n * Writes an {@link XKTModel} to an {@link ArrayBuffer}.\n *\n * @param {XKTModel} xktModel The {@link XKTModel}.\n * @param {String} metaModelJSON The metamodel JSON in a string.\n * @param {Object} [stats] Collects statistics.\n * @param {Object} options Options for how the XKT is written.\n * @param {Boolean} [options.zip=true] ZIP the contents?\n * @returns {ArrayBuffer} The {@link ArrayBuffer}.\n */\nfunction writeXKTModelToArrayBuffer(xktModel, metaModelJSON, stats, options) {\n if (! options.zip) {\n return writeXKTModelToArrayBufferUncompressed(xktModel, metaModelJSON, stats);\n }\n const data = getModelData(xktModel, metaModelJSON, stats);\n const deflatedData = deflateData(data, metaModelJSON, options);\n stats.texturesSize += deflatedData.textureData.byteLength;\n const arrayBuffer = createArrayBuffer(deflatedData);\n return arrayBuffer;\n}\n\n// V11\nfunction writeXKTModelToArrayBufferUncompressed(xktModel, metaModelJSON, stats) {\n const data = getModelData(xktModel, metaModelJSON, stats);\n stats.texturesSize += data.textureData.byteLength;\n\n const object2Array = (function() {\n const encoder = new TextEncoder();\n return obj => encoder.encode(JSON.stringify(obj));\n })();\n\n const arrays = [\n object2Array(metaModelJSON || data.metadata),\n data.textureData,\n data.eachTextureDataPortion,\n data.eachTextureAttributes,\n data.positions,\n data.normals,\n data.colors,\n data.uvs,\n data.indices,\n data.edgeIndices,\n data.eachTextureSetTextures,\n data.matrices,\n data.reusedGeometriesDecodeMatrix,\n data.eachGeometryPrimitiveType,\n data.eachGeometryPositionsPortion,\n data.eachGeometryNormalsPortion,\n data.eachGeometryColorsPortion,\n data.eachGeometryUVsPortion,\n data.eachGeometryIndicesPortion,\n data.eachGeometryEdgeIndicesPortion,\n data.eachMeshGeometriesPortion,\n data.eachMeshMatricesPortion,\n data.eachMeshTextureSet,\n data.eachMeshMaterialAttributes,\n object2Array(data.eachEntityId),\n data.eachEntityMeshesPortion,\n data.eachTileAABB,\n data.eachTileEntitiesPortion\n ];\n\n const arraysCnt = arrays.length;\n const dataView = new DataView(new ArrayBuffer((1 + 2 * arraysCnt) * 4));\n\n dataView.setUint32(0, XKT_VERSION, true);\n\n let byteOffset = dataView.byteLength;\n const offsets = [ ];\n\n // Store arrays' offsets and lengths\n for (let i = 0; i < arraysCnt; i++) {\n const arr = arrays[i];\n const BPE = arr.BYTES_PER_ELEMENT;\n // align to BPE, so the arrayBuffer can be used for a typed array\n byteOffset = Math.ceil(byteOffset / BPE) * BPE;\n const byteLength = arr.byteLength;\n\n const idx = 1 + 2 * i;\n dataView.setUint32(idx * 4, byteOffset, true);\n dataView.setUint32((idx + 1) * 4, byteLength, true);\n\n offsets.push(byteOffset);\n byteOffset += byteLength;\n }\n\n const dataArray = new Uint8Array(byteOffset);\n dataArray.set(new Uint8Array(dataView.buffer), 0);\n\n const requiresSwapToLittleEndian = (function() {\n const buffer = new ArrayBuffer(2);\n new Uint16Array(buffer)[0] = 1;\n return new Uint8Array(buffer)[0] !== 1;\n })();\n\n // Store arrays themselves\n for (let i = 0; i < arraysCnt; i++) {\n const arr = arrays[i];\n const subarray = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n\n const BPE = arr.BYTES_PER_ELEMENT;\n if (requiresSwapToLittleEndian && (BPE > 1)) {\n const swaps = BPE / 2;\n const cnt = subarray.length / BPE;\n for (let b = 0; b < cnt; b++) {\n const offset = b * BPE;\n for (let j = 0; j < swaps; j++) {\n const i1 = offset + j;\n const i2 = offset - j + BPE - 1;\n const tmp = subarray[i1];\n subarray[i1] = subarray[i2];\n subarray[i2] = tmp;\n }\n }\n }\n\n dataArray.set(subarray, offsets[i]);\n }\n\n return dataArray.buffer;\n}\n\nfunction getModelData(xktModel, metaModelDataStr, stats) {\n\n //------------------------------------------------------------------------------------------------------------------\n // Allocate data\n //------------------------------------------------------------------------------------------------------------------\n\n const propertySetsList = xktModel.propertySetsList;\n const metaObjectsList = xktModel.metaObjectsList;\n const geometriesList = xktModel.geometriesList;\n const texturesList = xktModel.texturesList;\n const textureSetsList = xktModel.textureSetsList;\n const meshesList = xktModel.meshesList;\n const entitiesList = xktModel.entitiesList;\n const tilesList = xktModel.tilesList;\n\n const numPropertySets = propertySetsList.length;\n const numMetaObjects = metaObjectsList.length;\n const numGeometries = geometriesList.length;\n const numTextures = texturesList.length;\n const numTextureSets = textureSetsList.length;\n const numMeshes = meshesList.length;\n const numEntities = entitiesList.length;\n const numTiles = tilesList.length;\n\n let lenPositions = 0;\n let lenNormals = 0;\n let lenColors = 0;\n let lenUVs = 0;\n let lenIndices = 0;\n let lenEdgeIndices = 0;\n let lenMatrices = 0;\n let lenTextures = 0;\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n if (geometry.positionsQuantized) {\n lenPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n lenNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n lenColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n lenUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n lenIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n lenEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n lenTextures += imageData.byteLength;\n\n if (xktTexture.compressed) {\n stats.numCompressedTextures++;\n }\n }\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList[meshIndex];\n if (mesh.geometry.numInstances > 1) {\n lenMatrices += 16;\n }\n }\n\n const data = {\n metadata: {},\n textureData: new Uint8Array(lenTextures), // All textures\n eachTextureDataPortion: new Uint32Array(numTextures), // For each texture, an index to its first element in textureData\n eachTextureAttributes: new Uint16Array(numTextures * NUM_TEXTURE_ATTRIBUTES),\n positions: new Uint16Array(lenPositions), // All geometry arrays\n normals: new Int8Array(lenNormals),\n colors: new Uint8Array(lenColors),\n uvs: new Float32Array(lenUVs),\n indices: new Uint32Array(lenIndices),\n edgeIndices: new Uint32Array(lenEdgeIndices),\n eachTextureSetTextures: new Int32Array(numTextureSets * 5), // For each texture set, a set of five Texture indices [color, metal/roughness,normals,emissive,occlusion]; each index has value -1 if no texture\n matrices: new Float32Array(lenMatrices), // Modeling matrices for entities that share geometries. Each entity either shares all it's geometries, or owns all its geometries exclusively. Exclusively-owned geometries are pre-transformed into World-space, and so their entities don't have modeling matrices in this array.\n reusedGeometriesDecodeMatrix: new Float32Array(xktModel.reusedGeometriesDecodeMatrix), // A single, global vertex position de-quantization matrix for all reused geometries. Reused geometries are quantized to their collective Local-space AABB, and this matrix is derived from that AABB.\n eachGeometryPrimitiveType: new Uint8Array(numGeometries), // Primitive type for each geometry (0=solid triangles, 1=surface triangles, 2=lines, 3=points, 4=line-strip)\n eachGeometryPositionsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.positions. Every primitive type has positions.\n eachGeometryNormalsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.normals. If the next geometry has the same index, then this geometry has no normals.\n eachGeometryColorsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.colors. If the next geometry has the same index, then this geometry has no colors.\n eachGeometryUVsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.uvs. If the next geometry has the same index, then this geometry has no UVs.\n eachGeometryIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.indices. If the next geometry has the same index, then this geometry has no indices.\n eachGeometryEdgeIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.edgeIndices. If the next geometry has the same index, then this geometry has no edge indices.\n eachMeshGeometriesPortion: new Uint32Array(numMeshes), // For each mesh, an index into the eachGeometry* arrays\n eachMeshMatricesPortion: new Uint32Array(numMeshes), // For each mesh that shares its geometry, an index to its first element in data.matrices, to indicate the modeling matrix that transforms the shared geometry Local-space vertex positions. This is ignored for meshes that don't share geometries, because the vertex positions of non-shared geometries are pre-transformed into World-space.\n eachMeshTextureSet: new Int32Array(numMeshes), // For each mesh, the index of its texture set in data.eachTextureSetTextures; this array contains signed integers so that we can use -1 to indicate when a mesh has no texture set\n eachMeshMaterialAttributes: new Uint8Array(numMeshes * NUM_MATERIAL_ATTRIBUTES), // For each mesh, an RGBA integer color of format [0..255, 0..255, 0..255, 0..255], and PBR metallic and roughness factors, of format [0..255, 0..255]\n eachEntityId: [], // For each entity, an ID string\n eachEntityMeshesPortion: new Uint32Array(numEntities), // For each entity, the index of the first element of meshes used by the entity\n eachTileAABB: new Float64Array(numTiles * 6), // For each tile, an axis-aligned bounding box\n eachTileEntitiesPortion: new Uint32Array(numTiles) // For each tile, the index of the first element of eachEntityId, eachEntityMeshesPortion and eachEntityMatricesPortion used by the tile\n };\n\n let countPositions = 0;\n let countNormals = 0;\n let countColors = 0;\n let countUVs = 0;\n let countIndices = 0;\n let countEdgeIndices = 0;\n\n // Metadata\n\n data.metadata = {\n id: xktModel.modelId,\n projectId: xktModel.projectId,\n revisionId: xktModel.revisionId,\n author: xktModel.author,\n createdAt: xktModel.createdAt,\n creatingApplication: xktModel.creatingApplication,\n schema: xktModel.schema,\n propertySets: [],\n metaObjects: []\n };\n\n // Property sets\n\n for (let propertySetsIndex = 0; propertySetsIndex < numPropertySets; propertySetsIndex++) {\n const propertySet = propertySetsList[propertySetsIndex];\n const propertySetJSON = {\n id: \"\" + propertySet.propertySetId,\n name: propertySet.propertySetName,\n type: propertySet.propertySetType,\n properties: propertySet.properties\n };\n data.metadata.propertySets.push(propertySetJSON);\n }\n\n // Metaobjects\n\n if (!metaModelDataStr) {\n for (let metaObjectsIndex = 0; metaObjectsIndex < numMetaObjects; metaObjectsIndex++) {\n const metaObject = metaObjectsList[metaObjectsIndex];\n const metaObjectJSON = {\n name: metaObject.metaObjectName,\n type: metaObject.metaObjectType,\n id: \"\" + metaObject.metaObjectId\n };\n if (metaObject.parentMetaObjectId !== undefined && metaObject.parentMetaObjectId !== null) {\n metaObjectJSON.parent = \"\" + metaObject.parentMetaObjectId;\n }\n if (metaObject.propertySetIds && metaObject.propertySetIds.length > 0) {\n metaObjectJSON.propertySetIds = metaObject.propertySetIds;\n }\n if (metaObject.external) {\n metaObjectJSON.external = metaObject.external;\n }\n data.metadata.metaObjects.push(metaObjectJSON);\n }\n }\n\n // Geometries\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n let primitiveType = 1;\n switch (geometry.primitiveType) {\n case \"triangles\":\n primitiveType = geometry.solid ? 0 : 1;\n break;\n case \"points\":\n primitiveType = 2;\n break;\n case \"lines\":\n primitiveType = 3;\n break;\n case \"line-strip\":\n case \"line-loop\":\n primitiveType = 4;\n break;\n case \"triangle-strip\":\n primitiveType = 5;\n break;\n case \"triangle-fan\":\n primitiveType = 6;\n break;\n default:\n primitiveType = 1\n }\n data.eachGeometryPrimitiveType [geometryIndex] = primitiveType;\n data.eachGeometryPositionsPortion [geometryIndex] = countPositions;\n data.eachGeometryNormalsPortion [geometryIndex] = countNormals;\n data.eachGeometryColorsPortion [geometryIndex] = countColors;\n data.eachGeometryUVsPortion [geometryIndex] = countUVs;\n data.eachGeometryIndicesPortion [geometryIndex] = countIndices;\n data.eachGeometryEdgeIndicesPortion [geometryIndex] = countEdgeIndices;\n if (geometry.positionsQuantized) {\n data.positions.set(geometry.positionsQuantized, countPositions);\n countPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n data.normals.set(geometry.normalsOctEncoded, countNormals);\n countNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n data.colors.set(geometry.colorsCompressed, countColors);\n countColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n data.uvs.set(geometry.uvs, countUVs);\n countUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n data.indices.set(geometry.indices, countIndices);\n countIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n data.edgeIndices.set(geometry.edgeIndices, countEdgeIndices);\n countEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n // Textures\n\n for (let textureIndex = 0, numTextures = xktModel.texturesList.length, portionIdx = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = xktModel.texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n data.textureData.set(imageData, portionIdx);\n data.eachTextureDataPortion[textureIndex] = portionIdx;\n\n portionIdx += imageData.byteLength;\n\n let textureAttrIdx = textureIndex * NUM_TEXTURE_ATTRIBUTES;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.compressed ? 1 : 0;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.mediaType; // GIFMediaType | PNGMediaType | JPEGMediaType\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.width;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.height;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.minFilter; // LinearMipmapLinearFilter | LinearMipMapNearestFilter | NearestMipMapNearestFilter | NearestMipMapLinearFilter | LinearMipMapLinearFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.magFilter; // LinearFilter | NearestFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapS; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapT; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapR; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n }\n\n // Texture sets\n\n for (let textureSetIndex = 0, numTextureSets = xktModel.textureSetsList.length, eachTextureSetTexturesIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const textureSet = textureSetsList[textureSetIndex];\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.colorTexture ? textureSet.colorTexture.textureIndex : -1; // Color map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.metallicRoughnessTexture ? textureSet.metallicRoughnessTexture.textureIndex : -1; // Metal/rough map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.normalsTexture ? textureSet.normalsTexture.textureIndex : -1; // Normal map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.emissiveTexture ? textureSet.emissiveTexture.textureIndex : -1; // Emissive map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map\n }\n\n // Tiles -> Entities -> Meshes\n\n let entityIndex = 0;\n let countEntityMeshesPortion = 0;\n let eachMeshMaterialAttributesIndex = 0;\n let matricesIndex = 0;\n let meshIndex = 0;\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const tile = tilesList [tileIndex];\n const tileEntities = tile.entities;\n const numTileEntities = tileEntities.length;\n\n if (numTileEntities === 0) {\n continue;\n }\n\n data.eachTileEntitiesPortion[tileIndex] = entityIndex;\n\n const tileAABB = tile.aabb;\n\n for (let j = 0; j < numTileEntities; j++) {\n\n const entity = tileEntities[j];\n const entityMeshes = entity.meshes;\n const numEntityMeshes = entityMeshes.length;\n\n for (let k = 0; k < numEntityMeshes; k++) {\n\n const mesh = entityMeshes[k];\n const geometry = mesh.geometry;\n const geometryIndex = geometry.geometryIndex;\n\n data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex;\n\n if (mesh.geometry.numInstances > 1) {\n data.matrices.set(mesh.matrix, matricesIndex);\n data.eachMeshMatricesPortion [meshIndex] = matricesIndex;\n matricesIndex += 16;\n }\n\n data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1;\n\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness\n\n meshIndex++;\n }\n\n data.eachEntityId [entityIndex] = entity.entityId;\n data.eachEntityMeshesPortion[entityIndex] = countEntityMeshesPortion; // <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?\n\n entityIndex++;\n countEntityMeshesPortion += numEntityMeshes;\n }\n\n const tileAABBIndex = tileIndex * 6;\n\n data.eachTileAABB.set(tileAABB, tileAABBIndex);\n }\n\n return data;\n}\n\nfunction deflateData(data, metaModelJSON, options) {\n\n function deflate(buffer) {\n return (options.zip !== false) ? pako.deflate(buffer) : buffer;\n }\n\n let metaModelBytes;\n if (metaModelJSON) {\n const deflatedJSON = deflateJSON(metaModelJSON);\n metaModelBytes = deflate(deflatedJSON)\n } else {\n const deflatedJSON = deflateJSON(data.metadata);\n metaModelBytes = deflate(deflatedJSON)\n }\n\n return {\n metadata: metaModelBytes,\n textureData: deflate(data.textureData.buffer),\n eachTextureDataPortion: deflate(data.eachTextureDataPortion.buffer),\n eachTextureAttributes: deflate(data.eachTextureAttributes.buffer),\n positions: deflate(data.positions.buffer),\n normals: deflate(data.normals.buffer),\n colors: deflate(data.colors.buffer),\n uvs: deflate(data.uvs.buffer),\n indices: deflate(data.indices.buffer),\n edgeIndices: deflate(data.edgeIndices.buffer),\n eachTextureSetTextures: deflate(data.eachTextureSetTextures.buffer),\n matrices: deflate(data.matrices.buffer),\n reusedGeometriesDecodeMatrix: deflate(data.reusedGeometriesDecodeMatrix.buffer),\n eachGeometryPrimitiveType: deflate(data.eachGeometryPrimitiveType.buffer),\n eachGeometryPositionsPortion: deflate(data.eachGeometryPositionsPortion.buffer),\n eachGeometryNormalsPortion: deflate(data.eachGeometryNormalsPortion.buffer),\n eachGeometryColorsPortion: deflate(data.eachGeometryColorsPortion.buffer),\n eachGeometryUVsPortion: deflate(data.eachGeometryUVsPortion.buffer),\n eachGeometryIndicesPortion: deflate(data.eachGeometryIndicesPortion.buffer),\n eachGeometryEdgeIndicesPortion: deflate(data.eachGeometryEdgeIndicesPortion.buffer),\n eachMeshGeometriesPortion: deflate(data.eachMeshGeometriesPortion.buffer),\n eachMeshMatricesPortion: deflate(data.eachMeshMatricesPortion.buffer),\n eachMeshTextureSet: deflate(data.eachMeshTextureSet.buffer),\n eachMeshMaterialAttributes: deflate(data.eachMeshMaterialAttributes.buffer),\n eachEntityId: deflate(JSON.stringify(data.eachEntityId)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n })),\n eachEntityMeshesPortion: deflate(data.eachEntityMeshesPortion.buffer),\n eachTileAABB: deflate(data.eachTileAABB.buffer),\n eachTileEntitiesPortion: deflate(data.eachTileEntitiesPortion.buffer)\n };\n}\n\nfunction deflateJSON(strings) {\n return JSON.stringify(strings)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n });\n}\n\nfunction createArrayBuffer(deflatedData) {\n return toArrayBuffer([\n deflatedData.metadata,\n deflatedData.textureData,\n deflatedData.eachTextureDataPortion,\n deflatedData.eachTextureAttributes,\n deflatedData.positions,\n deflatedData.normals,\n deflatedData.colors,\n deflatedData.uvs,\n deflatedData.indices,\n deflatedData.edgeIndices,\n deflatedData.eachTextureSetTextures,\n deflatedData.matrices,\n deflatedData.reusedGeometriesDecodeMatrix,\n deflatedData.eachGeometryPrimitiveType,\n deflatedData.eachGeometryPositionsPortion,\n deflatedData.eachGeometryNormalsPortion,\n deflatedData.eachGeometryColorsPortion,\n deflatedData.eachGeometryUVsPortion,\n deflatedData.eachGeometryIndicesPortion,\n deflatedData.eachGeometryEdgeIndicesPortion,\n deflatedData.eachMeshGeometriesPortion,\n deflatedData.eachMeshMatricesPortion,\n deflatedData.eachMeshTextureSet,\n deflatedData.eachMeshMaterialAttributes,\n deflatedData.eachEntityId,\n deflatedData.eachEntityMeshesPortion,\n deflatedData.eachTileAABB,\n deflatedData.eachTileEntitiesPortion\n ]);\n}\n\nfunction toArrayBuffer(elements) {\n const indexData = new Uint32Array(elements.length + 2);\n indexData[0] = 10; // XKT_VERSION for legacy v10 mode\n indexData [1] = elements.length; // Stored Data 1.1: number of stored elements\n let dataLen = 0; // Stored Data 1.2: length of stored elements\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementsize = element.length;\n indexData[i + 2] = elementsize;\n dataLen += elementsize;\n }\n const indexBuf = new Uint8Array(indexData.buffer);\n const dataArray = new Uint8Array(indexBuf.length + dataLen);\n dataArray.set(indexBuf);\n let offset = indexBuf.length;\n for (let i = 0, len = elements.length; i < len; i++) { // Stored Data 2: the elements themselves\n const element = elements[i];\n dataArray.set(element, offset);\n offset += element.length;\n }\n return dataArray.buffer;\n}\n\nexport {writeXKTModelToArrayBuffer};","/**\n * @desc Provides info on the XKT generated by xeokit-convert.\n */\nconst XKT_INFO = {\n\n /**\n * The XKT version generated by xeokit-convert.\n *\n * This is the XKT version that's modeled by {@link XKTModel}, serialized\n * by {@link writeXKTModelToArrayBuffer}, and written by {@link convert2xkt}.\n *\n * * Current XKT version: **10**\n * * [XKT format specs](https://github.com/xeokit/xeokit-convert/blob/main/specs/index.md)\n *\n * @property xktVersion\n * @type {number}\n */\n xktVersion: 11\n};\n\nexport {XKT_INFO};","/*----------------------------------------------------------------------------------------------------------------------\n * NOTE: The values of these constants must match those within xeokit-sdk\n *--------------------------------------------------------------------------------------------------------------------*/\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity.\n */\nexport const RepeatWrapping = 1000;\n\n/**\n * Texture wrapping mode in which the last pixel of the texture stretches to the edge of the mesh.\n */\nexport const ClampToEdgeWrapping = 1001;\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity, mirroring on each repeat.\n */\nexport const MirroredRepeatWrapping = 1002;\n\n/**\n * Texture magnification and minification filter that returns the nearest texel to the given sample coordinates.\n */\nexport const NearestFilter = 1003;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipMapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured\n * and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipmapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipmapLinearFilter = 1005;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipMapLinearFilter = 1005;\n\n/**\n * Texture magnification and minification filter that returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearFilter = 1006;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipmapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipMapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipmapLinearFilter = 1008;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipMapLinearFilter = 1008;\n\n/**\n * Media type for GIF images.\n */\nexport const GIFMediaType = 10000;\n\n/**\n * Media type for JPEG images.\n */\nexport const JPEGMediaType = 10001;\n\n/**\n * Media type for PNG images.\n */\nexport const PNGMediaType = 10002;","import {XKT_INFO} from \"./XKT_INFO.js\";\nimport {XKTModel} from \"./XKTModel/XKTModel.js\";\nimport {parseCityJSONIntoXKTModel} from \"./parsers/parseCityJSONIntoXKTModel.js\";\nimport {parseGLTFIntoXKTModel} from \"./parsers/parseGLTFIntoXKTModel.js\";\nimport {parseIFCIntoXKTModel} from \"./parsers/parseIFCIntoXKTModel.js\";\nimport {parseLASIntoXKTModel} from \"./parsers/parseLASIntoXKTModel.js\";\nimport {parsePCDIntoXKTModel} from \"./parsers/parsePCDIntoXKTModel.js\";\nimport {parsePLYIntoXKTModel} from \"./parsers/parsePLYIntoXKTModel.js\";\nimport {parseSTLIntoXKTModel} from \"./parsers/parseSTLIntoXKTModel.js\";\nimport {writeXKTModelToArrayBuffer} from \"./XKTModel/writeXKTModelToArrayBuffer.js\";\n\nimport {toArrayBuffer} from \"./XKTModel/lib/toArraybuffer\";\n\nconst fs = require('fs');\nconst path = require(\"path\");\n\n/**\n * Converts model files into xeokit's native XKT format.\n *\n * Supported source formats are: IFC, CityJSON, glTF, LAZ and LAS.\n *\n * **Only bundled in xeokit-convert.cjs.js.**\n *\n * ## Usage\n *\n * ````javascript\n * const convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\n * const fs = require('fs');\n *\n * convert2xkt({\n * sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n * outputXKT: (xtkArrayBuffer) => {\n * fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n * }\n * }).then(() => {\n * console.log(\"Converted.\");\n * }, (errMsg) => {\n * console.error(\"Conversion failed: \" + errMsg)\n * });\n ````\n * @param {Object} params Conversion parameters.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {*} [params.configs] Configurations.\n * @param {String} [params.source] Path to source file. Alternative to ````sourceData````.\n * @param {ArrayBuffer|JSON} [params.sourceData] Source file data. Alternative to ````source````.\n * @param {String} [params.sourceFormat] Format of source file/data. Always needed with ````sourceData````, but not normally needed with ````source````, because convert2xkt will determine the format automatically from the file extension of ````source````.\n * @param {String} [params.metaModelDataStr] Source file data. Overrides metadata from ````metaModelSource````, ````sourceData```` and ````source````.\n * @param {String} [params.metaModelSource] Path to source metaModel file. Overrides metadata from ````sourceData```` and ````source````. Overridden by ````metaModelData````.\n * @param {String} [params.output] Path to destination XKT file. Directories on this path are automatically created if not existing.\n * @param {Function} [params.outputXKTModel] Callback to collect the ````XKTModel```` that is internally build by this method.\n * @param {Function} [params.outputXKT] Callback to collect XKT file data.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {Object} [stats] Collects conversion statistics. Statistics are attached to this object if provided.\n * @param {Function} [params.outputStats] Callback to collect statistics.\n * @param {Boolean} [params.rotateX=false] Whether to rotate the model 90 degrees about the X axis to make the Y axis \"up\", if necessary. Applies to CityJSON and LAS/LAZ models.\n * @param {Boolean} [params.reuseGeometries=true] When true, will enable geometry reuse within the XKT. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be when a model (eg. glTF) has 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {Boolean} [params.includeTextures=true] Whether to convert textures. Only works for ````glTF```` models.\n * @param {Boolean} [params.includeNormals=true] Whether to convert normals. When false, the parser will ignore\n * geometry normals, and the modelwill rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the model.\n * @param {Number} [params.minTileSize=200] Minimum RTC coordinate tile size. Set this to a value between 100 and 10000,\n * depending on how far from the coordinate origin the model's vertex positions are; specify larger tile sizes when close\n * to the origin, and smaller sizes when distant. This compensates for decreasing precision as floats get bigger.\n * @param {Function} [params.log] Logging callback.\n * @return {Promise}\n */\nfunction convert2xkt({\n WebIFC,\n configs = {},\n source,\n sourceData,\n sourceFormat,\n metaModelSource,\n metaModelDataStr,\n modelAABB,\n output,\n outputXKTModel,\n outputXKT,\n includeTypes,\n excludeTypes,\n reuseGeometries = true,\n minTileSize = 200,\n stats = {},\n outputStats,\n rotateX = false,\n includeTextures = true,\n includeNormals = true,\n zip = true,\n log = function (msg) {\n }\n }) {\n\n stats.sourceFormat = \"\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numTextureSets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.sourceSize = 0;\n stats.xktSize = 0;\n stats.texturesSize = 0;\n stats.xktVersion = \"\";\n stats.compressionRatio = 0;\n stats.conversionTime = 0;\n stats.aabb = null;\n\n function getFileExtension(fileName) {\n let ext = path.extname(fileName);\n if (ext.charAt(0) === \".\") {\n ext = ext.substring(1);\n }\n return ext;\n }\n\n return new Promise(function (resolve, reject) {\n const _log = log;\n log = (msg) => {\n _log(`[convert2xkt] ${msg}`)\n }\n\n if (!source && !sourceData) {\n reject(\"Argument expected: source or sourceData\");\n return;\n }\n\n if (!sourceFormat && sourceData) {\n reject(\"Argument expected: sourceFormat is required with sourceData\");\n return;\n }\n\n if (!output && !outputXKTModel && !outputXKT) {\n reject(\"Argument expected: output, outputXKTModel or outputXKT\");\n return;\n }\n\n if (source) {\n log('Reading input file: ' + source);\n }\n\n const startTime = new Date();\n\n const sourceConfigs = configs.sourceConfigs || {};\n const ext = sourceFormat || getFileExtension(source);\n\n log(`Input file extension: \"${ext}\"`);\n\n let fileTypeConfigs = sourceConfigs[ext];\n\n if (!fileTypeConfigs) {\n log(`[WARNING] Could not find configs sourceConfigs entry for source format \"${ext}\". This is derived from the source file name extension. Will use internal default configs.`);\n fileTypeConfigs = {};\n }\n\n function overrideOption(option1, option2) {\n if (option1 !== undefined) {\n return option1;\n }\n return option2;\n }\n\n if (!sourceData) {\n try {\n sourceData = fs.readFileSync(source);\n } catch (err) {\n reject(err);\n return;\n }\n }\n\n const sourceFileSizeBytes = sourceData.byteLength;\n\n log(\"Input file size: \" + (sourceFileSizeBytes / 1000).toFixed(2) + \" kB\");\n\n if (!metaModelDataStr && metaModelSource) {\n log('Reading input metadata file: ' + metaModelSource);\n try {\n metaModelDataStr = fs.readFileSync(metaModelSource);\n } catch (err) {\n reject(err);\n return;\n }\n } else {\n log(`Not embedding metadata in XKT`);\n }\n\n let metaModelJSON;\n\n if (metaModelDataStr) {\n try {\n metaModelJSON = JSON.parse(metaModelDataStr);\n } catch (e) {\n metaModelJSON = {};\n log(`Error parsing metadata JSON: ${e}`);\n }\n }\n\n minTileSize = overrideOption(fileTypeConfigs.minTileSize, minTileSize);\n rotateX = overrideOption(fileTypeConfigs.rotateX, rotateX);\n reuseGeometries = overrideOption(fileTypeConfigs.reuseGeometries, reuseGeometries);\n includeTextures = overrideOption(fileTypeConfigs.includeTextures, includeTextures);\n includeNormals = overrideOption(fileTypeConfigs.includeNormals, includeNormals);\n includeTypes = overrideOption(fileTypeConfigs.includeTypes, includeTypes);\n excludeTypes = overrideOption(fileTypeConfigs.excludeTypes, excludeTypes);\n\n if (reuseGeometries === false) {\n log(\"Geometry reuse is disabled\");\n }\n\n const xktModel = new XKTModel({\n minTileSize,\n modelAABB\n });\n\n switch (ext) {\n case \"json\":\n convert(parseCityJSONIntoXKTModel, {\n data: JSON.parse(sourceData),\n xktModel,\n stats,\n rotateX,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n log\n });\n break;\n\n case \"glb\":\n sourceData = toArrayBuffer(sourceData);\n convert(parseGLTFIntoXKTModel, {\n data: sourceData,\n reuseGeometries,\n includeTextures: true,\n includeNormals,\n metaModelData: metaModelJSON,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"gltf\":\n sourceData = toArrayBuffer(sourceData);\n const gltfBasePath = source ? path.dirname(source) : \"\";\n convert(parseGLTFIntoXKTModel, {\n baseUri: gltfBasePath,\n data: sourceData,\n reuseGeometries,\n includeTextures: true,\n includeNormals,\n metaModelData: metaModelJSON,\n xktModel,\n stats,\n log\n });\n break;\n\n // case \"gltf\":\n // const gltfJSON = JSON.parse(sourceData);\n // const gltfBasePath = source ? getBasePath(source) : \"\";\n // convert(parseGLTFIntoXKTModel, {\n // baseUri: gltfBasePath,\n // data: gltfJSON,\n // reuseGeometries,\n // includeTextures,\n // includeNormals,\n // metaModelData: metaModelJSON,\n // xktModel,\n // getAttachment: async (name) => {\n // const filePath = gltfBasePath + name;\n // log(`Reading attachment file: ${filePath}`);\n // const buffer = fs.readFileSync(filePath);\n // const arrayBuf = toArrayBuffer(buffer);\n // return arrayBuf;\n // },\n // stats,\n // log\n // });\n // break;\n\n case \"ifc\":\n convert(parseIFCIntoXKTModel, {\n WebIFC,\n data: sourceData,\n xktModel,\n wasmPath: \"./\",\n includeTypes,\n excludeTypes,\n stats,\n log\n });\n break;\n\n case \"laz\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n fp64: fileTypeConfigs.fp64,\n colorDepth: fileTypeConfigs.colorDepth,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n skip: overrideOption(fileTypeConfigs.skip, 1),\n log\n });\n break;\n\n case \"las\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n fp64: fileTypeConfigs.fp64,\n colorDepth: fileTypeConfigs.colorDepth,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n skip: overrideOption(fileTypeConfigs.skip, 1),\n log\n });\n break;\n\n case \"pcd\":\n convert(parsePCDIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"ply\":\n convert(parsePLYIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"stl\":\n convert(parseSTLIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n default:\n reject(`Error: unsupported source format: \"${ext}\".`);\n return;\n }\n\n function convert(parser, converterParams) {\n\n parser(converterParams).then(() => {\n\n if (!metaModelJSON) {\n log(\"Creating default metamodel in XKT\");\n xktModel.createDefaultMetaObjects();\n }\n\n log(\"Input file parsed OK. Building XKT document...\");\n\n xktModel.finalize().then(() => {\n\n log(\"XKT document built OK. Writing to XKT file...\");\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel, metaModelJSON, stats, {zip: zip});\n\n const xktContent = Buffer.from(xktArrayBuffer);\n\n const targetFileSizeBytes = xktArrayBuffer.byteLength;\n\n stats.minTileSize = minTileSize || 200;\n stats.sourceSize = (sourceFileSizeBytes / 1000).toFixed(2);\n stats.xktSize = (targetFileSizeBytes / 1000).toFixed(2);\n stats.xktVersion = zip ? 10 : XKT_INFO.xktVersion;\n stats.compressionRatio = (sourceFileSizeBytes / targetFileSizeBytes).toFixed(2);\n stats.conversionTime = ((new Date() - startTime) / 1000.0).toFixed(2);\n stats.aabb = xktModel.aabb;\n log(`Converted to: XKT v${stats.xktVersion}`);\n if (includeTypes) {\n log(\"Include types: \" + (includeTypes ? includeTypes : \"(include all)\"));\n }\n if (excludeTypes) {\n log(\"Exclude types: \" + (excludeTypes ? excludeTypes : \"(exclude none)\"));\n }\n log(\"XKT size: \" + stats.xktSize + \" kB\");\n log(\"XKT textures size: \" + (stats.texturesSize / 1000).toFixed(2) + \"kB\");\n log(\"Compression ratio: \" + stats.compressionRatio);\n log(\"Conversion time: \" + stats.conversionTime + \" s\");\n log(\"Converted metaobjects: \" + stats.numMetaObjects);\n log(\"Converted property sets: \" + stats.numPropertySets);\n log(\"Converted drawable objects: \" + stats.numObjects);\n log(\"Converted geometries: \" + stats.numGeometries);\n log(\"Converted textures: \" + stats.numTextures);\n log(\"Converted textureSets: \" + stats.numTextureSets);\n log(\"Converted triangles: \" + stats.numTriangles);\n log(\"Converted vertices: \" + stats.numVertices);\n log(\"Converted UVs: \" + stats.numUVs);\n log(\"Converted normals: \" + stats.numNormals);\n log(\"Converted tiles: \" + xktModel.tilesList.length);\n log(\"minTileSize: \" + stats.minTileSize);\n\n if (output) {\n const outputDir = path.dirname(output);\n if (outputDir !== \"\" && !fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, {recursive: true});\n }\n log('Writing XKT file: ' + output);\n fs.writeFileSync(output, xktContent);\n }\n\n if (outputXKTModel) {\n outputXKTModel(xktModel);\n }\n\n if (outputXKT) {\n outputXKT(xktContent);\n }\n\n if (outputStats) {\n outputStats(stats);\n }\n\n resolve();\n });\n }, (err) => {\n reject(err);\n });\n }\n });\n}\n\nexport {convert2xkt};","/**\n * @desc Creates box-shaped triangle mesh geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxGeometry({\n * primitiveType: \"triangles\" // or \"lines\"\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType,\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n\n primitiveType: \"triangles\",\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\n\n positions: [\n\n // v0-v1-v2-v3 front\n xmax, ymax, zmax,\n xmin, ymax, zmax,\n xmin, ymin, zmax,\n xmax, ymin, zmax,\n\n // v0-v3-v4-v1 right\n xmax, ymax, zmax,\n xmax, ymin, zmax,\n xmax, ymin, zmin,\n xmax, ymax, zmin,\n\n // v0-v1-v6-v1 top\n xmax, ymax, zmax,\n xmax, ymax, zmin,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n\n // v1-v6-v7-v2 left\n xmin, ymax, zmax,\n xmin, ymax, zmin,\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n\n // v7-v4-v3-v2 bottom\n xmin, ymin, zmin,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmin, ymin, zmax,\n\n // v4-v7-v6-v1 back\n xmax, ymin, zmin,\n xmin, ymin, zmin,\n xmin, ymax, zmin,\n xmax, ymax, zmin\n ],\n\n // Normal vectors, one for each vertex\n normals: [\n\n // v0-v1-v2-v3 front\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n\n // v0-v3-v4-v5 right\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n\n // v0-v5-v6-v1 top\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n\n // v1-v6-v7-v2 left\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n\n // v7-v4-v3-v2 bottom\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n\n // v4-v7-v6-v5 back\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1\n ],\n\n // UV coords\n uv: [\n\n // v0-v1-v2-v3 front\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v0-v3-v4-v1 right\n 0, 0,\n 0, 1,\n 1, 1,\n 1, 0,\n\n // v0-v1-v6-v1 top\n 1, 1,\n 1, 0,\n 0, 0,\n 0, 1,\n\n // v1-v6-v7-v2 left\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v7-v4-v3-v2 bottom\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0,\n\n // v4-v7-v6-v1 back\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0\n ],\n\n // Indices - these organise the\n // positions and uv texture coordinates\n // into geometric primitives in accordance\n // with the \"primitive\" parameter,\n // in this case a set of three indices\n // for each triangle.\n //\n // Note that each triangle is specified\n // in counter-clockwise winding order.\n //\n // You can specify them in clockwise\n // order if you configure the Modes\n // node's frontFace flag as \"cw\", instead of\n // the default \"ccw\".\n indices: [\n 0, 1, 2,\n 0, 2, 3,\n // front\n 4, 5, 6,\n 4, 6, 7,\n // right\n 8, 9, 10,\n 8, 10, 11,\n // top\n 12, 13, 14,\n 12, 14, 15,\n // left\n 16, 17, 18,\n 16, 18, 19,\n // bottom\n 20, 21, 22,\n 20, 22, 23\n ]\n };\n}\n\nexport {buildBoxGeometry};\n","/**\n * @desc Creates box-shaped line segment geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxLinesGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType, // \"lines\"\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxLinesGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxLinesGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n primitiveType: \"lines\",\n positions: [\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmax, ymax, zmin,\n xmax, ymax, zmax\n ],\n indices: [\n 0, 1,\n 1, 3,\n 3, 2,\n 2, 0,\n 4, 5,\n 5, 7,\n 7, 6,\n 6, 4,\n 0, 4,\n 1, 5,\n 2, 6,\n 3, 7\n ]\n }\n}\n\nexport {buildBoxLinesGeometry};\n","/**\n * @desc Creates cylinder-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a cylinder-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const cylinder = buildCylinderGeometry({\n * center: [0,0,0],\n * radiusTop: 2.0,\n * radiusBottom: 2.0,\n * height: 5.0,\n * radialSegments: 20,\n * heightSegments: 1,\n * openEnded: false\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"cylinderGeometry\",\n * primitiveType: cylinder.primitiveType,\n * positions: cylinder.positions,\n * normals: cylinder.normals,\n * indices: cylinder.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redCylinderMesh\",\n * geometryId: \"cylinderGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redCylinder\",\n * meshIds: [\"redCylinderMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildCylinderGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radiusTop=1] Radius of top.\n * @param {Number} [cfg.radiusBottom=1] Radius of bottom.\n * @param {Number} [cfg.height=1] Height.\n * @param {Number} [cfg.radialSegments=60] Number of horizontal segments.\n * @param {Number} [cfg.heightSegments=1] Number of vertical segments.\n * @param {Boolean} [cfg.openEnded=false] Whether or not the cylinder has solid caps on the ends.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildCylinderGeometry(cfg = {}) {\n\n let radiusTop = cfg.radiusTop || 1;\n if (radiusTop < 0) {\n console.error(\"negative radiusTop not allowed - will invert\");\n radiusTop *= -1;\n }\n\n let radiusBottom = cfg.radiusBottom || 1;\n if (radiusBottom < 0) {\n console.error(\"negative radiusBottom not allowed - will invert\");\n radiusBottom *= -1;\n }\n\n let height = cfg.height || 1;\n if (height < 0) {\n console.error(\"negative height not allowed - will invert\");\n height *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 3) {\n radialSegments = 3;\n }\n\n let heightSegments = cfg.heightSegments || 1;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n if (heightSegments < 1) {\n heightSegments = 1;\n }\n\n const openEnded = !!cfg.openEnded;\n\n let center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const heightHalf = height / 2;\n const heightLength = height / heightSegments;\n const radialAngle = (2.0 * Math.PI / radialSegments);\n const radialLength = 1.0 / radialSegments;\n //var nextRadius = this._radiusBottom;\n const radiusChange = (radiusTop - radiusBottom) / heightSegments;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let h;\n let i;\n\n let x;\n let z;\n\n let currentRadius;\n let currentHeight;\n\n let first;\n let second;\n\n let startIndex;\n let tu;\n let tv;\n\n // create vertices\n const normalY = (90.0 - (Math.atan(height / (radiusBottom - radiusTop))) * 180 / Math.PI) / 90.0;\n\n for (h = 0; h <= heightSegments; h++) {\n currentRadius = radiusTop - h * radiusChange;\n currentHeight = heightHalf - h * heightLength;\n\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n normals.push(currentRadius * x);\n normals.push(normalY); //todo\n normals.push(currentRadius * z);\n\n uvs.push((i * radialLength));\n uvs.push(h * 1 / heightSegments);\n\n positions.push((currentRadius * x) + centerX);\n positions.push((currentHeight) + centerY);\n positions.push((currentRadius * z) + centerZ);\n }\n }\n\n // create faces\n for (h = 0; h < heightSegments; h++) {\n for (i = 0; i <= radialSegments; i++) {\n\n first = h * (radialSegments + 1) + i;\n second = first + radialSegments;\n\n indices.push(first);\n indices.push(second);\n indices.push(second + 1);\n\n indices.push(first);\n indices.push(second + 1);\n indices.push(first + 1);\n }\n }\n\n // create top cap\n if (!openEnded && radiusTop > 0) {\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusTop * x);\n normals.push(1.0);\n normals.push(radiusTop * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusTop * x) + centerX);\n positions.push((heightHalf) + centerY);\n positions.push((radiusTop * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(first);\n indices.push(first + 1);\n indices.push(center);\n }\n }\n\n // create bottom cap\n if (!openEnded && radiusBottom > 0) {\n\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(-1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(0 - heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusBottom * x);\n normals.push(-1.0);\n normals.push(radiusBottom * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusBottom * x) + centerX);\n positions.push((0 - heightHalf) + centerY);\n positions.push((radiusBottom * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(center);\n indices.push(first + 1);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\n\nexport {buildCylinderGeometry};\n","/**\n * @desc Creates grid-shaped geometry arrays..\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a grid-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const grid = buildGridGeometry({\n * size: 1000,\n * divisions: 500\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"gridGeometry\",\n * primitiveType: grid.primitiveType, // Will be \"lines\"\n * positions: grid.positions,\n * indices: grid.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redGridMesh\",\n * geometryId: \"gridGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redGrid\",\n * meshIds: [\"redGridMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildGridGeometry\n * @param {*} [cfg] Configs\n * @param {Number} [cfg.size=1] Dimension on the X and Z-axis.\n * @param {Number} [cfg.divisions=1] Number of divisions on X and Z axis..\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildGridGeometry(cfg = {}) {\n\n let size = cfg.size || 1;\n if (size < 0) {\n console.error(\"negative size not allowed - will invert\");\n size *= -1;\n }\n\n let divisions = cfg.divisions || 1;\n if (divisions < 0) {\n console.error(\"negative divisions not allowed - will invert\");\n divisions *= -1;\n }\n if (divisions < 1) {\n divisions = 1;\n }\n\n size = size || 10;\n divisions = divisions || 10;\n\n const step = size / divisions;\n const halfSize = size / 2;\n\n const positions = [];\n const indices = [];\n let l = 0;\n\n for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\n positions.push(-halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(k);\n positions.push(0);\n positions.push(-halfSize);\n\n positions.push(k);\n positions.push(0);\n positions.push(halfSize);\n\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildGridGeometry};\n","/**\n * @desc Creates plane-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a plane-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const plane = buildPlaneGeometry({\n * center: [0,0,0],\n * xSize: 2,\n * zSize: 2,\n * xSegments: 10,\n * zSegments: 10\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"planeGeometry\",\n * primitiveType: plane.primitiveType, // Will be \"triangles\"\n * positions: plane.positions,\n * normals: plane.normals,\n * indices: plane.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redPlaneMesh\",\n * geometryId: \"planeGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redPlane\",\n * meshIds: [\"redPlaneMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildPlaneGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1] Dimension on the X-axis.\n * @param {Number} [cfg.zSize=1] Dimension on the Z-axis.\n * @param {Number} [cfg.xSegments=1] Number of segments on the X-axis.\n * @param {Number} [cfg.zSegments=1] Number of segments on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildPlaneGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n let xSegments = cfg.xSegments || 1;\n if (xSegments < 0) {\n console.error(\"negative xSegments not allowed - will invert\");\n xSegments *= -1;\n }\n if (xSegments < 1) {\n xSegments = 1;\n }\n\n let zSegments = cfg.xSegments || 1;\n if (zSegments < 0) {\n console.error(\"negative zSegments not allowed - will invert\");\n zSegments *= -1;\n }\n if (zSegments < 1) {\n zSegments = 1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const halfWidth = xSize / 2;\n const halfHeight = zSize / 2;\n\n const planeX = Math.floor(xSegments) || 1;\n const planeZ = Math.floor(zSegments) || 1;\n\n const planeX1 = planeX + 1;\n const planeZ1 = planeZ + 1;\n\n const segmentWidth = xSize / planeX;\n const segmentHeight = zSize / planeZ;\n\n const positions = new Float32Array(planeX1 * planeZ1 * 3);\n const normals = new Float32Array(planeX1 * planeZ1 * 3);\n const uvs = new Float32Array(planeX1 * planeZ1 * 2);\n\n let offset = 0;\n let offset2 = 0;\n\n let iz;\n let ix;\n let x;\n let a;\n let b;\n let c;\n let d;\n\n for (iz = 0; iz < planeZ1; iz++) {\n\n const z = iz * segmentHeight - halfHeight;\n\n for (ix = 0; ix < planeX1; ix++) {\n\n x = ix * segmentWidth - halfWidth;\n\n positions[offset] = x + centerX;\n positions[offset + 1] = centerY;\n positions[offset + 2] = -z + centerZ;\n\n normals[offset + 2] = -1;\n\n uvs[offset2] = (ix) / planeX;\n uvs[offset2 + 1] = ((planeZ - iz) / planeZ);\n\n offset += 3;\n offset2 += 2;\n }\n }\n\n offset = 0;\n\n const indices = new ((positions.length / 3) > 65535 ? Uint32Array : Uint16Array)(planeX * planeZ * 6);\n\n for (iz = 0; iz < planeZ; iz++) {\n\n for (ix = 0; ix < planeX; ix++) {\n\n a = ix + planeX1 * iz;\n b = ix + planeX1 * (iz + 1);\n c = (ix + 1) + planeX1 * (iz + 1);\n d = (ix + 1) + planeX1 * iz;\n\n indices[offset] = d;\n indices[offset + 1] = b;\n indices[offset + 2] = a;\n\n indices[offset + 3] = d;\n indices[offset + 4] = c;\n indices[offset + 5] = b;\n\n offset += 6;\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildPlaneGeometry};\n","/**\n * @desc Creates sphere-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a sphere-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const sphere = buildSphereGeometry({\n * center: [0,0,0],\n * radius: 1.5,\n * heightSegments: 60,\n * widthSegments: 60\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"sphereGeometry\",\n * primitiveType: sphere.primitiveType, // Will be \"triangles\"\n * positions: sphere.positions,\n * normals: sphere.normals,\n * indices: sphere.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redSphereMesh\",\n * geometryId: \"sphereGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n *const xktEntity = xktModel.createEntity({\n * entityId: \"redSphere\",\n * meshIds: [\"redSphereMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildSphereGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] Radius.\n * @param {Number} [cfg.heightSegments=24] Number of latitudinal bands.\n * @param {Number} [cfg.widthSegments=18] Number of longitudinal bands.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildSphereGeometry(cfg = {}) {\n\n const lod = cfg.lod || 1;\n\n const centerX = cfg.center ? cfg.center[0] : 0;\n const centerY = cfg.center ? cfg.center[1] : 0;\n const centerZ = cfg.center ? cfg.center[2] : 0;\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n\n let heightSegments = cfg.heightSegments || 18;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n heightSegments = Math.floor(lod * heightSegments);\n if (heightSegments < 18) {\n heightSegments = 18;\n }\n\n let widthSegments = cfg.widthSegments || 18;\n if (widthSegments < 0) {\n console.error(\"negative widthSegments not allowed - will invert\");\n widthSegments *= -1;\n }\n widthSegments = Math.floor(lod * widthSegments);\n if (widthSegments < 18) {\n widthSegments = 18;\n }\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let i;\n let j;\n\n let theta;\n let sinTheta;\n let cosTheta;\n\n let phi;\n let sinPhi;\n let cosPhi;\n\n let x;\n let y;\n let z;\n\n let u;\n let v;\n\n let first;\n let second;\n\n for (i = 0; i <= heightSegments; i++) {\n\n theta = i * Math.PI / heightSegments;\n sinTheta = Math.sin(theta);\n cosTheta = Math.cos(theta);\n\n for (j = 0; j <= widthSegments; j++) {\n\n phi = j * 2 * Math.PI / widthSegments;\n sinPhi = Math.sin(phi);\n cosPhi = Math.cos(phi);\n\n x = cosPhi * sinTheta;\n y = cosTheta;\n z = sinPhi * sinTheta;\n u = 1.0 - j / widthSegments;\n v = i / heightSegments;\n\n normals.push(x);\n normals.push(y);\n normals.push(z);\n\n uvs.push(u);\n uvs.push(v);\n\n positions.push(centerX + radius * x);\n positions.push(centerY + radius * y);\n positions.push(centerZ + radius * z);\n }\n }\n\n for (i = 0; i < heightSegments; i++) {\n for (j = 0; j < widthSegments; j++) {\n\n first = (i * (widthSegments + 1)) + j;\n second = first + widthSegments + 1;\n\n indices.push(first + 1);\n indices.push(second + 1);\n indices.push(second);\n indices.push(first + 1);\n indices.push(second);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildSphereGeometry};\n","import {math} from '../lib/math.js';\n\n/**\n * @desc Creates torus-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a torus-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const torus = buildTorusGeometry({\n * center: [0,0,0],\n * radius: 1.0,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"torusGeometry\",\n * primitiveType: torus.primitiveType, // Will be \"triangles\"\n * positions: torus.positions,\n * normals: torus.normals,\n * indices: torus.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTorusMesh\",\n * geometryId: \"torusGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redTorus\",\n * meshIds: [\"redTorusMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildTorusGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] The overall radius.\n * @param {Number} [cfg.tube=0.3] The tube radius.\n * @param {Number} [cfg.radialSegments=32] The number of radial segments.\n * @param {Number} [cfg.tubeSegments=24] The number of tubular segments.\n * @param {Number} [cfg.arc=Math.PI*0.5] The length of the arc in radians, where Math.PI*2 is a closed torus.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildTorusGeometry(cfg = {}) {\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n radius *= 0.5;\n\n let tube = cfg.tube || 0.3;\n if (tube < 0) {\n console.error(\"negative tube not allowed - will invert\");\n tube *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 4) {\n radialSegments = 4;\n }\n\n let tubeSegments = cfg.tubeSegments || 24;\n if (tubeSegments < 0) {\n console.error(\"negative tubeSegments not allowed - will invert\");\n tubeSegments *= -1;\n }\n if (tubeSegments < 4) {\n tubeSegments = 4;\n }\n\n let arc = cfg.arc || Math.PI * 2;\n if (arc < 0) {\n console.warn(\"negative arc not allowed - will invert\");\n arc *= -1;\n }\n if (arc > 360) {\n arc = 360;\n }\n\n const center = cfg.center;\n let centerX = center ? center[0] : 0;\n let centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let u;\n let v;\n let x;\n let y;\n let z;\n let vec;\n\n let i;\n let j;\n\n for (j = 0; j <= tubeSegments; j++) {\n for (i = 0; i <= radialSegments; i++) {\n\n u = i / radialSegments * arc;\n v = 0.785398 + (j / tubeSegments * Math.PI * 2);\n\n centerX = radius * Math.cos(u);\n centerY = radius * Math.sin(u);\n\n x = (radius + tube * Math.cos(v)) * Math.cos(u);\n y = (radius + tube * Math.cos(v)) * Math.sin(u);\n z = tube * Math.sin(v);\n\n positions.push(x + centerX);\n positions.push(y + centerY);\n positions.push(z + centerZ);\n\n uvs.push(1 - (i / radialSegments));\n uvs.push((j / tubeSegments));\n\n vec = math.normalizeVec3(math.subVec3([x, y, z], [centerX, centerY, centerZ], []), []);\n\n normals.push(vec[0]);\n normals.push(vec[1]);\n normals.push(vec[2]);\n }\n }\n\n let a;\n let b;\n let c;\n let d;\n\n for (j = 1; j <= tubeSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n\n a = (radialSegments + 1) * j + i - 1;\n b = (radialSegments + 1) * (j - 1) + i - 1;\n c = (radialSegments + 1) * (j - 1) + i;\n d = (radialSegments + 1) * j + i;\n\n indices.push(a);\n indices.push(b);\n indices.push(c);\n\n indices.push(c);\n indices.push(d);\n indices.push(a);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildTorusGeometry};\n","const letters = {\n ' ': {width: 16, points: []},\n '!': {\n width: 10, points: [\n [5, 21],\n [5, 7],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '\"': {\n width: 16, points: [\n [4, 21],\n [4, 14],\n [-1, -1],\n [12, 21],\n [12, 14]\n ]\n },\n '#': {\n width: 21, points: [\n [11, 25],\n [4, -7],\n [-1, -1],\n [17, 25],\n [10, -7],\n [-1, -1],\n [4, 12],\n [18, 12],\n [-1, -1],\n [3, 6],\n [17, 6]\n ]\n },\n '$': {\n width: 20, points: [\n [8, 25],\n [8, -4],\n [-1, -1],\n [12, 25],\n [12, -4],\n [-1, -1],\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n '%': {\n width: 24, points: [\n [21, 21],\n [3, 0],\n [-1, -1],\n [8, 21],\n [10, 19],\n [10, 17],\n [9, 15],\n [7, 14],\n [5, 14],\n [3, 16],\n [3, 18],\n [4, 20],\n [6, 21],\n [8, 21],\n [10, 20],\n [13, 19],\n [16, 19],\n [19, 20],\n [21, 21],\n [-1, -1],\n [17, 7],\n [15, 6],\n [14, 4],\n [14, 2],\n [16, 0],\n [18, 0],\n [20, 1],\n [21, 3],\n [21, 5],\n [19, 7],\n [17, 7]\n ]\n },\n '&': {\n width: 26, points: [\n [23, 12],\n [23, 13],\n [22, 14],\n [21, 14],\n [20, 13],\n [19, 11],\n [17, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [7, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 6],\n [4, 8],\n [5, 9],\n [12, 13],\n [13, 14],\n [14, 16],\n [14, 18],\n [13, 20],\n [11, 21],\n [9, 20],\n [8, 18],\n [8, 16],\n [9, 13],\n [11, 10],\n [16, 3],\n [18, 1],\n [20, 0],\n [22, 0],\n [23, 1],\n [23, 2]\n ]\n },\n '\\'': {\n width: 10, points: [\n [5, 19],\n [4, 20],\n [5, 21],\n [6, 20],\n [6, 18],\n [5, 16],\n [4, 15]\n ]\n },\n '(': {\n width: 14, points: [\n [11, 25],\n [9, 23],\n [7, 20],\n [5, 16],\n [4, 11],\n [4, 7],\n [5, 2],\n [7, -2],\n [9, -5],\n [11, -7]\n ]\n },\n ')': {\n width: 14, points: [\n [3, 25],\n [5, 23],\n [7, 20],\n [9, 16],\n [10, 11],\n [10, 7],\n [9, 2],\n [7, -2],\n [5, -5],\n [3, -7]\n ]\n },\n '*': {\n width: 16, points: [\n [8, 21],\n [8, 9],\n [-1, -1],\n [3, 18],\n [13, 12],\n [-1, -1],\n [13, 18],\n [3, 12]\n ]\n },\n '+': {\n width: 26, points: [\n [13, 18],\n [13, 0],\n [-1, -1],\n [4, 9],\n [22, 9]\n ]\n },\n ',': {\n width: 10, points: [\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '-': {\n width: 26, points: [\n [4, 9],\n [22, 9]\n ]\n },\n '.': {\n width: 10, points: [\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '/': {\n width: 22, points: [\n [20, 25],\n [2, -7]\n ]\n },\n '0': {\n width: 20, points: [\n [9, 21],\n [6, 20],\n [4, 17],\n [3, 12],\n [3, 9],\n [4, 4],\n [6, 1],\n [9, 0],\n [11, 0],\n [14, 1],\n [16, 4],\n [17, 9],\n [17, 12],\n [16, 17],\n [14, 20],\n [11, 21],\n [9, 21]\n ]\n },\n '1': {\n width: 20, points: [\n [6, 17],\n [8, 18],\n [11, 21],\n [11, 0]\n ]\n },\n '2': {\n width: 20, points: [\n [4, 16],\n [4, 17],\n [5, 19],\n [6, 20],\n [8, 21],\n [12, 21],\n [14, 20],\n [15, 19],\n [16, 17],\n [16, 15],\n [15, 13],\n [13, 10],\n [3, 0],\n [17, 0]\n ]\n },\n '3': {\n width: 20, points: [\n [5, 21],\n [16, 21],\n [10, 13],\n [13, 13],\n [15, 12],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '4': {\n width: 20, points: [\n [13, 21],\n [3, 7],\n [18, 7],\n [-1, -1],\n [13, 21],\n [13, 0]\n ]\n },\n '5': {\n width: 20, points: [\n [15, 21],\n [5, 21],\n [4, 12],\n [5, 13],\n [8, 14],\n [11, 14],\n [14, 13],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '6': {\n width: 20, points: [\n [16, 18],\n [15, 20],\n [12, 21],\n [10, 21],\n [7, 20],\n [5, 17],\n [4, 12],\n [4, 7],\n [5, 3],\n [7, 1],\n [10, 0],\n [11, 0],\n [14, 1],\n [16, 3],\n [17, 6],\n [17, 7],\n [16, 10],\n [14, 12],\n [11, 13],\n [10, 13],\n [7, 12],\n [5, 10],\n [4, 7]\n ]\n },\n '7': {\n width: 20, points: [\n [17, 21],\n [7, 0],\n [-1, -1],\n [3, 21],\n [17, 21]\n ]\n },\n '8': {\n width: 20, points: [\n [8, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 14],\n [7, 13],\n [11, 12],\n [14, 11],\n [16, 9],\n [17, 7],\n [17, 4],\n [16, 2],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 7],\n [4, 9],\n [6, 11],\n [9, 12],\n [13, 13],\n [15, 14],\n [16, 16],\n [16, 18],\n [15, 20],\n [12, 21],\n [8, 21]\n ]\n },\n '9': {\n width: 20, points: [\n [16, 14],\n [15, 11],\n [13, 9],\n [10, 8],\n [9, 8],\n [6, 9],\n [4, 11],\n [3, 14],\n [3, 15],\n [4, 18],\n [6, 20],\n [9, 21],\n [10, 21],\n [13, 20],\n [15, 18],\n [16, 14],\n [16, 9],\n [15, 4],\n [13, 1],\n [10, 0],\n [8, 0],\n [5, 1],\n [4, 3]\n ]\n },\n ':': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n ';': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '<': {\n width: 24, points: [\n [20, 18],\n [4, 9],\n [20, 0]\n ]\n },\n '=': {\n width: 26, points: [\n [4, 12],\n [22, 12],\n [-1, -1],\n [4, 6],\n [22, 6]\n ]\n },\n '>': {\n width: 24, points: [\n [4, 18],\n [20, 9],\n [4, 0]\n ]\n },\n '?': {\n width: 18, points: [\n [3, 16],\n [3, 17],\n [4, 19],\n [5, 20],\n [7, 21],\n [11, 21],\n [13, 20],\n [14, 19],\n [15, 17],\n [15, 15],\n [14, 13],\n [13, 12],\n [9, 10],\n [9, 7],\n [-1, -1],\n [9, 2],\n [8, 1],\n [9, 0],\n [10, 1],\n [9, 2]\n ]\n },\n '@': {\n width: 27, points: [\n [18, 13],\n [17, 15],\n [15, 16],\n [12, 16],\n [10, 15],\n [9, 14],\n [8, 11],\n [8, 8],\n [9, 6],\n [11, 5],\n [14, 5],\n [16, 6],\n [17, 8],\n [-1, -1],\n [12, 16],\n [10, 14],\n [9, 11],\n [9, 8],\n [10, 6],\n [11, 5],\n [-1, -1],\n [18, 16],\n [17, 8],\n [17, 6],\n [19, 5],\n [21, 5],\n [23, 7],\n [24, 10],\n [24, 12],\n [23, 15],\n [22, 17],\n [20, 19],\n [18, 20],\n [15, 21],\n [12, 21],\n [9, 20],\n [7, 19],\n [5, 17],\n [4, 15],\n [3, 12],\n [3, 9],\n [4, 6],\n [5, 4],\n [7, 2],\n [9, 1],\n [12, 0],\n [15, 0],\n [18, 1],\n [20, 2],\n [21, 3],\n [-1, -1],\n [19, 16],\n [18, 8],\n [18, 6],\n [19, 5]\n ]\n },\n 'A': {\n width: 18, points: [\n [9, 21],\n [1, 0],\n [-1, -1],\n [9, 21],\n [17, 0],\n [-1, -1],\n [4, 7],\n [14, 7]\n ]\n },\n 'B': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [-1, -1],\n [4, 11],\n [13, 11],\n [16, 10],\n [17, 9],\n [18, 7],\n [18, 4],\n [17, 2],\n [16, 1],\n [13, 0],\n [4, 0]\n ]\n },\n 'C': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5]\n ]\n },\n 'D': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [11, 21],\n [14, 20],\n [16, 18],\n [17, 16],\n [18, 13],\n [18, 8],\n [17, 5],\n [16, 3],\n [14, 1],\n [11, 0],\n [4, 0]\n ]\n },\n 'E': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11],\n [-1, -1],\n [4, 0],\n [17, 0]\n ]\n },\n 'F': {\n width: 18, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11]\n ]\n },\n 'G': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [18, 8],\n [-1, -1],\n [13, 8],\n [18, 8]\n ]\n },\n 'H': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [18, 0],\n [-1, -1],\n [4, 11],\n [18, 11]\n ]\n },\n 'I': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'J': {\n width: 16, points: [\n [12, 21],\n [12, 5],\n [11, 2],\n [10, 1],\n [8, 0],\n [6, 0],\n [4, 1],\n [3, 2],\n [2, 5],\n [2, 7]\n ]\n },\n 'K': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [4, 7],\n [-1, -1],\n [9, 12],\n [18, 0]\n ]\n },\n 'L': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 0],\n [16, 0]\n ]\n },\n 'M': {\n width: 24, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [20, 0]\n ]\n },\n 'N': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [18, 0],\n [-1, -1],\n [18, 21],\n [18, 0]\n ]\n },\n 'O': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21]\n ]\n },\n 'P': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 14],\n [17, 12],\n [16, 11],\n [13, 10],\n [4, 10]\n ]\n },\n 'Q': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [-1, -1],\n [12, 4],\n [18, -2]\n ]\n },\n 'R': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [4, 11],\n [-1, -1],\n [11, 11],\n [18, 0]\n ]\n },\n 'S': {\n width: 20, points: [\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n 'T': {\n width: 16, points: [\n [8, 21],\n [8, 0],\n [-1, -1],\n [1, 21],\n [15, 21]\n ]\n },\n 'U': {\n width: 22, points: [\n [4, 21],\n [4, 6],\n [5, 3],\n [7, 1],\n [10, 0],\n [12, 0],\n [15, 1],\n [17, 3],\n [18, 6],\n [18, 21]\n ]\n },\n 'V': {\n width: 18, points: [\n [1, 21],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 0]\n ]\n },\n 'W': {\n width: 24, points: [\n [2, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [17, 0],\n [-1, -1],\n [22, 21],\n [17, 0]\n ]\n },\n 'X': {\n width: 20, points: [\n [3, 21],\n [17, 0],\n [-1, -1],\n [17, 21],\n [3, 0]\n ]\n },\n 'Y': {\n width: 18, points: [\n [1, 21],\n [9, 11],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 11]\n ]\n },\n 'Z': {\n width: 20, points: [\n [17, 21],\n [3, 0],\n [-1, -1],\n [3, 21],\n [17, 21],\n [-1, -1],\n [3, 0],\n [17, 0]\n ]\n },\n '[': {\n width: 14, points: [\n [4, 25],\n [4, -7],\n [-1, -1],\n [5, 25],\n [5, -7],\n [-1, -1],\n [4, 25],\n [11, 25],\n [-1, -1],\n [4, -7],\n [11, -7]\n ]\n },\n '\\\\': {\n width: 14, points: [\n [0, 21],\n [14, -3]\n ]\n },\n ']': {\n width: 14, points: [\n [9, 25],\n [9, -7],\n [-1, -1],\n [10, 25],\n [10, -7],\n [-1, -1],\n [3, 25],\n [10, 25],\n [-1, -1],\n [3, -7],\n [10, -7]\n ]\n },\n '^': {\n width: 16, points: [\n [6, 15],\n [8, 18],\n [10, 15],\n [-1, -1],\n [3, 12],\n [8, 17],\n [13, 12],\n [-1, -1],\n [8, 17],\n [8, 0]\n ]\n },\n '_': {\n width: 16, points: [\n [0, -2],\n [16, -2]\n ]\n },\n '`': {\n width: 10, points: [\n [6, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 15],\n [6, 16],\n [5, 17]\n ]\n },\n 'a': {\n width: 19, points: [\n [15, 14],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'b': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'c': {\n width: 18, points: [\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'd': {\n width: 19, points: [\n [15, 21],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'e': {\n width: 18, points: [\n [3, 8],\n [15, 8],\n [15, 10],\n [14, 12],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'f': {\n width: 12, points: [\n [10, 21],\n [8, 21],\n [6, 20],\n [5, 17],\n [5, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'g': {\n width: 19, points: [\n [15, 14],\n [15, -2],\n [14, -5],\n [13, -6],\n [11, -7],\n [8, -7],\n [6, -6],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'h': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'i': {\n width: 8, points: [\n [3, 21],\n [4, 20],\n [5, 21],\n [4, 22],\n [3, 21],\n [-1, -1],\n [4, 14],\n [4, 0]\n ]\n },\n 'j': {\n width: 10, points: [\n [5, 21],\n [6, 20],\n [7, 21],\n [6, 22],\n [5, 21],\n [-1, -1],\n [6, 14],\n [6, -3],\n [5, -6],\n [3, -7],\n [1, -7]\n ]\n },\n 'k': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [14, 14],\n [4, 4],\n [-1, -1],\n [8, 8],\n [15, 0]\n ]\n },\n 'l': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'm': {\n width: 30, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0],\n [-1, -1],\n [15, 10],\n [18, 13],\n [20, 14],\n [23, 14],\n [25, 13],\n [26, 10],\n [26, 0]\n ]\n },\n 'n': {\n width: 19, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'o': {\n width: 19, points: [\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3],\n [16, 6],\n [16, 8],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14]\n ]\n },\n 'p': {\n width: 19, points: [\n [4, 14],\n [4, -7],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'q': {\n width: 19, points: [\n [15, 14],\n [15, -7],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'r': {\n width: 13, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 8],\n [5, 11],\n [7, 13],\n [9, 14],\n [12, 14]\n ]\n },\n 's': {\n width: 17, points: [\n [14, 11],\n [13, 13],\n [10, 14],\n [7, 14],\n [4, 13],\n [3, 11],\n [4, 9],\n [6, 8],\n [11, 7],\n [13, 6],\n [14, 4],\n [14, 3],\n [13, 1],\n [10, 0],\n [7, 0],\n [4, 1],\n [3, 3]\n ]\n },\n 't': {\n width: 12, points: [\n [5, 21],\n [5, 4],\n [6, 1],\n [8, 0],\n [10, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'u': {\n width: 19, points: [\n [4, 14],\n [4, 4],\n [5, 1],\n [7, 0],\n [10, 0],\n [12, 1],\n [15, 4],\n [-1, -1],\n [15, 14],\n [15, 0]\n ]\n },\n 'v': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0]\n ]\n },\n 'w': {\n width: 22, points: [\n [3, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [15, 0],\n [-1, -1],\n [19, 14],\n [15, 0]\n ]\n },\n 'x': {\n width: 17, points: [\n [3, 14],\n [14, 0],\n [-1, -1],\n [14, 14],\n [3, 0]\n ]\n },\n 'y': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0],\n [6, -4],\n [4, -6],\n [2, -7],\n [1, -7]\n ]\n },\n 'z': {\n width: 17, points: [\n [14, 14],\n [3, 0],\n [-1, -1],\n [3, 14],\n [14, 14],\n [-1, -1],\n [3, 0],\n [14, 0]\n ]\n },\n '{': {\n width: 14, points: [\n [9, 25],\n [7, 24],\n [6, 23],\n [5, 21],\n [5, 19],\n [6, 17],\n [7, 16],\n [8, 14],\n [8, 12],\n [6, 10],\n [-1, -1],\n [7, 24],\n [6, 22],\n [6, 20],\n [7, 18],\n [8, 17],\n [9, 15],\n [9, 13],\n [8, 11],\n [4, 9],\n [8, 7],\n [9, 5],\n [9, 3],\n [8, 1],\n [7, 0],\n [6, -2],\n [6, -4],\n [7, -6],\n [-1, -1],\n [6, 8],\n [8, 6],\n [8, 4],\n [7, 2],\n [6, 1],\n [5, -1],\n [5, -3],\n [6, -5],\n [7, -6],\n [9, -7]\n ]\n },\n '|': {\n width: 8, points: [\n [4, 25],\n [4, -7]\n ]\n },\n '}': {\n width: 14, points: [\n [5, 25],\n [7, 24],\n [8, 23],\n [9, 21],\n [9, 19],\n [8, 17],\n [7, 16],\n [6, 14],\n [6, 12],\n [8, 10],\n [-1, -1],\n [7, 24],\n [8, 22],\n [8, 20],\n [7, 18],\n [6, 17],\n [5, 15],\n [5, 13],\n [6, 11],\n [10, 9],\n [6, 7],\n [5, 5],\n [5, 3],\n [6, 1],\n [7, 0],\n [8, -2],\n [8, -4],\n [7, -6],\n [-1, -1],\n [8, 8],\n [6, 6],\n [6, 4],\n [7, 2],\n [8, 1],\n [9, -1],\n [9, -3],\n [8, -5],\n [7, -6],\n [5, -7]\n ]\n },\n '~': {\n width: 24, points: [\n [3, 6],\n [3, 8],\n [4, 11],\n [6, 12],\n [8, 12],\n [10, 11],\n [14, 8],\n [16, 7],\n [18, 7],\n [20, 8],\n [21, 10],\n [-1, -1],\n [3, 8],\n [4, 10],\n [6, 11],\n [8, 11],\n [10, 10],\n [14, 7],\n [16, 6],\n [18, 6],\n [20, 7],\n [21, 10],\n [21, 12]\n ]\n }\n};\n\n/**\n * @desc Creates wireframe text-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a text-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const text = buildVectorTextGeometry({\n * origin: [0,0,0],\n * text: \"On the other side of the screen, it all looked so easy\"\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"textGeometry\",\n * primitiveType: text.primitiveType, // Will be \"lines\"\n * positions: text.positions,\n * indices: text.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTextMesh\",\n * geometryId: \"textGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redText\",\n * meshIds: [\"redTextMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildVectorTextGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number[]} [cfg.origin] 3D point indicating the top left corner.\n * @param {Number} [cfg.size=1] Size of each character.\n * @param {String} [cfg.text=\"\"] The text.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildVectorTextGeometry(cfg = {}) {\n\n var origin = cfg.origin || [0, 0, 0];\n var xOrigin = origin[0];\n var yOrigin = origin[1];\n var zOrigin = origin[2];\n var size = cfg.size || 1;\n\n var positions = [];\n var indices = [];\n var text = (\"\" + cfg.text).trim();\n var lines = (text || \"\").split(\"\\n\");\n var countVerts = 0;\n var y = 0;\n var x;\n var str;\n var len;\n var c;\n var mag = 1.0 / 25.0;\n var penUp;\n var p1;\n var p2;\n var needLine;\n var pointsLen;\n var a;\n\n for (var iLine = 0; iLine < lines.length; iLine++) {\n\n x = 0;\n str = lines[iLine];\n len = str.length;\n\n for (var i = 0; i < len; i++) {\n\n c = letters[str.charAt(i)];\n\n if (c === '\\n') {\n //alert(\"newline\");\n }\n\n if (!c) {\n continue;\n }\n\n penUp = 1;\n p1 = -1;\n p2 = -1;\n needLine = false;\n\n pointsLen = c.points.length;\n\n for (var j = 0; j < pointsLen; j++) {\n a = c.points[j];\n\n if (a[0] === -1 && a[1] === -1) {\n penUp = 1;\n needLine = false;\n continue;\n }\n\n positions.push((x + (a[0] * size) * mag) + xOrigin);\n positions.push((y + (a[1] * size) * mag) + yOrigin);\n positions.push(0 + zOrigin);\n\n if (p1 === -1) {\n p1 = countVerts;\n } else if (p2 === -1) {\n p2 = countVerts;\n } else {\n p1 = p2;\n p2 = countVerts;\n }\n countVerts++;\n\n if (penUp) {\n penUp = false;\n\n } else {\n indices.push(p1);\n indices.push(p2);\n }\n\n needLine = true;\n }\n x += c.width * mag * size;\n\n }\n y -= 35 * mag * size;\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildVectorTextGeometry}\n","export {XKT_INFO} from \"./XKT_INFO.js\";\nexport * from \"./constants.js\";\nexport {XKTModel} from \"./XKTModel/XKTModel.js\";\nexport {writeXKTModelToArrayBuffer} from \"./XKTModel/writeXKTModelToArrayBuffer.js\";\n\nexport {parseCityJSONIntoXKTModel} from \"./parsers/parseCityJSONIntoXKTModel.js\";\nexport {parseGLTFIntoXKTModel} from \"./parsers/parseGLTFIntoXKTModel.js\";\nexport {parseGLTFJSONIntoXKTModel} from \"./parsers/parseGLTFJSONIntoXKTModel.js\";\nexport {parseIFCIntoXKTModel} from \"./parsers/parseIFCIntoXKTModel.js\";\nexport {parseLASIntoXKTModel} from \"./parsers/parseLASIntoXKTModel.js\";\nexport {parseMetaModelIntoXKTModel} from \"./parsers/parseMetaModelIntoXKTModel.js\";\nexport {parsePCDIntoXKTModel} from \"./parsers/parsePCDIntoXKTModel.js\";\nexport {parsePLYIntoXKTModel} from \"./parsers/parsePLYIntoXKTModel.js\";\nexport {parseSTLIntoXKTModel} from \"./parsers/parseSTLIntoXKTModel.js\";\n\nexport {buildBoxGeometry} from \"./geometryBuilders/buildBoxGeometry.js\";\nexport {buildBoxLinesGeometry} from \"./geometryBuilders/buildBoxLinesGeometry.js\";\nexport {buildCylinderGeometry} from \"./geometryBuilders/buildCylinderGeometry.js\";\nexport {buildGridGeometry} from \"./geometryBuilders/buildGridGeometry.js\";\nexport {buildPlaneGeometry} from \"./geometryBuilders/buildPlaneGeometry.js\";\nexport {buildSphereGeometry} from \"./geometryBuilders/buildSphereGeometry.js\";\nexport {buildTorusGeometry} from \"./geometryBuilders/buildTorusGeometry.js\";\nexport {buildVectorTextGeometry} from \"./geometryBuilders/buildVectorTextGeometry.js\";\n\n","/** @private */\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n\nexport {earcut};","import {math} from \"./math.js\";\n\n/**\n * Converts surface-perpendicular face normals to vertex normals. Assumes that the mesh contains disjoint triangles\n * that don't share vertex array elements. Works by finding groups of vertices that have the same location and\n * averaging their normal vectors.\n *\n * @returns {{positions: Array, normals: *}}\n * @private\n */\nfunction faceToVertexNormals(positions, normals, options = {}) {\n const smoothNormalsAngleThreshold = options.smoothNormalsAngleThreshold || 20;\n const vertexMap = {};\n const vertexNormals = [];\n const vertexNormalAccum = {};\n let acc;\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let posi;\n let i;\n let j;\n let len;\n let a;\n let b;\n let c;\n\n for (i = 0, len = positions.length; i < len; i += 3) {\n\n posi = i / 3;\n\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n\n key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n\n if (vertexMap[key] === undefined) {\n vertexMap[key] = [posi];\n } else {\n vertexMap[key].push(posi);\n }\n\n const normal = math.normalizeVec3([normals[i], normals[i + 1], normals[i + 2]]);\n\n vertexNormals[posi] = normal;\n\n acc = math.vec4([normal[0], normal[1], normal[2], 1]);\n\n vertexNormalAccum[posi] = acc;\n }\n\n for (key in vertexMap) {\n\n if (vertexMap.hasOwnProperty(key)) {\n\n const vertices = vertexMap[key];\n const numVerts = vertices.length;\n\n for (i = 0; i < numVerts; i++) {\n\n const ii = vertices[i];\n\n acc = vertexNormalAccum[ii];\n\n for (j = 0; j < numVerts; j++) {\n\n if (i === j) {\n continue;\n }\n\n const jj = vertices[j];\n\n a = vertexNormals[ii];\n b = vertexNormals[jj];\n\n const angle = Math.abs(math.angleVec3(a, b) / math.DEGTORAD);\n\n if (angle < smoothNormalsAngleThreshold) {\n\n acc[0] += b[0];\n acc[1] += b[1];\n acc[2] += b[2];\n acc[3] += 1.0;\n }\n }\n }\n }\n }\n\n for (i = 0, len = normals.length; i < len; i += 3) {\n\n acc = vertexNormalAccum[i / 3];\n\n normals[i + 0] = acc[0] / acc[3];\n normals[i + 1] = acc[1] / acc[3];\n normals[i + 2] = acc[2] / acc[3];\n\n }\n}\n\nexport {faceToVertexNormals};","// Some temporary vars to help avoid garbage collection\n\nconst doublePrecision = true;\nconst FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4 = new FloatArrayType(4);\n\n/**\n * @private\n */\nconst math = {\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n /**\n * The number of radiians in a degree (0.0174532925).\n * @property DEGTORAD\n * @type {Number}\n */\n DEGTORAD: 0.0174532925,\n\n /**\n * The number of degrees in a radian.\n * @property RADTODEG\n * @type {Number}\n */\n RADTODEG: 57.295779513,\n\n /**\n * Returns a new, uninitialized two-element vector.\n * @method vec2\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec2(values) {\n return new FloatArrayType(values || 2);\n },\n\n /**\n * Returns a new, uninitialized three-element vector.\n * @method vec3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec3(values) {\n return new FloatArrayType(values || 3);\n },\n\n /**\n * Returns a new, uninitialized four-element vector.\n * @method vec4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec4(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3x3 matrix.\n * @method mat3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat3(values) {\n return new FloatArrayType(values || 9);\n },\n\n /**\n * Converts a 3x3 matrix to 4x4\n * @method mat3ToMat4\n * @param mat3 3x3 matrix.\n * @param mat4 4x4 matrix\n * @static\n * @returns {Number[]}\n */\n mat3ToMat4(mat3, mat4 = new FloatArrayType(16)) {\n mat4[0] = mat3[0];\n mat4[1] = mat3[1];\n mat4[2] = mat3[2];\n mat4[3] = 0;\n mat4[4] = mat3[3];\n mat4[5] = mat3[4];\n mat4[6] = mat3[5];\n mat4[7] = 0;\n mat4[8] = mat3[6];\n mat4[9] = mat3[7];\n mat4[10] = mat3[8];\n mat4[11] = 0;\n mat4[12] = 0;\n mat4[13] = 0;\n mat4[14] = 0;\n mat4[15] = 1;\n return mat4;\n },\n\n /**\n * Returns a new, uninitialized 4x4 matrix.\n * @method mat4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat4(values) {\n return new FloatArrayType(values || 16);\n },\n\n /**\n * Converts a 4x4 matrix to 3x3\n * @method mat4ToMat3\n * @param mat4 4x4 matrix.\n * @param mat3 3x3 matrix\n * @static\n * @returns {Number[]}\n */\n mat4ToMat3(mat4, mat3) { // TODO\n //return new FloatArrayType(values || 9);\n },\n\n /**\n * Returns a new UUID.\n * @method createUUID\n * @static\n * @return string The new UUID\n */\n createUUID: ((() => {\n const self = {};\n const lut = [];\n for (let i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n }\n return () => {\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n return `${lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff]}-${lut[d1 & 0xff]}${lut[d1 >> 8 & 0xff]}-${lut[d1 >> 16 & 0x0f | 0x40]}${lut[d1 >> 24 & 0xff]}-${lut[d2 & 0x3f | 0x80]}${lut[d2 >> 8 & 0xff]}-${lut[d2 >> 16 & 0xff]}${lut[d2 >> 24 & 0xff]}${lut[d3 & 0xff]}${lut[d3 >> 8 & 0xff]}${lut[d3 >> 16 & 0xff]}${lut[d3 >> 24 & 0xff]}`;\n };\n }))(),\n\n /**\n * Clamps a value to the given range.\n * @param {Number} value Value to clamp.\n * @param {Number} min Lower bound.\n * @param {Number} max Upper bound.\n * @returns {Number} Clamped result.\n */\n clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n\n /**\n * Floating-point modulus\n * @method fmod\n * @static\n * @param {Number} a\n * @param {Number} b\n * @returns {*}\n */\n fmod(a, b) {\n if (a < b) {\n console.error(\"math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring\");\n return a;\n }\n while (b <= a) {\n a -= b;\n }\n return a;\n },\n\n /**\n * Negates a four-element vector.\n * @method negateVec4\n * @static\n * @param {Array(Number)} v Vector to negate\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n negateVec4(v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = -v[0];\n dest[1] = -v[1];\n dest[2] = -v[2];\n dest[3] = -v[3];\n return dest;\n },\n\n /**\n * Adds one four-element vector to another.\n * @method addVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n dest[3] = u[3] + v[3];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a four-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n dest[3] = v[3] + s;\n return dest;\n },\n\n /**\n * Adds one three-element vector to another.\n * @method addVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a three-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n return dest;\n },\n\n /**\n * Subtracts one four-element vector from another.\n * @method subVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n dest[3] = u[3] - v[3];\n return dest;\n },\n\n /**\n * Subtracts one three-element vector from another.\n * @method subVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n return dest;\n },\n\n /**\n * Subtracts one two-element vector from another.\n * @method subVec2\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec2(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n return dest;\n },\n\n /**\n * Subtracts a scalar value from each element of a four-element vector.\n * @method subVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] - s;\n dest[1] = v[1] - s;\n dest[2] = v[2] - s;\n dest[3] = v[3] - s;\n return dest;\n },\n\n /**\n * Sets each element of a 4-element vector to a scalar value minus the value of that element.\n * @method subScalarVec4\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subScalarVec4(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s - v[0];\n dest[1] = s - v[1];\n dest[2] = s - v[2];\n dest[3] = s - v[3];\n return dest;\n },\n\n /**\n * Multiplies one three-element vector by another.\n * @method mulVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n mulVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] * v[0];\n dest[1] = u[1] * v[1];\n dest[2] = u[2] * v[2];\n dest[3] = u[3] * v[3];\n return dest;\n },\n\n /**\n * Multiplies each element of a four-element vector by a scalar.\n * @method mulVec34calar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n dest[3] = v[3] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a three-element vector by a scalar.\n * @method mulVec3Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a two-element vector by a scalar.\n * @method mulVec2Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec2Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n return dest;\n },\n\n /**\n * Divides one three-element vector by another.\n * @method divVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n return dest;\n },\n\n /**\n * Divides one four-element vector by another.\n * @method divVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n dest[3] = u[3] / v[3];\n return dest;\n },\n\n /**\n * Divides a scalar by a three-element vector, returning a new vector.\n * @method divScalarVec3\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec3(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n return dest;\n },\n\n /**\n * Divides a three-element vector by a scalar.\n * @method divVec3Scalar\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n return dest;\n },\n\n /**\n * Divides a four-element vector by a scalar.\n * @method divVec4Scalar\n * @static\n * @param v vec4\n * @param s scalar\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n dest[3] = v[3] / s;\n return dest;\n },\n\n\n /**\n * Divides a scalar by a four-element vector, returning a new vector.\n * @method divScalarVec4\n * @static\n * @param s scalar\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec4(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n dest[3] = s / v[3];\n return dest;\n },\n\n /**\n * Returns the dot product of two four-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec4(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2] + u[3] * v[3]);\n },\n\n /**\n * Returns the cross product of two four-element vectors.\n * @method cross3Vec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec4(u, v) {\n const u0 = u[0];\n const u1 = u[1];\n const u2 = u[2];\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n return [\n u1 * v2 - u2 * v1,\n u2 * v0 - u0 * v2,\n u0 * v1 - u1 * v0,\n 0.0];\n },\n\n /**\n * Returns the cross product of two three-element vectors.\n * @method cross3Vec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n const x = u[0];\n const y = u[1];\n const z = u[2];\n const x2 = v[0];\n const y2 = v[1];\n const z2 = v[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n },\n\n\n sqLenVec4(v) { // TODO\n return math.dotVec4(v, v);\n },\n\n /**\n * Returns the length of a four-element vector.\n * @method lenVec4\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec4(v) {\n return Math.sqrt(math.sqLenVec4(v));\n },\n\n /**\n * Returns the dot product of two three-element vectors.\n * @method dotVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec3(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);\n },\n\n /**\n * Returns the dot product of two two-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec2(u, v) {\n return (u[0] * v[0] + u[1] * v[1]);\n },\n\n\n sqLenVec3(v) {\n return math.dotVec3(v, v);\n },\n\n\n sqLenVec2(v) {\n return math.dotVec2(v, v);\n },\n\n /**\n * Returns the length of a three-element vector.\n * @method lenVec3\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec3(v) {\n return Math.sqrt(math.sqLenVec3(v));\n },\n\n distVec3: ((() => {\n const vec = new FloatArrayType(3);\n return (v, w) => math.lenVec3(math.subVec3(v, w, vec));\n }))(),\n\n /**\n * Returns the length of a two-element vector.\n * @method lenVec2\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec2(v) {\n return Math.sqrt(math.sqLenVec2(v));\n },\n\n distVec2: ((() => {\n const vec = new FloatArrayType(2);\n return (v, w) => math.lenVec2(math.subVec2(v, w, vec));\n }))(),\n\n /**\n * @method rcpVec3\n * @static\n * @param v vec3\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n rcpVec3(v, dest) {\n return math.divScalarVec3(1.0, v, dest);\n },\n\n /**\n * Normalizes a four-element vector\n * @method normalizeVec4\n * @static\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n normalizeVec4(v, dest) {\n const f = 1.0 / math.lenVec4(v);\n return math.mulVec4Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a three-element vector\n * @method normalizeVec4\n * @static\n */\n normalizeVec3(v, dest) {\n const f = 1.0 / math.lenVec3(v);\n return math.mulVec3Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a two-element vector\n * @method normalizeVec2\n * @static\n */\n normalizeVec2(v, dest) {\n const f = 1.0 / math.lenVec2(v);\n return math.mulVec2Scalar(v, f, dest);\n },\n\n /**\n * Gets the angle between two vectors\n * @method angleVec3\n * @param v\n * @param w\n * @returns {number}\n */\n angleVec3(v, w) {\n let theta = math.dotVec3(v, w) / (Math.sqrt(math.sqLenVec3(v) * math.sqLenVec3(w)));\n theta = theta < -1 ? -1 : (theta > 1 ? 1 : theta); // Clamp to handle numerical problems\n return Math.acos(theta);\n },\n\n /**\n * Creates a three-element vector from the rotation part of a sixteen-element matrix.\n * @param m\n * @param dest\n */\n vec3FromMat4Scale: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (m, dest) => {\n\n tempVec3[0] = m[0];\n tempVec3[1] = m[1];\n tempVec3[2] = m[2];\n\n dest[0] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[4];\n tempVec3[1] = m[5];\n tempVec3[2] = m[6];\n\n dest[1] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[8];\n tempVec3[1] = m[9];\n tempVec3[2] = m[10];\n\n dest[2] = math.lenVec3(tempVec3);\n\n return dest;\n };\n }))(),\n\n /**\n * Converts an n-element vector to a JSON-serializable\n * array with values rounded to two decimal places.\n */\n vecToArray: ((() => {\n function trunc(v) {\n return Math.round(v * 100000) / 100000\n }\n\n return v => {\n v = Array.prototype.slice.call(v);\n for (let i = 0, len = v.length; i < len; i++) {\n v[i] = trunc(v[i]);\n }\n return v;\n };\n }))(),\n\n /**\n * Converts a 3-element vector from an array to an object of the form ````{x:999, y:999, z:999}````.\n * @param arr\n * @returns {{x: *, y: *, z: *}}\n */\n xyzArrayToObject(arr) {\n return {\"x\": arr[0], \"y\": arr[1], \"z\": arr[2]};\n },\n\n /**\n * Converts a 3-element vector object of the form ````{x:999, y:999, z:999}```` to an array.\n * @param xyz\n * @param [arry]\n * @returns {*[]}\n */\n xyzObjectToArray(xyz, arry) {\n arry = arry || new FloatArrayType(3);\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n },\n\n /**\n * Duplicates a 4x4 identity matrix.\n * @method dupMat4\n * @static\n */\n dupMat4(m) {\n return m.slice(0, 16);\n },\n\n /**\n * Extracts a 3x3 matrix from a 4x4 matrix.\n * @method mat4To3\n * @static\n */\n mat4To3(m) {\n return [\n m[0], m[1], m[2],\n m[4], m[5], m[6],\n m[8], m[9], m[10]\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to the given scalar value.\n * @method m4s\n * @static\n */\n m4s(s) {\n return [\n s, s, s, s,\n s, s, s, s,\n s, s, s, s,\n s, s, s, s\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to zero.\n * @method setMat4ToZeroes\n * @static\n */\n setMat4ToZeroes() {\n return math.m4s(0.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n setMat4ToOnes() {\n return math.m4s(1.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n diagonalMat4v(v) {\n return new FloatArrayType([\n v[0], 0.0, 0.0, 0.0,\n 0.0, v[1], 0.0, 0.0,\n 0.0, 0.0, v[2], 0.0,\n 0.0, 0.0, 0.0, v[3]\n ]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given vector.\n * @method diagonalMat4c\n * @static\n */\n diagonalMat4c(x, y, z, w) {\n return math.diagonalMat4v([x, y, z, w]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given scalar.\n * @method diagonalMat4s\n * @static\n */\n diagonalMat4s(s) {\n return math.diagonalMat4c(s, s, s, s);\n },\n\n /**\n * Returns a 4x4 identity matrix.\n * @method identityMat4\n * @static\n */\n identityMat4(mat = new FloatArrayType(16)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n mat[3] = 0.0;\n\n mat[4] = 0.0;\n mat[5] = 1.0;\n mat[6] = 0.0;\n mat[7] = 0.0;\n\n mat[8] = 0.0;\n mat[9] = 0.0;\n mat[10] = 1.0;\n mat[11] = 0.0;\n\n mat[12] = 0.0;\n mat[13] = 0.0;\n mat[14] = 0.0;\n mat[15] = 1.0;\n\n return mat;\n },\n\n /**\n * Returns a 3x3 identity matrix.\n * @method identityMat3\n * @static\n */\n identityMat3(mat = new FloatArrayType(9)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n\n mat[3] = 0.0;\n mat[4] = 1.0;\n mat[5] = 0.0;\n\n mat[6] = 0.0;\n mat[7] = 0.0;\n mat[8] = 1.0;\n\n return mat;\n },\n\n /**\n * Tests if the given 4x4 matrix is the identity matrix.\n * @method isIdentityMat4\n * @static\n */\n isIdentityMat4(m) {\n if (m[0] !== 1.0 || m[1] !== 0.0 || m[2] !== 0.0 || m[3] !== 0.0 ||\n m[4] !== 0.0 || m[5] !== 1.0 || m[6] !== 0.0 || m[7] !== 0.0 ||\n m[8] !== 0.0 || m[9] !== 0.0 || m[10] !== 1.0 || m[11] !== 0.0 ||\n m[12] !== 0.0 || m[13] !== 0.0 || m[14] !== 0.0 || m[15] !== 1.0) {\n return false;\n }\n return true;\n },\n\n /**\n * Negates the given 4x4 matrix.\n * @method negateMat4\n * @static\n */\n negateMat4(m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = -m[0];\n dest[1] = -m[1];\n dest[2] = -m[2];\n dest[3] = -m[3];\n dest[4] = -m[4];\n dest[5] = -m[5];\n dest[6] = -m[6];\n dest[7] = -m[7];\n dest[8] = -m[8];\n dest[9] = -m[9];\n dest[10] = -m[10];\n dest[11] = -m[11];\n dest[12] = -m[12];\n dest[13] = -m[13];\n dest[14] = -m[14];\n dest[15] = -m[15];\n return dest;\n },\n\n /**\n * Adds the given 4x4 matrices together.\n * @method addMat4\n * @static\n */\n addMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] + b[0];\n dest[1] = a[1] + b[1];\n dest[2] = a[2] + b[2];\n dest[3] = a[3] + b[3];\n dest[4] = a[4] + b[4];\n dest[5] = a[5] + b[5];\n dest[6] = a[6] + b[6];\n dest[7] = a[7] + b[7];\n dest[8] = a[8] + b[8];\n dest[9] = a[9] + b[9];\n dest[10] = a[10] + b[10];\n dest[11] = a[11] + b[11];\n dest[12] = a[12] + b[12];\n dest[13] = a[13] + b[13];\n dest[14] = a[14] + b[14];\n dest[15] = a[15] + b[15];\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addMat4Scalar\n * @static\n */\n addMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] + s;\n dest[1] = m[1] + s;\n dest[2] = m[2] + s;\n dest[3] = m[3] + s;\n dest[4] = m[4] + s;\n dest[5] = m[5] + s;\n dest[6] = m[6] + s;\n dest[7] = m[7] + s;\n dest[8] = m[8] + s;\n dest[9] = m[9] + s;\n dest[10] = m[10] + s;\n dest[11] = m[11] + s;\n dest[12] = m[12] + s;\n dest[13] = m[13] + s;\n dest[14] = m[14] + s;\n dest[15] = m[15] + s;\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addScalarMat4\n * @static\n */\n addScalarMat4(s, m, dest) {\n return math.addMat4Scalar(m, s, dest);\n },\n\n /**\n * Subtracts the second 4x4 matrix from the first.\n * @method subMat4\n * @static\n */\n subMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] - b[0];\n dest[1] = a[1] - b[1];\n dest[2] = a[2] - b[2];\n dest[3] = a[3] - b[3];\n dest[4] = a[4] - b[4];\n dest[5] = a[5] - b[5];\n dest[6] = a[6] - b[6];\n dest[7] = a[7] - b[7];\n dest[8] = a[8] - b[8];\n dest[9] = a[9] - b[9];\n dest[10] = a[10] - b[10];\n dest[11] = a[11] - b[11];\n dest[12] = a[12] - b[12];\n dest[13] = a[13] - b[13];\n dest[14] = a[14] - b[14];\n dest[15] = a[15] - b[15];\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subMat4Scalar\n * @static\n */\n subMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] - s;\n dest[1] = m[1] - s;\n dest[2] = m[2] - s;\n dest[3] = m[3] - s;\n dest[4] = m[4] - s;\n dest[5] = m[5] - s;\n dest[6] = m[6] - s;\n dest[7] = m[7] - s;\n dest[8] = m[8] - s;\n dest[9] = m[9] - s;\n dest[10] = m[10] - s;\n dest[11] = m[11] - s;\n dest[12] = m[12] - s;\n dest[13] = m[13] - s;\n dest[14] = m[14] - s;\n dest[15] = m[15] - s;\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subScalarMat4\n * @static\n */\n subScalarMat4(s, m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = s - m[0];\n dest[1] = s - m[1];\n dest[2] = s - m[2];\n dest[3] = s - m[3];\n dest[4] = s - m[4];\n dest[5] = s - m[5];\n dest[6] = s - m[6];\n dest[7] = s - m[7];\n dest[8] = s - m[8];\n dest[9] = s - m[9];\n dest[10] = s - m[10];\n dest[11] = s - m[11];\n dest[12] = s - m[12];\n dest[13] = s - m[13];\n dest[14] = s - m[14];\n dest[15] = s - m[15];\n return dest;\n },\n\n /**\n * Multiplies the two given 4x4 matrix by each other.\n * @method mulMat4\n * @static\n */\n mulMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = a[0];\n\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b03 = b[3];\n const b10 = b[4];\n const b11 = b[5];\n const b12 = b[6];\n const b13 = b[7];\n const b20 = b[8];\n const b21 = b[9];\n const b22 = b[10];\n const b23 = b[11];\n const b30 = b[12];\n const b31 = b[13];\n const b32 = b[14];\n const b33 = b[15];\n\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n\n return dest;\n },\n\n /**\n * Multiplies the two given 3x3 matrices by each other.\n * @method mulMat4\n * @static\n */\n mulMat3(a, b, dest) {\n if (!dest) {\n dest = new FloatArrayType(9);\n }\n\n const a11 = a[0];\n const a12 = a[3];\n const a13 = a[6];\n const a21 = a[1];\n const a22 = a[4];\n const a23 = a[7];\n const a31 = a[2];\n const a32 = a[5];\n const a33 = a[8];\n const b11 = b[0];\n const b12 = b[3];\n const b13 = b[6];\n const b21 = b[1];\n const b22 = b[4];\n const b23 = b[7];\n const b31 = b[2];\n const b32 = b[5];\n const b33 = b[8];\n\n dest[0] = a11 * b11 + a12 * b21 + a13 * b31;\n dest[3] = a11 * b12 + a12 * b22 + a13 * b32;\n dest[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n dest[1] = a21 * b11 + a22 * b21 + a23 * b31;\n dest[4] = a21 * b12 + a22 * b22 + a23 * b32;\n dest[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n dest[2] = a31 * b11 + a32 * b21 + a33 * b31;\n dest[5] = a31 * b12 + a32 * b22 + a33 * b32;\n dest[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return dest;\n },\n\n /**\n * Multiplies each element of the given 4x4 matrix by the given scalar.\n * @method mulMat4Scalar\n * @static\n */\n mulMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] * s;\n dest[1] = m[1] * s;\n dest[2] = m[2] * s;\n dest[3] = m[3] * s;\n dest[4] = m[4] * s;\n dest[5] = m[5] * s;\n dest[6] = m[6] * s;\n dest[7] = m[7] * s;\n dest[8] = m[8] * s;\n dest[9] = m[9] * s;\n dest[10] = m[10] * s;\n dest[11] = m[11] * s;\n dest[12] = m[12] * s;\n dest[13] = m[13] * s;\n dest[14] = m[14] * s;\n dest[15] = m[15] * s;\n return dest;\n },\n\n /**\n * Multiplies the given 4x4 matrix by the given four-element vector.\n * @method mulMat4v4\n * @static\n */\n mulMat4v4(m, v, dest = math.vec4()) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Transposes the given 4x4 matrix.\n * @method transposeMat4\n * @static\n */\n transposeMat4(mat, dest) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n const m4 = mat[4];\n\n const m14 = mat[14];\n const m8 = mat[8];\n const m13 = mat[13];\n const m12 = mat[12];\n const m9 = mat[9];\n if (!dest || mat === dest) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a12 = mat[6];\n const a13 = mat[7];\n const a23 = mat[11];\n mat[1] = m4;\n mat[2] = m8;\n mat[3] = m12;\n mat[4] = a01;\n mat[6] = m9;\n mat[7] = m13;\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = m14;\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = m4;\n dest[2] = m8;\n dest[3] = m12;\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = m9;\n dest[7] = m13;\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = m14;\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n },\n\n /**\n * Transposes the given 3x3 matrix.\n *\n * @method transposeMat3\n * @static\n */\n transposeMat3(mat, dest) {\n if (dest === mat) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a12 = mat[5];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = a01;\n dest[5] = mat[7];\n dest[6] = a02;\n dest[7] = a12;\n } else {\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n }\n return dest;\n },\n\n /**\n * Returns the determinant of the given 4x4 matrix.\n * @method determinantMat4\n * @static\n */\n determinantMat4(mat) {\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n return a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33;\n },\n\n /**\n * Returns the inverse of the given 4x4 matrix.\n * @method inverseMat4\n * @static\n */\n inverseMat4(mat, dest) {\n if (!dest) {\n dest = mat;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant (inlined to avoid double-caching)\n const invDet = 1 / (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06);\n\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\n return dest;\n },\n\n /**\n * Returns the trace of the given 4x4 matrix.\n * @method traceMat4\n * @static\n */\n traceMat4(m) {\n return (m[0] + m[5] + m[10] + m[15]);\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4\n * @static\n */\n translationMat4v(v, dest) {\n const m = dest || math.identityMat4();\n m[12] = v[0];\n m[13] = v[1];\n m[14] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 translation matrix.\n * @method translationMat3\n * @static\n */\n translationMat3v(v, dest) {\n const m = dest || math.identityMat3();\n m[6] = v[0];\n m[7] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4c\n * @static\n */\n translationMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.translationMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4s\n * @static\n */\n translationMat4s(s, dest) {\n return math.translationMat4c(s, s, s, dest);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param v\n * @param m\n */\n translateMat4v(xyz, m) {\n return math.translateMat4c(xyz[0], xyz[1], xyz[2], m);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param x\n * @param y\n * @param z\n * @param m\n */\n OLDtranslateMat4c(x, y, z, m) {\n\n const m12 = m[12];\n m[0] += m12 * x;\n m[4] += m12 * y;\n m[8] += m12 * z;\n\n const m13 = m[13];\n m[1] += m13 * x;\n m[5] += m13 * y;\n m[9] += m13 * z;\n\n const m14 = m[14];\n m[2] += m14 * x;\n m[6] += m14 * y;\n m[10] += m14 * z;\n\n const m15 = m[15];\n m[3] += m15 * x;\n m[7] += m15 * y;\n m[11] += m15 * z;\n\n return m;\n },\n\n translateMat4c(x, y, z, m) {\n\n const m3 = m[3];\n m[0] += m3 * x;\n m[1] += m3 * y;\n m[2] += m3 * z;\n\n const m7 = m[7];\n m[4] += m7 * x;\n m[5] += m7 * y;\n m[6] += m7 * z;\n\n const m11 = m[11];\n m[8] += m11 * x;\n m[9] += m11 * y;\n m[10] += m11 * z;\n\n const m15 = m[15];\n m[12] += m15 * x;\n m[13] += m15 * y;\n m[14] += m15 * z;\n\n return m;\n },\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4v\n * @static\n */\n rotationMat4v(anglerad, axis, m) {\n const ax = math.normalizeVec4([axis[0], axis[1], axis[2], 0.0], []);\n const s = Math.sin(anglerad);\n const c = Math.cos(anglerad);\n const q = 1.0 - c;\n\n const x = ax[0];\n const y = ax[1];\n const z = ax[2];\n\n let xy;\n let yz;\n let zx;\n let xs;\n let ys;\n let zs;\n\n //xx = x * x; used once\n //yy = y * y; used once\n //zz = z * z; used once\n xy = x * y;\n yz = y * z;\n zx = z * x;\n xs = x * s;\n ys = y * s;\n zs = z * s;\n\n m = m || math.mat4();\n\n m[0] = (q * x * x) + c;\n m[1] = (q * xy) + zs;\n m[2] = (q * zx) - ys;\n m[3] = 0.0;\n\n m[4] = (q * xy) - zs;\n m[5] = (q * y * y) + c;\n m[6] = (q * yz) + xs;\n m[7] = 0.0;\n\n m[8] = (q * zx) + ys;\n m[9] = (q * yz) - xs;\n m[10] = (q * z * z) + c;\n m[11] = 0.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = 0.0;\n m[15] = 1.0;\n\n return m;\n },\n\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4c\n * @static\n */\n rotationMat4c(anglerad, x, y, z, mat) {\n return math.rotationMat4v(anglerad, [x, y, z], mat);\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4v\n * @static\n */\n scalingMat4v(v, m = math.identityMat4()) {\n m[0] = v[0];\n m[5] = v[1];\n m[10] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 scale matrix.\n * @method scalingMat3v\n * @static\n */\n scalingMat3v(v, m = math.identityMat3()) {\n m[0] = v[0];\n m[4] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4c\n * @static\n */\n scalingMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.scalingMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param x\n * @param y\n * @param z\n * @param m\n */\n scaleMat4c(x, y, z, m) {\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n return m;\n },\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param xyz\n * @param m\n */\n scaleMat4v(xyz, m) {\n\n const x = xyz[0];\n const y = xyz[1];\n const z = xyz[2];\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4s\n * @static\n */\n scalingMat4s(s) {\n return math.scalingMat4c(s, s, s);\n },\n\n /**\n * Creates a matrix from a quaternion rotation and vector translation\n *\n * @param {Number[]} q Rotation quaternion\n * @param {Number[]} v Translation vector\n * @param {Number[]} dest Destination matrix\n * @returns {Number[]} dest\n */\n rotationTranslationMat4(q, v, dest = math.mat4()) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = v[0];\n dest[13] = v[1];\n dest[14] = v[2];\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Gets Euler angles from a 4x4 matrix.\n *\n * @param {Number[]} mat The 4x4 matrix.\n * @param {String} order Desired Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination Euler angles, created by default.\n * @returns {Number[]} The Euler angles.\n */\n mat4ToEuler(mat, order, dest = math.vec4()) {\n const clamp = math.clamp;\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = mat[0];\n\n const m12 = mat[4];\n const m13 = mat[8];\n const m21 = mat[1];\n const m22 = mat[5];\n const m23 = mat[9];\n const m31 = mat[2];\n const m32 = mat[6];\n const m33 = mat[10];\n\n if (order === 'XYZ') {\n\n dest[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.99999) {\n dest[0] = Math.atan2(-m23, m33);\n dest[2] = Math.atan2(-m12, m11);\n } else {\n dest[0] = Math.atan2(m32, m22);\n dest[2] = 0;\n\n }\n\n } else if (order === 'YXZ') {\n\n dest[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < 0.99999) {\n dest[1] = Math.atan2(m13, m33);\n dest[2] = Math.atan2(m21, m22);\n } else {\n dest[1] = Math.atan2(-m31, m11);\n dest[2] = 0;\n }\n\n } else if (order === 'ZXY') {\n\n dest[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < 0.99999) {\n dest[1] = Math.atan2(-m31, m33);\n dest[2] = Math.atan2(-m12, m22);\n } else {\n dest[1] = 0;\n dest[2] = Math.atan2(m21, m11);\n }\n\n } else if (order === 'ZYX') {\n\n dest[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < 0.99999) {\n dest[0] = Math.atan2(m32, m33);\n dest[2] = Math.atan2(m21, m11);\n } else {\n dest[0] = 0;\n dest[2] = Math.atan2(-m12, m22);\n }\n\n } else if (order === 'YZX') {\n\n dest[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < 0.99999) {\n dest[0] = Math.atan2(-m23, m22);\n dest[1] = Math.atan2(-m31, m11);\n } else {\n dest[0] = 0;\n dest[1] = Math.atan2(m13, m33);\n }\n\n } else if (order === 'XZY') {\n\n dest[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < 0.99999) {\n dest[0] = Math.atan2(m32, m22);\n dest[1] = Math.atan2(m13, m11);\n } else {\n dest[0] = Math.atan2(-m23, m33);\n dest[1] = 0;\n }\n }\n\n return dest;\n },\n\n composeMat4(position, quaternion, scale, mat = math.mat4()) {\n math.quaternionToRotationMat4(quaternion, mat);\n math.scaleMat4v(scale, mat);\n math.translateMat4v(position, mat);\n\n return mat;\n },\n\n decomposeMat4: (() => {\n\n const vec = new FloatArrayType(3);\n const matrix = new FloatArrayType(16);\n\n return function decompose(mat, position, quaternion, scale) {\n\n vec[0] = mat[0];\n vec[1] = mat[1];\n vec[2] = mat[2];\n\n let sx = math.lenVec3(vec);\n\n vec[0] = mat[4];\n vec[1] = mat[5];\n vec[2] = mat[6];\n\n const sy = math.lenVec3(vec);\n\n vec[8] = mat[8];\n vec[9] = mat[9];\n vec[10] = mat[10];\n\n const sz = math.lenVec3(vec);\n\n // if determine is negative, we need to invert one scale\n const det = math.determinantMat4(mat);\n\n if (det < 0) {\n sx = -sx;\n }\n\n position[0] = mat[12];\n position[1] = mat[13];\n position[2] = mat[14];\n\n // scale the rotation part\n matrix.set(mat);\n\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n\n matrix[0] *= invSX;\n matrix[1] *= invSX;\n matrix[2] *= invSX;\n\n matrix[4] *= invSY;\n matrix[5] *= invSY;\n matrix[6] *= invSY;\n\n matrix[8] *= invSZ;\n matrix[9] *= invSZ;\n matrix[10] *= invSZ;\n\n math.mat4ToQuaternion(matrix, quaternion);\n\n scale[0] = sx;\n scale[1] = sy;\n scale[2] = sz;\n\n return this;\n\n };\n\n })(),\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4v\n * @param pos vec3 position of the viewer\n * @param target vec3 point the viewer is looking at\n * @param up vec3 pointing \"up\"\n * @param dest mat4 Optional, mat4 matrix will be written into\n *\n * @return {mat4} dest if specified, a new mat4 otherwise\n */\n lookAtMat4v(pos, target, up, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n\n const posx = pos[0];\n const posy = pos[1];\n const posz = pos[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n const targetx = target[0];\n const targety = target[1];\n const targetz = target[2];\n\n if (posx === targetx && posy === targety && posz === targetz) {\n return math.identityMat4();\n }\n\n let z0;\n let z1;\n let z2;\n let x0;\n let x1;\n let x2;\n let y0;\n let y1;\n let y2;\n let len;\n\n //vec3.direction(eye, center, z);\n z0 = posx - targetx;\n z1 = posy - targety;\n z2 = posz - targetz;\n\n // normalize (no check needed for 0 because of early return)\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n //vec3.normalize(vec3.cross(up, z, x));\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n //vec3.normalize(vec3.cross(z, x, y));\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * posx + x1 * posy + x2 * posz);\n dest[13] = -(y0 * posx + y1 * posy + y2 * posz);\n dest[14] = -(z0 * posx + z1 * posy + z2 * posz);\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4c\n * @static\n */\n lookAtMat4c(posx, posy, posz, targetx, targety, targetz, upx, upy, upz) {\n return math.lookAtMat4v([posx, posy, posz], [targetx, targety, targetz], [upx, upy, upz], []);\n },\n\n /**\n * Returns a 4x4 orthographic projection matrix.\n * @method orthoMat4c\n * @static\n */\n orthoMat4c(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n\n dest[0] = 2.0 / rl;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 0.0;\n\n dest[4] = 0.0;\n dest[5] = 2.0 / tb;\n dest[6] = 0.0;\n dest[7] = 0.0;\n\n dest[8] = 0.0;\n dest[9] = 0.0;\n dest[10] = -2.0 / fn;\n dest[11] = 0.0;\n\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1.0;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4v(fmin, fmax, m) {\n if (!m) {\n m = math.mat4();\n }\n\n const fmin4 = [fmin[0], fmin[1], fmin[2], 0.0];\n const fmax4 = [fmax[0], fmax[1], fmax[2], 0.0];\n\n math.addVec4(fmax4, fmin4, tempMat1);\n math.subVec4(fmax4, fmin4, tempMat2);\n\n const t = 2.0 * fmin4[2];\n\n const tempMat20 = tempMat2[0];\n const tempMat21 = tempMat2[1];\n const tempMat22 = tempMat2[2];\n\n m[0] = t / tempMat20;\n m[1] = 0.0;\n m[2] = 0.0;\n m[3] = 0.0;\n\n m[4] = 0.0;\n m[5] = t / tempMat21;\n m[6] = 0.0;\n m[7] = 0.0;\n\n m[8] = tempMat1[0] / tempMat20;\n m[9] = tempMat1[1] / tempMat21;\n m[10] = -tempMat1[2] / tempMat22;\n m[11] = -1.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = -t * fmax4[2] / tempMat22;\n m[15] = 0.0;\n\n return m;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method perspectiveMat4v\n * @static\n */\n perspectiveMat4(fovyrad, aspectratio, znear, zfar, m) {\n const pmin = [];\n const pmax = [];\n\n pmin[2] = znear;\n pmax[2] = zfar;\n\n pmax[1] = pmin[2] * Math.tan(fovyrad / 2.0);\n pmin[1] = -pmax[1];\n\n pmax[0] = pmax[1] * aspectratio;\n pmin[0] = -pmax[0];\n\n return math.frustumMat4v(pmin, pmax, m);\n },\n\n /**\n * Transforms a three-element position by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint3(m, p, dest = math.vec3()) {\n\n const x = p[0];\n const y = p[1];\n const z = p[2];\n\n dest[0] = (m[0] * x) + (m[4] * y) + (m[8] * z) + m[12];\n dest[1] = (m[1] * x) + (m[5] * y) + (m[9] * z) + m[13];\n dest[2] = (m[2] * x) + (m[6] * y) + (m[10] * z) + m[14];\n\n return dest;\n },\n\n /**\n * Transforms a homogeneous coordinate by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint4(m, v, dest = math.vec4()) {\n dest[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12] * v[3];\n dest[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13] * v[3];\n dest[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14] * v[3];\n dest[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];\n\n return dest;\n },\n\n\n /**\n * Transforms an array of three-element positions by a 4x4 matrix.\n * @method transformPoints3\n * @static\n */\n transformPoints3(m, points, points2) {\n const result = points2 || [];\n const len = points.length;\n let p0;\n let p1;\n let p2;\n let pi;\n\n // cache values\n const m0 = m[0];\n\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n let r;\n\n for (let i = 0; i < len; ++i) {\n\n // cache values\n pi = points[i];\n\n p0 = pi[0];\n p1 = pi[1];\n p2 = pi[2];\n\n r = result[i] || (result[i] = [0, 0, 0]);\n\n r[0] = (m0 * p0) + (m4 * p1) + (m8 * p2) + m12;\n r[1] = (m1 * p0) + (m5 * p1) + (m9 * p2) + m13;\n r[2] = (m2 * p0) + (m6 * p1) + (m10 * p2) + m14;\n r[3] = (m3 * p0) + (m7 * p1) + (m11 * p2) + m15;\n }\n\n result.length = len;\n\n return result;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions3\n * @static\n */\n transformPositions3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 3) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions4\n * @static\n */\n transformPositions4(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms a three-element vector by a 4x4 matrix.\n * @method transformVec3\n * @static\n */\n transformVec3(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n dest = dest || this.vec3();\n dest[0] = (m[0] * v0) + (m[4] * v1) + (m[8] * v2);\n dest[1] = (m[1] * v0) + (m[5] * v1) + (m[9] * v2);\n dest[2] = (m[2] * v0) + (m[6] * v1) + (m[10] * v2);\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 matrix.\n * @method transformVec4\n * @static\n */\n transformVec4(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest = dest || math.vec4();\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the x-axis\n *\n * @method rotateVec3X\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3X(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the y-axis\n *\n * @method rotateVec3Y\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Y(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the z-axis\n *\n * @method rotateVec3Z\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Z(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2];\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 projection matrix.\n *\n * @method projectVec4\n * @param {Number[]} p 3D View-space coordinate\n * @param {Number[]} q 2D Projected coordinate\n * @returns {Number[]} 2D Projected coordinate\n * @static\n */\n projectVec4(p, q) {\n const f = 1.0 / p[3];\n q = q || math.vec2();\n q[0] = v[0] * f;\n q[1] = v[1] * f;\n return q;\n },\n\n /**\n * Unprojects a three-element vector.\n *\n * @method unprojectVec3\n * @param {Number[]} p 3D Projected coordinate\n * @param {Number[]} viewMat View matrix\n * @returns {Number[]} projMat Projection matrix\n * @static\n */\n unprojectVec3: ((() => {\n const mat = new FloatArrayType(16);\n const mat2 = new FloatArrayType(16);\n const mat3 = new FloatArrayType(16);\n return function (p, viewMat, projMat, q) {\n return this.transformVec3(this.mulMat4(this.inverseMat4(viewMat, mat), this.inverseMat4(projMat, mat2), mat3), p, q)\n };\n }))(),\n\n /**\n * Linearly interpolates between two 3D vectors.\n * @method lerpVec3\n * @static\n */\n lerpVec3(t, t1, t2, p1, p2, dest) {\n const result = dest || math.vec3();\n const f = (t - t1) / (t2 - t1);\n result[0] = p1[0] + (f * (p2[0] - p1[0]));\n result[1] = p1[1] + (f * (p2[1] - p1[1]));\n result[2] = p1[2] + (f * (p2[2] - p1[2]));\n return result;\n },\n\n\n /**\n * Flattens a two-dimensional array into a one-dimensional array.\n *\n * @method flatten\n * @static\n * @param {Array of Arrays} a A 2D array\n * @returns Flattened 1D array\n */\n flatten(a) {\n\n const result = [];\n\n let i;\n let leni;\n let j;\n let lenj;\n let item;\n\n for (i = 0, leni = a.length; i < leni; i++) {\n item = a[i];\n for (j = 0, lenj = item.length; j < lenj; j++) {\n result.push(item[j]);\n }\n }\n\n return result;\n },\n\n\n identityQuaternion(dest = math.vec4()) {\n dest[0] = 0.0;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 1.0;\n return dest;\n },\n\n /**\n * Initializes a quaternion from Euler angles.\n *\n * @param {Number[]} euler The Euler angles.\n * @param {String} order Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination quaternion, created by default.\n * @returns {Number[]} The quaternion.\n */\n eulerToQuaternion(euler, order, dest = math.vec4()) {\n // http://www.mathworks.com/matlabcentral/fileexchange/\n // \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n //\tcontent/SpinCalc.m\n\n const a = (euler[0] * math.DEGTORAD) / 2;\n const b = (euler[1] * math.DEGTORAD) / 2;\n const c = (euler[2] * math.DEGTORAD) / 2;\n\n const c1 = Math.cos(a);\n const c2 = Math.cos(b);\n const c3 = Math.cos(c);\n const s1 = Math.sin(a);\n const s2 = Math.sin(b);\n const s3 = Math.sin(c);\n\n if (order === 'XYZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'YXZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'ZXY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'ZYX') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'YZX') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'XZY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n }\n\n return dest;\n },\n\n mat4ToQuaternion(m, dest = math.vec4()) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = m[0];\n const m12 = m[4];\n const m13 = m[8];\n const m21 = m[1];\n const m22 = m[5];\n const m23 = m[9];\n const m31 = m[2];\n const m32 = m[6];\n const m33 = m[10];\n let s;\n\n const trace = m11 + m22 + m33;\n\n if (trace > 0) {\n\n s = 0.5 / Math.sqrt(trace + 1.0);\n\n dest[3] = 0.25 / s;\n dest[0] = (m32 - m23) * s;\n dest[1] = (m13 - m31) * s;\n dest[2] = (m21 - m12) * s;\n\n } else if (m11 > m22 && m11 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n dest[3] = (m32 - m23) / s;\n dest[0] = 0.25 * s;\n dest[1] = (m12 + m21) / s;\n dest[2] = (m13 + m31) / s;\n\n } else if (m22 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n dest[3] = (m13 - m31) / s;\n dest[0] = (m12 + m21) / s;\n dest[1] = 0.25 * s;\n dest[2] = (m23 + m32) / s;\n\n } else {\n\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n dest[3] = (m21 - m12) / s;\n dest[0] = (m13 + m31) / s;\n dest[1] = (m23 + m32) / s;\n dest[2] = 0.25 * s;\n }\n\n return dest;\n },\n\n vec3PairToQuaternion(u, v, dest = math.vec4()) {\n const norm_u_norm_v = Math.sqrt(math.dotVec3(u, u) * math.dotVec3(v, v));\n let real_part = norm_u_norm_v + math.dotVec3(u, v);\n\n if (real_part < 0.00000001 * norm_u_norm_v) {\n\n // If u and v are exactly opposite, rotate 180 degrees\n // around an arbitrary orthogonal axis. Axis normalisation\n // can happen later, when we normalise the quaternion.\n\n real_part = 0.0;\n\n if (Math.abs(u[0]) > Math.abs(u[2])) {\n\n dest[0] = -u[1];\n dest[1] = u[0];\n dest[2] = 0;\n\n } else {\n dest[0] = 0;\n dest[1] = -u[2];\n dest[2] = u[1]\n }\n\n } else {\n\n // Otherwise, build quaternion the standard way.\n math.cross3Vec3(u, v, dest);\n }\n\n dest[3] = real_part;\n\n return math.normalizeQuaternion(dest);\n },\n\n angleAxisToQuaternion(angleAxis, dest = math.vec4()) {\n const halfAngle = angleAxis[3] / 2.0;\n const fsin = Math.sin(halfAngle);\n dest[0] = fsin * angleAxis[0];\n dest[1] = fsin * angleAxis[1];\n dest[2] = fsin * angleAxis[2];\n dest[3] = Math.cos(halfAngle);\n return dest;\n },\n\n quaternionToEuler: ((() => {\n const mat = new FloatArrayType(16);\n return (q, order, dest) => {\n dest = dest || math.vec3();\n math.quaternionToRotationMat4(q, mat);\n math.mat4ToEuler(mat, order, dest);\n return dest;\n };\n }))(),\n\n mulQuaternions(p, q, dest = math.vec4()) {\n const p0 = p[0];\n const p1 = p[1];\n const p2 = p[2];\n const p3 = p[3];\n const q0 = q[0];\n const q1 = q[1];\n const q2 = q[2];\n const q3 = q[3];\n dest[0] = p3 * q0 + p0 * q3 + p1 * q2 - p2 * q1;\n dest[1] = p3 * q1 + p1 * q3 + p2 * q0 - p0 * q2;\n dest[2] = p3 * q2 + p2 * q3 + p0 * q1 - p1 * q0;\n dest[3] = p3 * q3 - p0 * q0 - p1 * q1 - p2 * q2;\n return dest;\n },\n\n vec3ApplyQuaternion(q, vec, dest = math.vec3()) {\n const x = vec[0];\n const y = vec[1];\n const z = vec[2];\n\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n\n // calculate quat * vector\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\n return dest;\n },\n\n quaternionToMat4(q, dest) {\n\n dest = math.identityMat4(dest);\n\n const q0 = q[0]; //x\n const q1 = q[1]; //y\n const q2 = q[2]; //z\n const q3 = q[3]; //w\n\n const tx = 2.0 * q0;\n const ty = 2.0 * q1;\n const tz = 2.0 * q2;\n\n const twx = tx * q3;\n const twy = ty * q3;\n const twz = tz * q3;\n\n const txx = tx * q0;\n const txy = ty * q0;\n const txz = tz * q0;\n\n const tyy = ty * q1;\n const tyz = tz * q1;\n const tzz = tz * q2;\n\n dest[0] = 1.0 - (tyy + tzz);\n dest[1] = txy + twz;\n dest[2] = txz - twy;\n\n dest[4] = txy - twz;\n dest[5] = 1.0 - (txx + tzz);\n dest[6] = tyz + twx;\n\n dest[8] = txz + twy;\n dest[9] = tyz - twx;\n\n dest[10] = 1.0 - (txx + tyy);\n\n return dest;\n },\n\n quaternionToRotationMat4(q, m) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n m[0] = 1 - (yy + zz);\n m[4] = xy - wz;\n m[8] = xz + wy;\n\n m[1] = xy + wz;\n m[5] = 1 - (xx + zz);\n m[9] = yz - wx;\n\n m[2] = xz - wy;\n m[6] = yz + wx;\n m[10] = 1 - (xx + yy);\n\n // last column\n m[3] = 0;\n m[7] = 0;\n m[11] = 0;\n\n // bottom row\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n\n return m;\n },\n\n normalizeQuaternion(q, dest = q) {\n const len = math.lenVec4([q[0], q[1], q[2], q[3]]);\n dest[0] = q[0] / len;\n dest[1] = q[1] / len;\n dest[2] = q[2] / len;\n dest[3] = q[3] / len;\n return dest;\n },\n\n conjugateQuaternion(q, dest = q) {\n dest[0] = -q[0];\n dest[1] = -q[1];\n dest[2] = -q[2];\n dest[3] = q[3];\n return dest;\n },\n\n inverseQuaternion(q, dest) {\n return math.normalizeQuaternion(math.conjugateQuaternion(q, dest));\n },\n\n quaternionToAngleAxis(q, angleAxis = math.vec4()) {\n q = math.normalizeQuaternion(q, tempVec4);\n const q3 = q[3];\n const angle = 2 * Math.acos(q3);\n const s = Math.sqrt(1 - q3 * q3);\n if (s < 0.001) { // test to avoid divide by zero, s is always positive due to sqrt\n angleAxis[0] = q[0];\n angleAxis[1] = q[1];\n angleAxis[2] = q[2];\n } else {\n angleAxis[0] = q[0] / s;\n angleAxis[1] = q[1] / s;\n angleAxis[2] = q[2] / s;\n }\n angleAxis[3] = angle; // * 57.295779579;\n return angleAxis;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Boundaries\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns a new, uninitialized 3D axis-aligned bounding box.\n *\n * @private\n */\n AABB3(values) {\n return new FloatArrayType(values || 6);\n },\n\n /**\n * Returns a new, uninitialized 2D axis-aligned bounding box.\n *\n * @private\n */\n AABB2(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3D oriented bounding box (OBB).\n *\n * @private\n */\n OBB3(values) {\n return new FloatArrayType(values || 32);\n },\n\n /**\n * Returns a new, uninitialized 2D oriented bounding box (OBB).\n *\n * @private\n */\n OBB2(values) {\n return new FloatArrayType(values || 16);\n },\n\n /** Returns a new 3D bounding sphere */\n Sphere3(x, y, z, r) {\n return new FloatArrayType([x, y, z, r]);\n },\n\n /**\n * Transforms an OBB3 by a 4x4 matrix.\n *\n * @private\n */\n transformOBB3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /** Returns true if the first AABB contains the second AABB.\n * @param aabb1\n * @param aabb2\n * @returns {boolean}\n */\n containsAABB3: function (aabb1, aabb2) {\n const result = (\n aabb1[0] <= aabb2[0] && aabb2[3] <= aabb1[3] &&\n aabb1[1] <= aabb2[1] && aabb2[4] <= aabb1[4] &&\n aabb1[2] <= aabb2[2] && aabb2[5] <= aabb1[5]);\n return result;\n },\n\n /**\n * Gets the diagonal size of an AABB3 given as minima and maxima.\n *\n * @private\n */\n getAABB3Diag: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return aabb => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n math.subVec3(max, min, tempVec3);\n\n return Math.abs(math.lenVec3(tempVec3));\n };\n }))(),\n\n /**\n * Get a diagonal boundary size that is symmetrical about the given point.\n *\n * @private\n */\n getAABB3DiagPoint: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (aabb, p) => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const diagVec = math.subVec3(max, min, tempVec3);\n\n const xneg = p[0] - aabb[0];\n const xpos = aabb[3] - p[0];\n const yneg = p[1] - aabb[1];\n const ypos = aabb[4] - p[1];\n const zneg = p[2] - aabb[2];\n const zpos = aabb[5] - p[2];\n\n diagVec[0] += (xneg > xpos) ? xneg : xpos;\n diagVec[1] += (yneg > ypos) ? yneg : ypos;\n diagVec[2] += (zneg > zpos) ? zneg : zpos;\n\n return Math.abs(math.lenVec3(diagVec));\n };\n }))(),\n\n /**\n * Gets the center of an AABB.\n *\n * @private\n */\n getAABB3Center(aabb, dest) {\n const r = dest || math.vec3();\n\n r[0] = (aabb[0] + aabb[3]) / 2;\n r[1] = (aabb[1] + aabb[4]) / 2;\n r[2] = (aabb[2] + aabb[5]) / 2;\n\n return r;\n },\n\n /**\n * Gets the center of a 2D AABB.\n *\n * @private\n */\n getAABB2Center(aabb, dest) {\n const r = dest || math.vec2();\n\n r[0] = (aabb[2] + aabb[0]) / 2;\n r[1] = (aabb[3] + aabb[1]) / 2;\n\n return r;\n },\n\n /**\n * Collapses a 3D axis-aligned boundary, ready to expand to fit 3D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB3(aabb = math.AABB3()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MAX_DOUBLE;\n aabb[3] = -math.MAX_DOUBLE;\n aabb[4] = -math.MAX_DOUBLE;\n aabb[5] = -math.MAX_DOUBLE;\n\n return aabb;\n },\n\n /**\n * Converts an axis-aligned 3D boundary into an oriented boundary consisting of\n * an array of eight 3D positions, one for each corner of the boundary.\n *\n * @private\n */\n AABB3ToOBB3(aabb, obb = math.OBB3()) {\n obb[0] = aabb[0];\n obb[1] = aabb[1];\n obb[2] = aabb[2];\n obb[3] = 1;\n\n obb[4] = aabb[3];\n obb[5] = aabb[1];\n obb[6] = aabb[2];\n obb[7] = 1;\n\n obb[8] = aabb[3];\n obb[9] = aabb[4];\n obb[10] = aabb[2];\n obb[11] = 1;\n\n obb[12] = aabb[0];\n obb[13] = aabb[4];\n obb[14] = aabb[2];\n obb[15] = 1;\n\n obb[16] = aabb[0];\n obb[17] = aabb[1];\n obb[18] = aabb[5];\n obb[19] = 1;\n\n obb[20] = aabb[3];\n obb[21] = aabb[1];\n obb[22] = aabb[5];\n obb[23] = 1;\n\n obb[24] = aabb[3];\n obb[25] = aabb[4];\n obb[26] = aabb[5];\n obb[27] = 1;\n\n obb[28] = aabb[0];\n obb[29] = aabb[4];\n obb[30] = aabb[5];\n obb[31] = 1;\n\n return obb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n positions3ToAABB3: ((() => {\n\n const p = new FloatArrayType(3);\n\n return (positions, aabb, positionsDecodeMatrix) => {\n aabb = aabb || math.AABB3();\n\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n if (positionsDecodeMatrix) {\n\n p[0] = positions[i + 0];\n p[1] = positions[i + 1];\n p[2] = positions[i + 2];\n\n math.decompressPosition(p, positionsDecodeMatrix, p);\n\n x = p[0];\n y = p[1];\n z = p[2];\n\n } else {\n x = positions[i + 0];\n y = positions[i + 1];\n z = positions[i + 2];\n }\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n };\n }))(),\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n OBB3ToAABB3(obb, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = obb.length; i < len; i += 4) {\n\n x = obb[i + 0];\n y = obb[i + 1];\n z = obb[i + 2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the given 3D points.\n *\n * @private\n */\n points3ToAABB3(points, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = points.length; i < len; i++) {\n\n x = points[i][0];\n y = points[i][1];\n z = points[i][2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n points3ToSphere3: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const numPoints = points.length;\n\n for (i = 0; i < numPoints; i++) {\n x += points[i][0];\n y += points[i][1];\n z += points[i][2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < numPoints; i++) {\n\n dist = Math.abs(math.lenVec3(math.subVec3(points[i], sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D positions.\n *\n * @private\n */\n positions3ToSphere3: ((() => {\n\n const tempVec3a = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n\n return (positions, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPositions = positions.length;\n let radius = 0;\n\n for (i = 0; i < lenPositions; i += 3) {\n x += positions[i];\n y += positions[i + 1];\n z += positions[i + 2];\n }\n\n const numPositions = lenPositions / 3;\n\n sphere[0] = x / numPositions;\n sphere[1] = y / numPositions;\n sphere[2] = z / numPositions;\n\n let dist;\n\n for (i = 0; i < lenPositions; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(tempVec3a, sphere, tempVec3b)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToSphere3: ((() => {\n\n const point = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPoints = points.length;\n const numPoints = lenPoints / 4;\n\n for (i = 0; i < lenPoints; i += 4) {\n x += points[i + 0];\n y += points[i + 1];\n z += points[i + 2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < lenPoints; i += 4) {\n\n point[0] = points[i + 0];\n point[1] = points[i + 1];\n point[2] = points[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(point, sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Gets the center of a bounding sphere.\n *\n * @private\n */\n getSphere3Center(sphere, dest = math.vec3()) {\n dest[0] = sphere[0];\n dest[1] = sphere[1];\n dest[2] = sphere[2];\n\n return dest;\n },\n\n /**\n * Expands the first axis-aligned 3D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB3(aabb1, aabb2) {\n\n if (aabb1[0] > aabb2[0]) {\n aabb1[0] = aabb2[0];\n }\n\n if (aabb1[1] > aabb2[1]) {\n aabb1[1] = aabb2[1];\n }\n\n if (aabb1[2] > aabb2[2]) {\n aabb1[2] = aabb2[2];\n }\n\n if (aabb1[3] < aabb2[3]) {\n aabb1[3] = aabb2[3];\n }\n\n if (aabb1[4] < aabb2[4]) {\n aabb1[4] = aabb2[4];\n }\n\n if (aabb1[5] < aabb2[5]) {\n aabb1[5] = aabb2[5];\n }\n\n return aabb1;\n },\n\n /**\n * Expands an axis-aligned 3D boundary to enclose the given point, if needed.\n *\n * @private\n */\n expandAABB3Point3(aabb, p) {\n\n if (aabb[0] > p[0]) {\n aabb[0] = p[0];\n }\n\n if (aabb[1] > p[1]) {\n aabb[1] = p[1];\n }\n\n if (aabb[2] > p[2]) {\n aabb[2] = p[2];\n }\n\n if (aabb[3] < p[0]) {\n aabb[3] = p[0];\n }\n\n if (aabb[4] < p[1]) {\n aabb[4] = p[1];\n }\n\n if (aabb[5] < p[2]) {\n aabb[5] = p[2];\n }\n\n return aabb;\n },\n\n /**\n * Calculates the normal vector of a triangle.\n *\n * @private\n */\n triangleNormal(a, b, c, normal = math.vec3()) {\n const p1x = b[0] - a[0];\n const p1y = b[1] - a[1];\n const p1z = b[2] - a[2];\n\n const p2x = c[0] - a[0];\n const p2y = c[1] - a[1];\n const p2z = c[2] - a[2];\n\n const p3x = p1y * p2z - p1z * p2y;\n const p3y = p1z * p2x - p1x * p2z;\n const p3z = p1x * p2y - p1y * p2x;\n\n const mag = Math.sqrt(p3x * p3x + p3y * p3y + p3z * p3z);\n if (mag === 0) {\n normal[0] = 0;\n normal[1] = 0;\n normal[2] = 0;\n } else {\n normal[0] = p3x / mag;\n normal[1] = p3y / mag;\n normal[2] = p3z / mag;\n }\n\n return normal\n }\n};\n\nexport {math};","/**\n * Given geometry defined as an array of positions, optional normals, option uv and an array of indices, returns\n * modified arrays that have duplicate vertices removed.\n *\n * @private\n */\nfunction mergeVertices(positions, indices, mergedPositions, mergedIndices) {\n const positionsMap = {};\n const indicesLookup = [];\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let uvi = 0;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n const vx = positions[i];\n const vy = positions[i + 1];\n const vz = positions[i + 2];\n const key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n if (positionsMap[key] === undefined) {\n positionsMap[key] = mergedPositions.length / 3;\n mergedPositions.push(vx);\n mergedPositions.push(vy);\n mergedPositions.push(vz);\n }\n indicesLookup[i / 3] = positionsMap[key];\n uvi += 2;\n }\n for (let i = 0, len = indices.length; i < len; i++) {\n mergedIndices[i] = indicesLookup[indices[i]];\n }\n}\n\nexport {mergeVertices};","import {earcut} from './../lib/earcut';\nimport {math} from \"./../lib/math.js\";\n\nconst tempVec2a = math.vec2();\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\n\n/**\n * @desc Parses a CityJSON model into an {@link XKTModel}.\n *\n * [CityJSON](https://www.cityjson.org) is a JSON-based encoding for a subset of the CityGML data model (version 2.0.0),\n * which is an open standardised data model and exchange format to store digital 3D models of cities and\n * landscapes. CityGML is an official standard of the [Open Geospatial Consortium](https://www.ogc.org/).\n *\n * This converter function supports most of the [CityJSON 1.0.2 Specification](https://www.cityjson.org/specs/1.0.2),\n * with the following limitations:\n *\n * * Does not (yet) support CityJSON semantics for geometry primitives.\n * * Does not (yet) support textured geometries.\n * * Does not (yet) support geometry templates.\n * * When the CityJSON file provides multiple *themes* for a geometry, then we parse only the first of the provided themes for that geometry.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a CityJSON model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/cityjson/DenHaag.json\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseCityJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.data CityJSON data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {boolean} [params.center=false] Set true to center the CityJSON vertex positions to [0,0,0]. This is applied before the transformation matrix, if specified.\n * @param {Boolean} [params.transform] 4x4 transformation matrix to transform CityJSON vertex positions. Use this to rotate, translate and scale them if neccessary.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when CityJSON has been parsed.\n */\nfunction parseCityJSONIntoXKTModel({\n data,\n xktModel,\n center = false,\n transform = null,\n stats = {}, log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (data.type !== \"CityJSON\") {\n reject(\"Invalid argument: data is not a CityJSON file\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n let vertices;\n\n log(\"Using parser: parseCityJSONIntoXKTModel\");\n\n log(`center: ${center}`);\n if (transform) {\n log(`transform: [${transform}]`);\n }\n\n if (data.transform || center || transform) {\n vertices = copyVertices(data.vertices);\n if (data.transform) {\n transformVertices(vertices, data.transform)\n }\n if (center) {\n centerVertices(vertices);\n }\n if (transform) {\n customTransformVertices(vertices, transform);\n }\n } else {\n vertices = data.vertices;\n }\n\n stats.sourceFormat = data.type || \"\";\n stats.schemaVersion = data.version || \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n stats.numMetaObjects++;\n\n const modelMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: modelMetaObjectId,\n metaObjectType: \"CityJSON\",\n metaObjectName: \"CityJSON\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n stats.numMetaObjects++;\n\n const ctx = {\n data,\n vertices,\n xktModel,\n rootMetaObjectId: modelMetaObjectId,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n ctx.xktModel.schema = data.type + \" \" + data.version;\n\n ctx.log(\"Converting \" + ctx.xktModel.schema);\n\n parseCityJSON(ctx);\n\n resolve();\n });\n}\n\nfunction copyVertices(vertices) {\n const vertices2 = [];\n for (let i = 0, j = 0; i < vertices.length; i++, j += 3) {\n const x = vertices[i][0];\n const y = vertices[i][1];\n const z = vertices[i][2];\n vertices2.push([x, y, z]);\n }\n return vertices2;\n}\n\nfunction transformVertices(vertices, cityJSONTransform) {\n const scale = cityJSONTransform.scale || math.vec3([1, 1, 1]);\n const translate = cityJSONTransform.translate || math.vec3([0, 0, 0]);\n for (let i = 0; i < vertices.length; i++) {\n const vertex = vertices[i];\n vertex[0] = (vertex[0] * scale[0]) + translate[0];\n vertex[1] = (vertex[1] * scale[1]) + translate[1];\n vertex[2] = (vertex[2] * scale[2]) + translate[2];\n }\n}\n\nfunction centerVertices(vertices) {\n if (center) {\n const centerPos = math.vec3();\n const numPoints = vertices.length;\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n centerPos[0] += vertex[0];\n centerPos[1] += vertex[1];\n centerPos[2] += vertex[2];\n }\n centerPos[0] /= numPoints;\n centerPos[1] /= numPoints;\n centerPos[2] /= numPoints;\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n vertex[0] -= centerPos[0];\n vertex[1] -= centerPos[1];\n vertex[2] -= centerPos[2];\n }\n }\n}\n\nfunction customTransformVertices(vertices, transform) {\n if (transform) {\n const mat = math.mat4(transform);\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n math.transformPoint3(mat, vertex, vertex);\n }\n }\n}\n\nfunction parseCityJSON(ctx) {\n\n const data = ctx.data;\n const cityObjects = data.CityObjects;\n\n for (const objectId in cityObjects) {\n if (cityObjects.hasOwnProperty(objectId)) {\n const cityObject = cityObjects[objectId];\n parseCityObject(ctx, cityObject, objectId);\n }\n }\n}\n\nfunction parseCityObject(ctx, cityObject, objectId) {\n\n const xktModel = ctx.xktModel;\n const data = ctx.data;\n const metaObjectId = objectId;\n const metaObjectType = cityObject.type;\n const metaObjectName = metaObjectType + \" : \" + objectId;\n\n const parentMetaObjectId = cityObject.parents ? cityObject.parents[0] : ctx.rootMetaObjectId;\n\n xktModel.createMetaObject({\n metaObjectId,\n metaObjectName,\n metaObjectType,\n parentMetaObjectId\n });\n\n ctx.stats.numMetaObjects++;\n\n if (!(cityObject.geometry && cityObject.geometry.length > 0)) {\n return;\n }\n\n const meshIds = [];\n\n for (let i = 0, len = cityObject.geometry.length; i < len; i++) {\n\n const geometry = cityObject.geometry[i];\n\n let objectMaterial;\n let surfaceMaterials;\n\n const appearance = data.appearance;\n if (appearance) {\n const materials = appearance.materials;\n if (materials) {\n const geometryMaterial = geometry.material;\n if (geometryMaterial) {\n const themeIds = Object.keys(geometryMaterial);\n if (themeIds.length > 0) {\n const themeId = themeIds[0];\n const theme = geometryMaterial[themeId];\n if (theme.value !== undefined) {\n objectMaterial = materials[theme.value];\n } else {\n const values = theme.values;\n if (values) {\n surfaceMaterials = [];\n for (let j = 0, lenj = values.length; j < lenj; j++) {\n const value = values[i];\n const surfaceMaterial = materials[value];\n surfaceMaterials.push(surfaceMaterial);\n }\n }\n }\n }\n }\n }\n }\n\n if (surfaceMaterials) {\n parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds);\n\n } else {\n parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds);\n }\n }\n\n if (meshIds.length > 0) {\n xktModel.createEntity({\n entityId: objectId,\n meshIds: meshIds\n });\n\n ctx.stats.numObjects++;\n }\n}\n\nfunction parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds) {\n\n const geomType = geometry.type;\n\n switch (geomType) {\n\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n break;\n\n case \"MultiSolid\":\n\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n}\n\nfunction parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds) {\n\n const vertices = ctx.vertices;\n const xktModel = ctx.xktModel;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n const surface = surfaces[i];\n const surfaceMaterial = surfaceMaterials[i] || {diffuseColor: [0.8, 0.8, 0.8], transparency: 1.0};\n\n const face = [];\n const holes = [];\n\n const sharedIndices = [];\n\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n for (let j = 0; j < surface.length; j++) {\n\n if (face.length > 0) {\n holes.push(face.length);\n }\n\n const newFace = extractLocalIndices(ctx, surface[j], sharedIndices, geometryCfg);\n\n face.push(...newFace);\n }\n\n if (face.length === 3) { // Triangle\n\n geometryCfg.indices.push(face[0]);\n geometryCfg.indices.push(face[1]);\n geometryCfg.indices.push(face[2]);\n\n } else if (face.length > 3) { // Polygon\n\n // Prepare to triangulate\n\n const pList = [];\n\n for (let k = 0; k < face.length; k++) {\n pList.push({\n x: vertices[sharedIndices[face[k]]][0],\n y: vertices[sharedIndices[face[k]]][1],\n z: vertices[sharedIndices[face[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n\n // Convert to 2D\n\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n\n to2D(pList[k], normal, tempVec2a);\n\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n // Triangulate\n\n const tr = earcut(pv, holes, 2);\n\n // Create triangles\n\n for (let k = 0; k < tr.length; k += 3) {\n geometryCfg.indices.unshift(face[tr[k]]);\n geometryCfg.indices.unshift(face[tr[k + 1]]);\n geometryCfg.indices.unshift(face[tr[k + 2]]);\n }\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (surfaceMaterial && surfaceMaterial.diffuseColor) ? surfaceMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (surfaceMaterial && surfaceMaterial.transparency !== undefined) ? (1.0 - surfaceMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n}\n\nfunction parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds) {\n\n const xktModel = ctx.xktModel;\n const sharedIndices = [];\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n const geomType = geometry.type;\n\n switch (geomType) {\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n break;\n\n case \"MultiSolid\":\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (objectMaterial && objectMaterial.diffuseColor) ? objectMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (objectMaterial && objectMaterial.transparency !== undefined) ? (1.0 - objectMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n}\n\nfunction parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, primitiveCfg) {\n\n const vertices = ctx.vertices;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n let boundary = [];\n let holes = [];\n\n for (let j = 0; j < surfaces[i].length; j++) {\n if (boundary.length > 0) {\n holes.push(boundary.length);\n }\n const newBoundary = extractLocalIndices(ctx, surfaces[i][j], sharedIndices, primitiveCfg);\n boundary.push(...newBoundary);\n }\n\n if (boundary.length === 3) { // Triangle\n\n primitiveCfg.indices.push(boundary[0]);\n primitiveCfg.indices.push(boundary[1]);\n primitiveCfg.indices.push(boundary[2]);\n\n } else if (boundary.length > 3) { // Polygon\n\n let pList = [];\n\n for (let k = 0; k < boundary.length; k++) {\n pList.push({\n x: vertices[sharedIndices[boundary[k]]][0],\n y: vertices[sharedIndices[boundary[k]]][1],\n z: vertices[sharedIndices[boundary[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n to2D(pList[k], normal, tempVec2a);\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n const tr = earcut(pv, holes, 2);\n\n for (let k = 0; k < tr.length; k += 3) {\n primitiveCfg.indices.unshift(boundary[tr[k]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 1]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 2]]);\n }\n }\n }\n}\n\nfunction extractLocalIndices(ctx, boundary, sharedIndices, geometryCfg) {\n\n const vertices = ctx.vertices;\n const newBoundary = []\n\n for (let i = 0, len = boundary.length; i < len; i++) {\n\n const index = boundary[i];\n\n if (sharedIndices.includes(index)) {\n const vertexIndex = sharedIndices.indexOf(index);\n newBoundary.push(vertexIndex);\n\n } else {\n geometryCfg.positions.push(vertices[index][0]);\n geometryCfg.positions.push(vertices[index][1]);\n geometryCfg.positions.push(vertices[index][2]);\n\n newBoundary.push(sharedIndices.length);\n\n sharedIndices.push(index);\n }\n }\n\n return newBoundary\n}\n\nfunction getNormalOfPositions(positions, normal) {\n\n for (let i = 0; i < positions.length; i++) {\n\n let nexti = i + 1;\n if (nexti === positions.length) {\n nexti = 0;\n }\n\n normal[0] += ((positions[i].y - positions[nexti].y) * (positions[i].z + positions[nexti].z));\n normal[1] += ((positions[i].z - positions[nexti].z) * (positions[i].x + positions[nexti].x));\n normal[2] += ((positions[i].x - positions[nexti].x) * (positions[i].y + positions[nexti].y));\n }\n\n return math.normalizeVec3(normal);\n}\n\nfunction to2D(_p, _n, re) {\n\n const p = tempVec3a;\n const n = tempVec3b;\n const x3 = tempVec3c;\n\n p[0] = _p.x;\n p[1] = _p.y;\n p[2] = _p.z;\n\n n[0] = _n.x;\n n[1] = _n.y;\n n[2] = _n.z;\n\n x3[0] = 1.1;\n x3[1] = 1.1;\n x3[2] = 1.1;\n\n const dist = math.lenVec3(math.subVec3(x3, n));\n\n if (dist < 0.01) {\n x3[0] += 1.0;\n x3[1] += 2.0;\n x3[2] += 3.0;\n }\n\n const dot = math.dotVec3(x3, n);\n const tmp2 = math.mulVec3Scalar(n, dot, math.vec3());\n\n x3[0] -= tmp2[0];\n x3[1] -= tmp2[1];\n x3[2] -= tmp2[2];\n\n math.normalizeVec3(x3);\n\n const y3 = math.cross3Vec3(n, x3, math.vec3());\n const x = math.dotVec3(p, x3);\n const y = math.dotVec3(p, y3);\n\n re[0] = x;\n re[1] = y;\n}\n\nexport {parseCityJSONIntoXKTModel};","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../constants.js\";\n\n/**\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n */\nfunction parseGLTFIntoXKTModel({\n data,\n baseUri,\n xktModel,\n metaModelData,\n includeTextures = true,\n includeNormals = true,\n getAttachment,\n stats = {},\n log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n parse(data, GLTFLoader, {\n baseUri\n }).then((gltfData) => {\n\n const ctx = {\n gltfData,\n nodesHaveNames: false, // determined in testIfNodesHaveNames()\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n error: function (msg) {\n console.error(msg);\n },\n xktModel,\n includeNormals: (includeNormals !== false),\n includeTextures: (includeTextures !== false),\n geometryCreated: {},\n nextId: 0,\n stats\n };\n\n ctx.log(\"Using parser: parseGLTFIntoXKTModel\");\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n ctx.log(`Parsing textures: ${ctx.includeTextures ? \"enabled\" : \"disabled\"}`);\n\n if (ctx.includeTextures) {\n parseTextures(ctx);\n }\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(`[parseGLTFIntoXKTModel] ${errMsg}`);\n });\n });\n}\n\nfunction parseTextures(ctx) {\n const gltfData = ctx.gltfData;\n const textures = gltfData.textures;\n if (textures) {\n for (let i = 0, len = textures.length; i < len; i++) {\n parseTexture(ctx, textures[i]);\n ctx.stats.numTextures++;\n }\n }\n}\n\nfunction parseTexture(ctx, texture) {\n if (!texture.source || !texture.source.image) {\n return;\n }\n const textureId = `texture-${ctx.nextId++}`;\n\n let minFilter = NearestMipMapLinearFilter;\n switch (texture.sampler.minFilter) {\n case 9728:\n minFilter = NearestFilter;\n break;\n case 9729:\n minFilter = LinearFilter;\n break;\n case 9984:\n minFilter = NearestMipMapNearestFilter;\n break;\n case 9985:\n minFilter = LinearMipMapNearestFilter;\n break;\n case 9986:\n minFilter = NearestMipMapLinearFilter;\n break;\n case 9987:\n minFilter = LinearMipMapLinearFilter;\n break;\n }\n\n let magFilter = LinearFilter;\n switch (texture.sampler.magFilter) {\n case 9728:\n magFilter = NearestFilter;\n break;\n case 9729:\n magFilter = LinearFilter;\n break;\n }\n\n let wrapS = RepeatWrapping;\n switch (texture.sampler.wrapS) {\n case 33071:\n wrapS = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapS = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapS = RepeatWrapping;\n break;\n }\n\n let wrapT = RepeatWrapping;\n switch (texture.sampler.wrapT) {\n case 33071:\n wrapT = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapT = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapT = RepeatWrapping;\n break;\n }\n\n let wrapR = RepeatWrapping;\n switch (texture.sampler.wrapR) {\n case 33071:\n wrapR = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapR = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapR = RepeatWrapping;\n break;\n }\n\n ctx.xktModel.createTexture({\n textureId: textureId,\n imageData: texture.source.image,\n mediaType: texture.source.mediaType,\n compressed: true,\n width: texture.source.image.width,\n height: texture.source.image.height,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: !!texture.flipY,\n // encoding: \"sRGB\"\n });\n texture._textureId = textureId;\n}\n\nfunction parseMaterials(ctx) {\n const gltfData = ctx.gltfData;\n const materials = gltfData.materials;\n if (materials) {\n for (let i = 0, len = materials.length; i < len; i++) {\n const material = materials[i];\n material._textureSetId = ctx.includeTextures ? parseTextureSet(ctx, material) : null;\n material._attributes = parseMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction parseTextureSet(ctx, material) {\n const textureSetCfg = {};\n if (material.normalTexture) {\n textureSetCfg.normalTextureId = material.normalTexture.texture._textureId;\n }\n if (material.occlusionTexture) {\n textureSetCfg.occlusionTextureId = material.occlusionTexture.texture._textureId;\n }\n if (material.emissiveTexture) {\n textureSetCfg.emissiveTextureId = material.emissiveTexture.texture._textureId;\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (material.pbrMetallicRoughness) {\n const pbrMetallicRoughness = material.pbrMetallicRoughness;\n const baseColorTexture = pbrMetallicRoughness.baseColorTexture || pbrMetallicRoughness.colorTexture;\n if (baseColorTexture) {\n if (baseColorTexture.texture) {\n textureSetCfg.colorTextureId = baseColorTexture.texture._textureId;\n } else {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[baseColorTexture.index]._textureId;\n }\n }\n if (metallicPBR.metallicRoughnessTexture) {\n textureSetCfg.metallicRoughnessTextureId = metallicPBR.metallicRoughnessTexture.texture._textureId;\n }\n }\n const extensions = material.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const specularTexture = specularPBR.specularTexture;\n if (specularTexture !== null && specularTexture !== undefined) {\n // textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n const specularColorTexture = specularPBR.specularColorTexture;\n if (specularColorTexture !== null && specularColorTexture !== undefined) {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n }\n }\n if (textureSetCfg.normalTextureId !== undefined ||\n textureSetCfg.occlusionTextureId !== undefined ||\n textureSetCfg.emissiveTextureId !== undefined ||\n textureSetCfg.colorTextureId !== undefined ||\n textureSetCfg.metallicRoughnessTextureId !== undefined) {\n textureSetCfg.textureSetId = `textureSet-${ctx.nextId++};`\n ctx.xktModel.createTextureSet(textureSetCfg);\n ctx.stats.numTextureSets++;\n return textureSetCfg.textureSetId;\n }\n return null;\n}\n\nfunction parseMaterialAttributes(ctx, material) { // Substitute RGBA for material, to use fast flat shading instead\n const extensions = material.extensions;\n const materialAttributes = {\n color: new Float32Array([1, 1, 1, 1]),\n opacity: 1,\n metallic: 0,\n roughness: 1\n };\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n materialAttributes.color.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n materialAttributes.color.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n materialAttributes.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n materialAttributes.opacity = transparent;\n }\n }\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n materialAttributes.color[0] = baseColorFactor[0];\n materialAttributes.color[1] = baseColorFactor[1];\n materialAttributes.color[2] = baseColorFactor[2];\n materialAttributes.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n materialAttributes.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n materialAttributes.roughness = roughnessFactor;\n }\n }\n return materialAttributes;\n}\n\nfunction parseDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n ctx.error(\"glTF has no default scene\");\n return;\n }\n parseScene(ctx, scene);\n}\n\nfunction parseScene(ctx, scene) {\n const nodes = scene.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n countMeshUsage(ctx, node);\n }\n for (let i = 0, len = nodes.length; i < len && !ctx.nodesHaveNames; i++) {\n const node = nodes[i];\n if (testIfNodesHaveNames(node)) {\n ctx.nodesHaveNames = true;\n }\n }\n if (!ctx.nodesHaveNames) {\n ctx.log(`Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect`);\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithoutNames(ctx, node, 0, null);\n }\n } else {\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithNames(ctx, node, 0, null);\n }\n }\n}\n\nfunction countMeshUsage(ctx, node, level=0) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (mesh) {\n mesh.instances = mesh.instances ? mesh.instances + 1 : 1;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (!childNode) {\n ctx.error(\"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode, level+1);\n }\n }\n}\n\nfunction testIfNodesHaveNames(node, level=0) {\n if (!node) {\n return;\n }\n if (node.name) {\n return true;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (testIfNodesHaveNames(childNode, level+1)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n */\nconst parseNodesWithoutNames = (function () {\n\n const meshIds = [];\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithoutNames(ctx, childNode, depth + 1, matrix);\n }\n }\n if (depth === 0) {\n let entityId = \"entity-\" + ctx.nextId++;\n if (meshIds && meshIds.length > 0) {\n ctx.log(\"Creating XKTEntity with default ID: \" + entityId);\n ctx.xktModel.createEntity({\n entityId,\n meshIds\n });\n meshIds.length = 0;\n }\n ctx.stats.numObjects++;\n }\n }\n})();\n\n\n/**\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n */\nconst parseNodesWithNames = (function () {\n\n const objectIdStack = [];\n const meshIdsStack = [];\n let meshIds = null;\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.name) {\n meshIds = [];\n let xktEntityId = node.name;\n if (!!xktEntityId && ctx.xktModel.entities[xktEntityId]) {\n ctx.log(`Warning: Two or more glTF nodes found with same 'name' attribute: '${xktEntityId} - will randomly-generating an object ID in XKT`);\n }\n while (!xktEntityId || ctx.xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n objectIdStack.push(xktEntityId);\n meshIdsStack.push(meshIds);\n }\n if (meshIds && node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithNames(ctx, childNode, depth + 1, matrix);\n }\n }\n const nodeName = node.name;\n if ((nodeName !== undefined && nodeName !== null) || depth === 0) {\n let xktEntityId = objectIdStack.pop();\n if (!xktEntityId) { // For when there are no nodes with names\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n let entityMeshIds = meshIdsStack.pop();\n if (meshIds && meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: entityMeshIds\n });\n }\n ctx.stats.numObjects++;\n meshIds = meshIdsStack.length > 0 ? meshIdsStack[meshIdsStack.length - 1] : null;\n }\n }\n})();\n\n/**\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n */\nfunction parseNodeMatrix(node, matrix) {\n if (!node) {\n return;\n }\n let localMatrix;\n if (node.matrix) {\n localMatrix = node.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.translation) {\n localMatrix = math.translationMat4v(node.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.rotation) {\n localMatrix = math.quaternionToMat4(node.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.scale) {\n localMatrix = math.scalingMat4v(node.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n return matrix;\n}\n\n/**\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n */\nfunction parseNodeMesh(node, ctx, matrix, meshIds) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (!mesh) {\n return;\n }\n const numPrimitives = mesh.primitives.length;\n if (numPrimitives > 0) {\n for (let i = 0; i < numPrimitives; i++) {\n try {\n const primitive = mesh.primitives[i];\n if (!primitive._xktGeometryId) {\n const xktGeometryId = \"geometry-\" + ctx.nextId++;\n const geometryCfg = {\n geometryId: xktGeometryId\n };\n switch (primitive.mode) {\n case 0: // POINTS\n geometryCfg.primitiveType = \"points\";\n break;\n case 1: // LINES\n geometryCfg.primitiveType = \"lines\";\n break;\n case 2: // LINE_LOOP\n geometryCfg.primitiveType = \"line-loop\";\n break;\n case 3: // LINE_STRIP\n geometryCfg.primitiveType = \"line-strip\";\n break;\n case 4: // TRIANGLES\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n geometryCfg.primitiveType = \"triangle-strip\";\n break;\n case 6: // TRIANGLE_FAN\n geometryCfg.primitiveType = \"triangle-fan\";\n break;\n default:\n geometryCfg.primitiveType = \"triangles\";\n }\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n geometryCfg.positions = primitive.attributes.POSITION.value;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n if (ctx.includeNormals) {\n if (primitive.attributes.NORMAL) {\n geometryCfg.normals = primitive.attributes.NORMAL.value;\n ctx.stats.numNormals += geometryCfg.normals.length / 3;\n }\n }\n if (primitive.attributes.COLOR_0) {\n geometryCfg.colorsCompressed = primitive.attributes.COLOR_0.value;\n }\n if (ctx.includeTextures) {\n if (primitive.attributes.TEXCOORD_0) {\n geometryCfg.uvs = primitive.attributes.TEXCOORD_0.value;\n ctx.stats.numUVs += geometryCfg.uvs.length / 2;\n }\n }\n if (primitive.indices) {\n geometryCfg.indices = primitive.indices.value;\n if (primitive.mode === 4) {\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n }\n ctx.xktModel.createGeometry(geometryCfg);\n primitive._xktGeometryId = xktGeometryId;\n ctx.stats.numGeometries++;\n }\n const xktMeshId = ctx.nextId++;\n const meshCfg = {\n meshId: xktMeshId,\n geometryId: primitive._xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4()\n };\n const material = primitive.material;\n if (material) {\n meshCfg.textureSetId = material._textureSetId;\n meshCfg.color = material._attributes.color;\n meshCfg.opacity = material._attributes.opacity;\n meshCfg.metallic = material._attributes.metallic;\n meshCfg.roughness = material._attributes.roughness;\n } else {\n meshCfg.color = [1.0, 1.0, 1.0];\n meshCfg.opacity = 1.0;\n }\n ctx.xktModel.createMesh(meshCfg);\n meshIds.push(xktMeshId);\n } catch (e) {\n console.log(e);\n }\n }\n }\n}\n\nexport {parseGLTFIntoXKTModel};","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nconst atob2 = (typeof atob !== 'undefined') ? atob : a => Buffer.from(a, 'base64').toString('binary');\n\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nconst WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n};\n\n/**\n * @desc Parses glTF JSON into an {@link XKTModel}, without ````.glb```` and textures.\n *\n * * Lightweight JSON-based glTF parser which ignores textures\n * * For texture and ````.glb```` support, see {@link parseGLTFIntoXKTModel}\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a glTF model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/gltf/duplex/scene.gltf\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {Object} params.data The glTF JSON.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeNormals=false] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded representation of the glTF.\n * @param {Boolean} [params.reuseGeometries=true] When true, the parser will enable geometry reuse within the XKTModel. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be if we have 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {function} [params.getAttachment] Callback through which to fetch attachments, if the glTF has them.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise}\n */\nfunction parseGLTFJSONIntoXKTModel({\n data,\n xktModel,\n metaModelData,\n includeNormals,\n reuseGeometries,\n getAttachment,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseGLTFJSONIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const ctx = {\n gltf: data,\n metaModelCorrections: metaModelData ? getMetaModelCorrections(metaModelData) : null,\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n xktModel,\n includeNormals,\n createXKTGeometryIds: {},\n nextMeshId: 0,\n reuseGeometries: (reuseGeometries !== false),\n stats\n };\n\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n\n parseBuffers(ctx).then(() => {\n\n parseBufferViews(ctx);\n freeBuffers(ctx);\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction getMetaModelCorrections(metaModelData) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelData.metaObjects || [];\n const metaObjectsMap = {};\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n metaObjectsMap[metaObject.id] = metaObject;\n }\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) {\n let rootMetaObject = metaObjectParent;\n while (rootMetaObject.parent && metaObjectsMap[rootMetaObject.parent].type === rootMetaObject.type) {\n rootMetaObject = metaObjectsMap[rootMetaObject.parent];\n }\n const rootStats = eachRootStats[rootMetaObject.id] || (eachRootStats[rootMetaObject.id] = {\n numChildren: 0,\n countChildren: 0\n });\n rootStats.numChildren++;\n eachChildRoot[metaObject.id] = rootMetaObject;\n } else {\n\n }\n }\n }\n const metaModelCorrections = {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n return metaModelCorrections;\n}\n\nfunction parseBuffers(ctx) { // Parses geometry buffers into temporary \"_buffer\" Unit8Array properties on the glTF \"buffer\" elements\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n return Promise.all(buffers.map(buffer => parseBuffer(ctx, buffer)));\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n}\n\nfunction parseBuffer(ctx, bufferInfo) {\n return new Promise(function (resolve, reject) {\n // Allow a shortcut where the glTF buffer is \"enrichened\" with direct\n // access to the data-arrayBuffer, w/out needing to either:\n // - read the file indicated by the \".uri\" component of the buffer\n // - base64-decode the encoded data in the \".uri\" component\n if (bufferInfo._arrayBuffer) {\n bufferInfo._buffer = bufferInfo._arrayBuffer;\n resolve(bufferInfo);\n return;\n }\n // Otherwise, proceed with \"standard-glTF\" .uri component.\n const uri = bufferInfo.uri;\n if (!uri) {\n reject('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n return;\n }\n parseArrayBuffer(ctx, uri).then((arrayBuffer) => {\n bufferInfo._buffer = arrayBuffer;\n resolve(arrayBuffer);\n }, (errMsg) => {\n reject(errMsg);\n })\n });\n}\n\nfunction parseArrayBuffer(ctx, uri) {\n return new Promise(function (resolve, reject) {\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; // Check for data: URI\n const dataUriRegexResult = uri.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n let data = dataUriRegexResult[3];\n data = decodeURIComponent(data);\n if (isBase64) {\n data = atob2(data);\n }\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n resolve(buffer);\n } else { // Uri is a path to a file\n ctx.getAttachment(uri).then(\n (arrayBuffer) => {\n resolve(arrayBuffer);\n },\n (errMsg) => {\n reject(errMsg);\n });\n }\n });\n}\n\nfunction parseBufferViews(ctx) { // Parses our temporary \"_buffer\" properties into \"_buffer\" properties on glTF \"bufferView\" elements\n const bufferViewsInfo = ctx.gltf.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n parseBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n}\n\nfunction parseBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.gltf.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n}\n\nfunction freeBuffers(ctx) { // Deletes the \"_buffer\" properties from the glTF \"buffer\" elements, to save memory\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n}\n\nfunction parseMaterials(ctx) {\n const materialsInfo = ctx.gltf.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = parseMaterial(ctx, materialInfo);\n materialInfo._materialData = material;\n }\n }\n}\n\nfunction parseMaterial(ctx, materialInfo) { // Attempts to extract an RGBA color for a glTF material\n const material = {\n color: new Float32Array([1, 1, 1]),\n opacity: 1.0,\n metallic: 0,\n roughness: 1\n };\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n material.color[0] = diffuseFactor[0];\n material.color[1] = diffuseFactor[1];\n material.color[2] = diffuseFactor[2];\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n material.color[0] = diffuse[0];\n material.color[1] = diffuse[1];\n material.color[2] = diffuse[2];\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n material.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n material.opacity = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n material.color[0] = baseColorFactor[0];\n material.color[1] = baseColorFactor[1];\n material.color[2] = baseColorFactor[2];\n material.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n material.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n material.roughness = roughnessFactor;\n }\n }\n return material;\n}\n\nfunction parseDefaultScene(ctx) {\n const scene = ctx.gltf.scene || 0;\n const defaultSceneInfo = ctx.gltf.scenes[scene];\n if (!defaultSceneInfo) {\n throw new Error(\"glTF has no default scene\");\n }\n parseScene(ctx, defaultSceneInfo);\n}\n\n\nfunction parseScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = ctx.gltf.nodes[nodes[i]];\n if (glTFNode) {\n parseNode(ctx, glTFNode, 0, null);\n }\n }\n}\n\nlet deferredMeshIds = [];\n\nfunction parseNode(ctx, glTFNode, depth, matrix) {\n\n const gltf = ctx.gltf;\n const xktModel = ctx.xktModel;\n\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n const gltfMeshId = glTFNode.mesh;\n\n if (gltfMeshId !== undefined) {\n\n const meshInfo = gltf.meshes[gltfMeshId];\n\n if (meshInfo) {\n\n const numPrimitivesInMesh = meshInfo.primitives.length;\n\n if (numPrimitivesInMesh > 0) {\n\n for (let i = 0; i < numPrimitivesInMesh; i++) {\n\n const primitiveInfo = meshInfo.primitives[i];\n\n const geometryHash = createPrimitiveGeometryHash(primitiveInfo);\n\n let xktGeometryId = ctx.createXKTGeometryIds[geometryHash];\n\n if ((!ctx.reuseGeometries) || !xktGeometryId) {\n\n xktGeometryId = \"geometry-\" + ctx.nextMeshId++\n\n const geometryArrays = {};\n\n parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays);\n\n const colors = geometryArrays.colors;\n\n let colorsCompressed;\n\n if (geometryArrays.colors) {\n colorsCompressed = [];\n for (let j = 0, lenj = colors.length; j < lenj; j += 4) {\n colorsCompressed.push(colors[j + 0]);\n colorsCompressed.push(colors[j + 1]);\n colorsCompressed.push(colors[j + 2]);\n colorsCompressed.push(255);\n }\n }\n\n xktModel.createGeometry({\n geometryId: xktGeometryId,\n primitiveType: geometryArrays.primitive,\n positions: geometryArrays.positions,\n normals: ctx.includeNormals ? geometryArrays.normals : null,\n colorsCompressed: colorsCompressed,\n indices: geometryArrays.indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryArrays.positions ? geometryArrays.positions.length / 3 : 0;\n ctx.stats.numNormals += (ctx.includeNormals && geometryArrays.normals) ? geometryArrays.normals.length / 3 : 0;\n ctx.stats.numTriangles += geometryArrays.indices ? geometryArrays.indices.length / 3 : 0;\n\n ctx.createXKTGeometryIds[geometryHash] = xktGeometryId;\n } else {\n// Geometry reused\n }\n\n const materialIndex = primitiveInfo.material;\n const materialInfo = (materialIndex !== null && materialIndex !== undefined) ? gltf.materials[materialIndex] : null;\n const color = materialInfo ? materialInfo._materialData.color : new Float32Array([1.0, 1.0, 1.0, 1.0]);\n const opacity = materialInfo ? materialInfo._materialData.opacity : 1.0;\n const metallic = materialInfo ? materialInfo._materialData.metallic : 0.0;\n const roughness = materialInfo ? materialInfo._materialData.roughness : 1.0;\n\n const xktMeshId = \"mesh-\" + ctx.nextMeshId++;\n\n xktModel.createMesh({\n meshId: xktMeshId,\n geometryId: xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4(),\n color: color,\n opacity: opacity,\n metallic: metallic,\n roughness: roughness\n });\n\n deferredMeshIds.push(xktMeshId);\n }\n }\n }\n }\n\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childGLTFNode = gltf.nodes[childNodeIdx];\n if (!childGLTFNode) {\n console.warn('Node not found: ' + i);\n continue;\n }\n parseNode(ctx, childGLTFNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n const nodeName = glTFNode.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n if (nodeName === undefined || nodeName === null) {\n ctx.log(`[parseGLTFJSONIntoXKTModel] Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT`);\n }\n let xktEntityId = nodeName; // Fall back on generated ID when `name` not found on glTF scene node(s)\n if (xktEntityId === undefined || xktEntityId === null) {\n if (xktModel.entities[xktEntityId]) {\n ctx.error(\"Two or more glTF nodes found with same 'name' attribute: '\" + nodeName + \"'\");\n }\n while (!xktEntityId || xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n }\n if (ctx.metaModelCorrections) { // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[xktEntityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n xktModel.createEntity({\n entityId: rootMetaObject.id,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[xktEntityId];\n if (metaObject) {\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n } else { // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n}\n\nfunction createPrimitiveGeometryHash(primitiveInfo) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return \"empty\";\n }\n const mode = primitiveInfo.mode;\n const material = primitiveInfo.material;\n const indices = primitiveInfo.indices;\n const positions = primitiveInfo.attributes.POSITION;\n const normals = primitiveInfo.attributes.NORMAL;\n const colors = primitiveInfo.attributes.COLOR_0;\n const uv = primitiveInfo.attributes.TEXCOORD_0;\n return [\n mode,\n // material,\n (indices !== null && indices !== undefined) ? indices : \"-\",\n (positions !== null && positions !== undefined) ? positions : \"-\",\n (normals !== null && normals !== undefined) ? normals : \"-\",\n (colors !== null && colors !== undefined) ? colors : \"-\",\n (uv !== null && uv !== undefined) ? uv : \"-\"\n ].join(\";\");\n}\n\nfunction parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n switch (primitiveInfo.mode) {\n case 0: // POINTS\n geometryArrays.primitive = \"points\";\n break;\n case 1: // LINES\n geometryArrays.primitive = \"lines\";\n break;\n case 2: // LINE_LOOP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 3: // LINE_STRIP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 4: // TRIANGLES\n geometryArrays.primitive = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n // TODO: convert\n console.log(\"TRIANGLE_STRIP\");\n geometryArrays.primitive = \"triangles\";\n break;\n case 6: // TRIANGLE_FAN\n // TODO: convert\n console.log(\"TRIANGLE_FAN\");\n geometryArrays.primitive = \"triangles\";\n break;\n default:\n geometryArrays.primitive = \"triangles\";\n }\n const accessors = ctx.gltf.accessors;\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = accessors[indicesIndex];\n geometryArrays.indices = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = accessors[positionsIndex];\n geometryArrays.positions = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = accessors[normalsIndex];\n geometryArrays.normals = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const colorsIndex = attributes.COLOR_0;\n if (colorsIndex !== null && colorsIndex !== undefined) {\n const accessorInfo = accessors[colorsIndex];\n geometryArrays.colors = parseAccessorTypedArray(ctx, accessorInfo);\n }\n}\n\nfunction parseAccessorTypedArray(ctx, accessorInfo) {\n const bufferView = ctx.gltf.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n throw new Error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferView._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n}\n\nexport {parseGLTFJSONIntoXKTModel};\n","/**\n * @desc Parses IFC STEP file data into an {@link XKTModel}.\n *\n * This function uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse the IFC, which relies on a\n * WASM file to do the parsing.\n *\n * Depending on how we use this function, we may need to provide it with a path to the directory where that WASM file is stored.\n *\n * This function is tested with web-ifc version 0.0.34.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an IFC model into it.\n *\n * ````javascript\n * import {XKTModel, parseIFCIntoXKTModel, writeXKTModelToArrayBuffer} from \"xeokit-convert.es.js\";\n *\n * import * as WebIFC from \"web-ifc-api.js\";\n *\n * utils.loadArraybuffer(\"rac_advanced_sample_project.ifc\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseIFCIntoXKTModel({\n * WebIFC,\n * data,\n * xktModel,\n * wasmPath: \"../dist/\",\n * autoNormals: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {ArrayBuffer} [params.data] IFC file data.\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Boolean} [params.autoNormals=true] When true, the parser will ignore the IFC geometry normals, and the IFC\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the IFC model. This is ````true```` by default, because IFC models tend to look acceptable with flat-shading,\n * and we always want to minimize IFC model size wherever possible.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {String} params.wasmPath Path to ````web-ifc.wasm````, required by this function.\n * @param {Object} [params.stats={}] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when IFC has been parsed.\n */\nfunction parseIFCIntoXKTModel({\n WebIFC,\n data,\n xktModel,\n autoNormals = true,\n includeTypes,\n excludeTypes,\n wasmPath,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseIFCIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n if (!wasmPath) {\n reject(\"Argument expected: wasmPath\");\n return;\n }\n\n const ifcAPI = new WebIFC.IfcAPI();\n\n if (wasmPath) {\n ifcAPI.SetWasmPath(wasmPath);\n }\n\n ifcAPI.Init().then(() => {\n\n const dataArray = new Uint8Array(data);\n\n const modelID = ifcAPI.OpenModel(dataArray);\n\n stats.sourceFormat = \"IFC\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n\n const ctx = {\n WebIFC,\n modelID,\n ifcAPI,\n xktModel,\n autoNormals,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n if (includeTypes) {\n ctx.includeTypes = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n ctx.includeTypes[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n ctx.excludeTypes = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n ctx.excludeTypes[excludeTypes[i]] = true;\n }\n }\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(modelID, WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(modelID, ifcProjectId);\n\n ctx.xktModel.schema = \"\";\n ctx.xktModel.modelId = \"\" + modelID;\n ctx.xktModel.projectId = \"\" + ifcProjectId;\n\n parseMetadata(ctx);\n parseGeometry(ctx);\n parsePropertySets(ctx);\n\n resolve();\n\n }).catch((e) => {\n\n reject(e);\n })\n });\n}\n\nfunction parsePropertySets(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCRELDEFINESBYPROPERTIES);\n\n for (let i = 0; i < lines.size(); i++) {\n\n let relID = lines.get(i);\n\n let rel = ctx.ifcAPI.GetLine(ctx.modelID, relID, true);\n\n if (rel) {\n\n const relatingPropertyDefinition = rel.RelatingPropertyDefinition;\n if (!relatingPropertyDefinition) {\n continue;\n }\n\n const propertySetId = relatingPropertyDefinition.GlobalId.value;\n\n const relatedObjects = rel.RelatedObjects;\n if (relatedObjects) {\n for (let i = 0, len = relatedObjects.length; i < len; i++) {\n const relatedObject = relatedObjects[i];\n const metaObjectId = relatedObject.GlobalId.value;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n if (metaObject) {\n if (!metaObject.propertySetIds) {\n metaObject.propertySetIds = [];\n }\n metaObject.propertySetIds.push(propertySetId);\n }\n }\n }\n\n const props = relatingPropertyDefinition.HasProperties;\n if (props && props.length > 0) {\n const propertySetType = \"Default\";\n const propertySetName = relatingPropertyDefinition.Name.value;\n const properties = [];\n for (let i = 0, len = props.length; i < len; i++) {\n const prop = props[i];\n const name = prop.Name;\n const nominalValue = prop.NominalValue;\n if (name && nominalValue) {\n const property = {\n name: name.value,\n type: nominalValue.type,\n value: nominalValue.value,\n valueType: nominalValue.valueType\n };\n if (prop.Description) {\n property.description = prop.Description.value;\n } else if (nominalValue.description) {\n property.description = nominalValue.description;\n }\n properties.push(property);\n }\n }\n ctx.xktModel.createPropertySet({propertySetId, propertySetType, propertySetName, properties});\n ctx.stats.numPropertySets++;\n }\n }\n }\n}\n\nfunction parseMetadata(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(ctx.modelID, ifcProjectId);\n\n parseSpatialChildren(ctx, ifcProject);\n}\n\nfunction parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectType = ifcElement.__proto__.constructor.name;\n\n if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {\n return;\n }\n\n if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {\n return;\n }\n\n createMetaObject(ctx, ifcElement, parentMetaObjectId);\n\n const metaObjectId = ifcElement.GlobalId.value;\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingObject',\n 'RelatedObjects',\n ctx.WebIFC.IFCRELAGGREGATES,\n metaObjectId);\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingStructure',\n 'RelatedElements',\n ctx.WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n metaObjectId);\n}\n\nfunction createMetaObject(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectId = ifcElement.GlobalId.value;\n const propertySetIds = null;\n const metaObjectType = ifcElement.__proto__.constructor.name;\n const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== \"\") ? ifcElement.Name.value : metaObjectType;\n\n ctx.xktModel.createMetaObject({metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId});\n ctx.stats.numMetaObjects++;\n}\n\nfunction parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, type);\n\n for (let i = 0; i < lines.size(); i++) {\n\n const relID = lines.get(i);\n const rel = ctx.ifcAPI.GetLine(ctx.modelID, relID);\n const relatedItems = rel[relation];\n\n let foundElement = false;\n\n if (Array.isArray(relatedItems)) {\n const values = relatedItems.map((item) => item.value);\n foundElement = values.includes(id);\n\n } else {\n foundElement = (relatedItems.value === id);\n }\n\n if (foundElement) {\n\n const element = rel[related];\n\n if (!Array.isArray(element)) {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n\n } else {\n\n element.forEach((element2) => {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element2.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n });\n }\n }\n }\n}\n\nfunction parseGeometry(ctx) {\n\n // Parses the geometry and materials in the IFC, creates\n // XKTEntity, XKTMesh and XKTGeometry components within the XKTModel.\n\n const flatMeshes = ctx.ifcAPI.LoadAllGeometry(ctx.modelID);\n\n for (let i = 0, len = flatMeshes.size(); i < len; i++) {\n const flatMesh = flatMeshes.get(i);\n createObject(ctx, flatMesh);\n }\n\n // LoadAllGeometry does not return IFCSpace meshes\n // here is a workaround\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCSPACE);\n for (let j = 0, len = lines.size(); j < len; j++) {\n const ifcSpaceId = lines.get(j);\n const flatMesh = ctx.ifcAPI.GetFlatMesh(ctx.modelID, ifcSpaceId);\n createObject(ctx, flatMesh);\n }\n}\n\nfunction createObject(ctx, flatMesh) {\n\n const flatMeshExpressID = flatMesh.expressID;\n const placedGeometries = flatMesh.geometries;\n\n const meshIds = [];\n\n const properties = ctx.ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);\n const entityId = properties.GlobalId.value;\n\n const metaObjectId = entityId;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n\n if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.metaObjectType]))) {\n return;\n }\n\n if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.metaObjectType])) {\n console.log(\"excluding: \" + metaObjectId)\n return;\n }\n\n for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {\n\n const placedGeometry = placedGeometries.get(j);\n const geometryId = \"\" + placedGeometry.geometryExpressID;\n\n if (!ctx.xktModel.geometries[geometryId]) {\n\n const geometry = ctx.ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);\n const vertexData = ctx.ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());\n const indices = ctx.ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());\n\n // De-interleave vertex arrays\n\n const positions = [];\n const normals = [];\n\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n positions.push(vertexData[k * 6 + 0]);\n positions.push(vertexData[k * 6 + 1]);\n positions.push(vertexData[k * 6 + 2]);\n }\n\n if (!ctx.autoNormals) {\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n normals.push(vertexData[k * 6 + 3]);\n normals.push(vertexData[k * 6 + 4]);\n normals.push(vertexData[k * 6 + 5]);\n }\n }\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: ctx.autoNormals ? null : normals,\n indices: indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += (positions.length / 3);\n ctx.stats.numTriangles += (indices.length / 3);\n }\n\n const meshId = (\"mesh\" + ctx.nextId++);\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n matrix: placedGeometry.flatTransformation,\n color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],\n opacity: placedGeometry.color.w\n });\n\n meshIds.push(meshId);\n }\n\n if (meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: meshIds\n });\n ctx.stats.numObjects++;\n }\n}\n\nexport {parseIFCIntoXKTModel};\n","import {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las';\n\nimport {math} from \"../lib/math.js\";\n\nconst MAX_VERTICES = 500000; // TODO: Rough estimate\n\n/**\n * @desc Parses LAS and LAZ point cloud data into an {@link XKTModel}.\n *\n * This parser handles both the LASER file format (LAS) and its compressed version (LAZ),\n * a public format for the interchange of 3-dimensional point cloud data data, developed\n * for LIDAR mapping purposes.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/laz/autzen.laz\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parseLASIntoXKTModel({\n * data,\n * xktModel,\n * rotateX: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data LAS/LAZ file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {boolean} [params.center=false] Set true to center the LAS point positions to [0,0,0]. This is applied before the transformation matrix, if specified.\n * @param {Boolean} [params.transform] 4x4 transformation matrix to transform point positions. Use this to rotate, translate and scale them if neccessary.\n * @param {Number|String} [params.colorDepth=8] Whether colors encoded using 8 or 16 bits. Can be set to 'auto'. LAS specification recommends 16 bits.\n * @param {Boolean} [params.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [params.skip=1] Read one from every n points.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when LAS has been parsed.\n */\nfunction parseLASIntoXKTModel({\n data,\n xktModel,\n center = false,\n transform = null,\n colorDepth = \"auto\",\n fp64 = false,\n skip = 1,\n stats,\n log = () => {\n }\n }) {\n\n if (log) {\n log(\"Using parser: parseLASIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n log(\"Converting LAZ/LAS\");\n\n log(`center: ${center}`);\n if (transform) {\n log(`transform: [${transform}]`);\n }\n log(`colorDepth: ${colorDepth}`);\n log(`fp64: ${fp64}`);\n log(`skip: ${skip}`);\n\n parse(data, LASLoader, {\n las: {\n colorDepth,\n fp64\n }\n }).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n log(\"No positions found in file (expected for all LAS point formats)\");\n return;\n }\n\n let readAttributes = {};\n\n switch (pointsFormatId) {\n case 0:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 0)\");\n return;\n }\n\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 1)\");\n return;\n }\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 2)\");\n return;\n }\n\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 3)\");\n return;\n }\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n const pointsChunks = chunkArray(readPositions(readAttributes.positions), MAX_VERTICES * 3);\n const colorsChunks = chunkArray(readAttributes.colors, MAX_VERTICES * 4);\n\n const meshIds = [];\n\n for (let j = 0, lenj = pointsChunks.length; j < lenj; j++) {\n\n const geometryId = `geometry-${j}`;\n const meshId = `mesh-${j}`;\n\n meshIds.push(meshId);\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"points\",\n positions: pointsChunks[j],\n colorsCompressed: colorsChunks[j]\n });\n\n xktModel.createMesh({\n meshId,\n geometryId\n });\n }\n\n const entityId = math.createUUID();\n\n xktModel.createEntity({\n entityId,\n meshIds\n });\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"PointCloud\",\n metaObjectName: \"PointCloud (LAZ)\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n if (stats) {\n stats.sourceFormat = \"LAS\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = readAttributes.positions.length / 3;\n }\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n\n function readPositions(positionsValue) {\n if (positionsValue) {\n if (center) {\n const centerPos = math.vec3();\n const numPoints = positionsValue.length;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n centerPos[0] += positionsValue[i + 0];\n centerPos[1] += positionsValue[i + 1];\n centerPos[2] += positionsValue[i + 2];\n }\n centerPos[0] /= numPoints;\n centerPos[1] /= numPoints;\n centerPos[2] /= numPoints;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n positionsValue[i + 0] -= centerPos[0];\n positionsValue[i + 1] -= centerPos[1];\n positionsValue[i + 2] -= centerPos[2];\n }\n }\n if (transform) {\n const mat = math.mat4(transform);\n const pos = math.vec3();\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n pos[0] = positionsValue[i + 0];\n pos[1] = positionsValue[i + 1];\n pos[2] = positionsValue[i + 2];\n math.transformPoint3(mat, pos, pos);\n positionsValue[i + 0] = pos[0];\n positionsValue[i + 1] = pos[1];\n positionsValue[i + 2] = pos[2];\n }\n }\n }\n return positionsValue;\n }\n\n function readColorsAndIntensities(attributesPosition, attributesColor, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n=0,len = intensities.length; i < len; i++, k += colorSize, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = colors[k + 0];\n colorsCompressed[m++] = colors[k + 1];\n colorsCompressed[m++] = colors[k + 2];\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function readIntensities(attributesPosition, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, len = intensities.length; i < len; i++, k += 3, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function chunkArray(array, chunkSize) {\n if (chunkSize >= array.length) {\n return [array]; // One chunk\n }\n let result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n }\n\n}\n\nexport {parseLASIntoXKTModel};","/**\n * @desc Parses JSON metamodel into an {@link XKTModel}.\n *\n * @param {Object} params Parsing parameters.\n * @param {JSON} params.metaModelData Metamodel data.\n * @param {String[]} [params.excludeTypes] Types to exclude from parsing.\n * @param {String[]} [params.includeTypes] Types to include in parsing.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when JSON has been parsed.\n */\nfunction parseMetaModelIntoXKTModel({metaModelData, xktModel, includeTypes, excludeTypes, log}) {\n\n if (log) {\n log(\"Using parser: parseMetaModelIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n const metaObjects = metaModelData.metaObjects || [];\n const propertySets = metaModelData.propertySets || [];\n\n xktModel.modelId = metaModelData.revisionId || \"\"; // HACK\n xktModel.projectId = metaModelData.projectId || \"\";\n xktModel.revisionId = metaModelData.revisionId || \"\";\n xktModel.author = metaModelData.author || \"\";\n xktModel.createdAt = metaModelData.createdAt || \"\";\n xktModel.creatingApplication = metaModelData.creatingApplication || \"\";\n xktModel.schema = metaModelData.schema || \"\";\n\n for (let i = 0, len = propertySets.length; i < len; i++) {\n\n const propertySet = propertySets[i];\n\n xktModel.createPropertySet({\n propertySetId: propertySet.id,\n propertySetName: propertySet.name,\n propertySetType: propertySet.type,\n properties: propertySet.properties\n });\n }\n\n let includeTypesMap;\n if (includeTypes) {\n includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n let excludeTypesMap;\n if (excludeTypes) {\n excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n const metaObjectsMap = {};\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const newObject = metaObjects[i];\n metaObjectsMap[newObject.id] = newObject;\n }\n\n let countMetaObjects = 0;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n\n const metaObject = metaObjects[i];\n const type = metaObject.type;\n\n if (excludeTypesMap && excludeTypesMap[type]) {\n continue;\n }\n\n if (includeTypesMap && !includeTypesMap[type]) {\n continue;\n }\n\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) { // Don't create redundant sub-objects\n continue\n }\n }\n\n const propertySetIds = [];\n if (metaObject.propertySetIds) {\n for (let j = 0, lenj = metaObject.propertySetIds.length; j < lenj; j++) {\n const propertySetId = metaObject.propertySetIds[j];\n if (propertySetId !== undefined && propertySetId !== null && propertySetId !== \"\") {\n propertySetIds.push(propertySetId);\n }\n }\n }\n if (metaObject.propertySetId !== undefined && metaObject.propertySetId !== null && metaObject.propertySetId !== \"\") {\n propertySetIds.push(metaObject.propertySetId);\n }\n\n xktModel.createMetaObject({\n metaObjectId: metaObject.id,\n metaObjectType: metaObject.type,\n metaObjectName: metaObject.name,\n parentMetaObjectId: metaObject.parent,\n propertySetIds: propertySetIds.length > 0 ? propertySetIds : null\n });\n\n countMetaObjects++;\n }\n\n if (log) {\n log(\"Converted meta objects: \" + countMetaObjects);\n }\n\n resolve();\n });\n}\n\nexport {parseMetaModelIntoXKTModel};\n","/**\n * @desc Parses PCD point cloud data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"\"./models/pcd/ism_test_cat.pcd\"\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parsePCDIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PCD file data.\n * @param {Boolean} [params.littleEndian=true] Whether PCD binary data is Little-Endian or Big-Endian.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PCD has been parsed.\n */\nfunction parsePCDIntoXKTModel({data, xktModel, littleEndian = true, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePCDIntoXKTModel\");\n }\n\n return new Promise(function(resolve, reject) {\n\n const textData = decodeText(new Uint8Array(data));\n\n const header = parseHeader(textData);\n\n const positions = [];\n const normals = [];\n const colors = [];\n\n if (header.data === 'ascii') {\n\n const offset = header.offset;\n const data = textData.substr(header.headerLen);\n const lines = data.split('\\n');\n\n for (let i = 0, l = lines.length; i < l; i++) {\n\n if (lines[i] === '') {\n continue;\n }\n\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n positions.push(parseFloat(line[offset.x]));\n positions.push(parseFloat(line[offset.y]));\n positions.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const rgb = parseFloat(line[offset.rgb]);\n const r = (rgb >> 16) & 0x0000ff;\n const g = (rgb >> 8) & 0x0000ff;\n const b = (rgb >> 0) & 0x0000ff;\n colors.push(r, g, b, 255);\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n if (header.data === 'binary_compressed') {\n\n const sizes = new Uint32Array(data.slice(header.headerLen, header.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(new Uint8Array(data, header.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = header.offset;\n\n for (let i = 0; i < header.points; i++) {\n\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32((header.points * offset.x) + header.size[0] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.y) + header.size[1] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.z) + header.size[2] * i, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 0));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 1));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 2));\n // colors.push(255);\n } else {\n colors.push(1);\n colors.push(1);\n colors.push(1);\n }\n }\n }\n\n if (header.data === 'binary') {\n\n const dataview = new DataView(data, header.headerLen);\n const offset = header.offset;\n\n for (let i = 0, row = 0; i < header.points; i++, row += header.rowSize) {\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32(row + offset.x, littleEndian));\n positions.push(dataview.getFloat32(row + offset.y, littleEndian));\n positions.push(dataview.getFloat32(row + offset.z, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8(row + offset.rgb + 2));\n colors.push(dataview.getUint8(row + offset.rgb + 1));\n colors.push(dataview.getUint8(row + offset.rgb + 0));\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n xktModel.createGeometry({\n geometryId: \"pointsGeometry\",\n primitiveType: \"points\",\n positions: positions,\n colors: colors && colors.length > 0 ? colors : null\n });\n\n xktModel.createMesh({\n meshId: \"pointsMesh\",\n geometryId: \"pointsGeometry\"\n });\n\n xktModel.createEntity({\n entityId: \"geometries\",\n meshIds: [\"pointsMesh\"]\n });\n\n if (log) {\n log(\"Converted drawable objects: 1\");\n log(\"Converted geometries: 1\");\n log(\"Converted vertices: \" + positions.length / 3);\n }\n\n if (stats) {\n stats.sourceFormat = \"PCD\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = positions.length / 3;\n }\n\n resolve();\n });\n}\n\nfunction parseHeader(data) {\n const header = {};\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n header.data = result2[1];\n header.headerLen = result2[0].length + result1;\n header.str = data.substr(0, header.headerLen);\n header.str = header.str.replace(/\\#.*/gi, ''); // Strip comments\n header.version = /VERSION (.*)/i.exec(header.str); // Parse\n header.fields = /FIELDS (.*)/i.exec(header.str);\n header.size = /SIZE (.*)/i.exec(header.str);\n header.type = /TYPE (.*)/i.exec(header.str);\n header.count = /COUNT (.*)/i.exec(header.str);\n header.width = /WIDTH (.*)/i.exec(header.str);\n header.height = /HEIGHT (.*)/i.exec(header.str);\n header.viewpoint = /VIEWPOINT (.*)/i.exec(header.str);\n header.points = /POINTS (.*)/i.exec(header.str);\n if (header.version !== null) {\n header.version = parseFloat(header.version[1]);\n }\n if (header.fields !== null) {\n header.fields = header.fields[1].split(' ');\n }\n if (header.type !== null) {\n header.type = header.type[1].split(' ');\n }\n if (header.width !== null) {\n header.width = parseInt(header.width[1]);\n }\n if (header.height !== null) {\n header.height = parseInt(header.height[1]);\n }\n if (header.viewpoint !== null) {\n header.viewpoint = header.viewpoint[1];\n }\n if (header.points !== null) {\n header.points = parseInt(header.points[1], 10);\n }\n if (header.points === null) {\n header.points = header.width * header.height;\n }\n if (header.size !== null) {\n header.size = header.size[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n }\n if (header.count !== null) {\n header.count = header.count[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n } else {\n header.count = [];\n for (let i = 0, l = header.fields.length; i < l; i++) {\n header.count.push(1);\n }\n }\n header.offset = {};\n let sizeSum = 0;\n for (let i = 0, l = header.fields.length; i < l; i++) {\n if (header.data === 'ascii') {\n header.offset[header.fields[i]] = i;\n } else {\n header.offset[header.fields[i]] = sizeSum;\n sizeSum += header.size[i] * header.count[i];\n }\n }\n header.rowSize = sizeSum; // For binary only\n return header;\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n}\n\nfunction decompressLZF(inData, outLength) { // https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n do {\n ctrl = inData[inPtr++];\n if (ctrl < (1 << 5)) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n\nexport {parsePCDIntoXKTModel};","import {parse} from '@loaders.gl/core';\nimport {PLYLoader} from '@loaders.gl/ply';\n\n/**\n * @desc Parses PLY file data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a PLY model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/ply/test.ply\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parsePLYIntoXKTModel({data, xktModel}).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PLY file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PLY has been parsed.\n */\nasync function parsePLYIntoXKTModel({data, xktModel, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePLYIntoXKTModel\");\n }\n\n if (!data) {\n throw \"Argument expected: data\";\n }\n\n if (!xktModel) {\n throw \"Argument expected: xktModel\";\n }\n\n let parsedData;\n try {\n parsedData = await parse(data, PLYLoader);\n } catch (e) {\n if (log) {\n log(\"Error: \" + e);\n }\n return;\n }\n\n const attributes = parsedData.attributes;\n const hasColors = !!attributes.COLOR_0;\n\n if (hasColors) {\n const colorsValue = hasColors ? attributes.COLOR_0.value : null;\n const colorsCompressed = [];\n for (let i = 0, len = colorsValue.length; i < len; i += 4) {\n colorsCompressed.push(colorsValue[i]);\n colorsCompressed.push(colorsValue[i + 1]);\n colorsCompressed.push(colorsValue[i + 2]);\n }\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : [],\n colorsCompressed: colorsCompressed\n });\n } else {\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : []\n });\n }\n\n xktModel.createMesh({\n meshId: \"plyMesh\",\n geometryId: \"plyGeometry\",\n color: (!hasColors) ? [1, 1, 1] : null\n });\n\n xktModel.createEntity({\n entityId: \"ply\",\n meshIds: [\"plyMesh\"]\n });\n\n if (stats) {\n stats.sourceFormat = \"PLY\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = attributes.POSITION.value.length / 3;\n }\n}\n\nexport {parsePLYIntoXKTModel};\n","import {faceToVertexNormals} from \"../lib/faceToVertexNormals.js\";\nimport {math} from \"../lib/math.js\";\n\n/**\n * @desc Parses STL file data into an {@link XKTModel}.\n *\n * * Supports binary and ASCII STL formats.\n * * Option to create a separate {@link XKTEntity} for each group of faces that share the same vertex colors.\n * * Option to smooth face-aligned normals loaded from STL.\n * * Option to reduce XKT file size by ignoring STL normals and relying on xeokit to auto-generate them.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an STL model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/stl/binary/spurGear.stl\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseSTLIntoXKTModel({data, xktModel});\n *\n * xktModel.finalize();\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer|String} [params.data] STL file data. Can be binary or string.\n * @param {Boolean} [params.autoNormals=false] When true, the parser will ignore the STL geometry normals, and the STL\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the STL.\n * Overrides ````smoothNormals```` when ````true````. This ignores the normals in the STL, and loads no\n * normals from the STL into the {@link XKTModel}, resulting in the XKT file storing no normals for the STL model. The\n * xeokit-sdk will then automatically generate the normals within its shaders. The disadvantages are that auto-normals\n * may slow rendering down a little bit, and that the normals can only be face-aligned (and thus rendered using flat\n * shading). The advantages, however, are a smaller XKT file size, and the ability to apply certain geometry optimizations\n * during parsing, such as removing duplicated STL vertex positions, that are not possible when normals are loaded\n * for the STL vertices.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented STL normals to vertex normals, for a smooth appearance. Ignored if ````autoNormals```` is ````true````.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] This is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.splitMeshes=true] When true, creates a separate {@link XKTEntity} for each group of faces that share the same vertex colors. Only works with binary STL (ie. when ````data```` is an ArrayBuffer).\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when STL has been parsed.\n */\nasync function parseSTLIntoXKTModel({\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n stats,\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseSTLIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n const rootMetaObjectId = math.createUUID();\n\n const rootMetaObject = xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n const ctx = {\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n rootMetaObject,\n nextId: 0,\n log: (log || function (msg) {\n }),\n stats: {\n numObjects: 0,\n numGeometries: 0,\n numTriangles: 0,\n numVertices: 0\n }\n };\n\n const binData = ensureBinary(data);\n\n if (isBinary(binData)) {\n parseBinary(ctx, binData);\n } else {\n parseASCII(ctx, ensureString(data));\n }\n\n if (stats) {\n stats.sourceFormat = \"STL\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numTriangles = ctx.stats.numTriangles;\n stats.numVertices = ctx.stats.numVertices;\n }\n\n resolve();\n });\n}\n\nfunction isBinary(data) {\n const reader = new DataView(data);\n const numFaces = reader.getUint32(80, true);\n const faceSize = (32 / 8 * 3) + ((32 / 8 * 3) * 3) + (16 / 8);\n const numExpectedBytes = 80 + (32 / 8) + (numFaces * faceSize);\n if (numExpectedBytes === reader.byteLength) {\n return true;\n }\n const solid = [115, 111, 108, 105, 100];\n for (let i = 0; i < 5; i++) {\n if (solid[i] !== reader.getUint8(i, false)) {\n return true;\n }\n }\n return false;\n}\n\nfunction parseBinary(ctx, data) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n let r;\n let g;\n let b;\n let hasColors = false;\n let colors;\n let defaultR;\n let defaultG;\n let defaultB;\n let lastR = null;\n let lastG = null;\n let lastB = null;\n let newMesh = false;\n let alpha;\n for (let index = 0; index < 80 - 10; index++) {\n if ((reader.getUint32(index, false) === 0x434F4C4F /*COLO*/) &&\n (reader.getUint8(index + 4) === 0x52 /*'R'*/) &&\n (reader.getUint8(index + 5) === 0x3D /*'='*/)) {\n hasColors = true;\n colors = [];\n defaultR = reader.getUint8(index + 6) / 255;\n defaultG = reader.getUint8(index + 7) / 255;\n defaultB = reader.getUint8(index + 8) / 255;\n alpha = reader.getUint8(index + 9) / 255;\n }\n }\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = ctx.splitMeshes;\n for (let face = 0; face < faces; face++) {\n let start = dataOffset + face * faceLength;\n let normalX = reader.getFloat32(start, true);\n let normalY = reader.getFloat32(start + 4, true);\n let normalZ = reader.getFloat32(start + 8, true);\n if (hasColors) {\n let packedColor = reader.getUint16(start + 48, true);\n if ((packedColor & 0x8000) === 0) {\n r = (packedColor & 0x1F) / 31;\n g = ((packedColor >> 5) & 0x1F) / 31;\n b = ((packedColor >> 10) & 0x1F) / 31;\n } else {\n r = defaultR;\n g = defaultG;\n b = defaultB;\n }\n if (splitMeshes && r !== lastR || g !== lastG || b !== lastB) {\n if (lastR !== null) {\n newMesh = true;\n }\n lastR = r;\n lastG = g;\n lastB = b;\n }\n }\n for (let i = 1; i <= 3; i++) {\n let vertexstart = start + i * 12;\n positions.push(reader.getFloat32(vertexstart, true));\n positions.push(reader.getFloat32(vertexstart + 4, true));\n positions.push(reader.getFloat32(vertexstart + 8, true));\n if (!ctx.autoNormals) {\n normals.push(normalX, normalY, normalZ);\n }\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(ctx, positions, normals, colors);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(ctx, positions, normals, colors);\n }\n}\n\nfunction parseASCII(ctx, data) {\n const faceRegex = /facet([\\s\\S]*?)endfacet/g;\n let faceCounter = 0;\n const floatRegex = /[\\s]+([+-]?(?:\\d+.\\d+|\\d+.|\\d+|.\\d+)(?:[eE][+-]?\\d+)?)/.source;\n const vertexRegex = new RegExp('vertex' + floatRegex + floatRegex + floatRegex, 'g');\n const normalRegex = new RegExp('normal' + floatRegex + floatRegex + floatRegex, 'g');\n const positions = [];\n const normals = [];\n const colors = null;\n let normalx;\n let normaly;\n let normalz;\n let result;\n let verticesPerFace;\n let normalsPerFace;\n let text;\n while ((result = faceRegex.exec(data)) !== null) {\n verticesPerFace = 0;\n normalsPerFace = 0;\n text = result[0];\n while ((result = normalRegex.exec(text)) !== null) {\n normalx = parseFloat(result[1]);\n normaly = parseFloat(result[2]);\n normalz = parseFloat(result[3]);\n normalsPerFace++;\n }\n while ((result = vertexRegex.exec(text)) !== null) {\n positions.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));\n normals.push(normalx, normaly, normalz);\n verticesPerFace++;\n }\n if (normalsPerFace !== 1) {\n ctx.log(\"Error in normal of face \" + faceCounter);\n return -1;\n }\n if (verticesPerFace !== 3) {\n ctx.log(\"Error in positions of face \" + faceCounter);\n return -1;\n }\n faceCounter++;\n }\n addMesh(ctx, positions, normals, colors);\n}\n\nlet nextGeometryId = 0;\n\nfunction addMesh(ctx, positions, normals, colors) {\n\n const indices = new Int32Array(positions.length / 3);\n for (let ni = 0, len = indices.length; ni < len; ni++) {\n indices[ni] = ni;\n }\n\n normals = normals && normals.length > 0 ? normals : null;\n colors = colors && colors.length > 0 ? colors : null;\n\n if (!ctx.autoNormals && ctx.smoothNormals) {\n faceToVertexNormals(positions, normals, {smoothNormalsAngleThreshold: ctx.smoothNormalsAngleThreshold});\n }\n\n const geometryId = \"\" + nextGeometryId++;\n const meshId = \"\" + nextGeometryId++;\n const entityId = \"\" + nextGeometryId++;\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: (!ctx.autoNormals) ? normals : null,\n colors: colors,\n indices: indices\n });\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: colors ? null : [1, 1, 1],\n metallic: 0.9,\n roughness: 0.1\n });\n\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: [meshId]\n });\n\n ctx.xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"Default\",\n metaObjectName: \"STL Mesh\",\n parentMetaObjectId: ctx.rootMetaObject.metaObjectId\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numObjects++;\n ctx.stats.numVertices += positions.length / 3;\n ctx.stats.numTriangles += indices.length / 3;\n}\n\nfunction ensureString(buffer) {\n if (typeof buffer !== 'string') {\n return decodeText(new Uint8Array(buffer));\n }\n return buffer;\n}\n\nfunction ensureBinary(buffer) {\n if (typeof buffer === 'string') {\n const arrayBuffer = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i++) {\n arrayBuffer[i] = buffer.charCodeAt(i) & 0xff; // implicitly assumes little-endian\n }\n return arrayBuffer.buffer || arrayBuffer;\n } else {\n return buffer;\n }\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]); // Implicitly assumes little-endian.\n }\n return decodeURIComponent(escape(s));\n}\n\nexport {parseSTLIntoXKTModel};\n","module.exports = require(\"@loaders.gl/core\");","module.exports = require(\"@loaders.gl/gltf\");","module.exports = require(\"@loaders.gl/images\");","module.exports = require(\"@loaders.gl/las\");","module.exports = require(\"@loaders.gl/ply\");","module.exports = require(\"@loaders.gl/polyfills\");","module.exports = require(\"@loaders.gl/textures\");","module.exports = require(\"fs\");","module.exports = require(\"pako\");","module.exports = require(\"path\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import '@loaders.gl/polyfills';\nimport {installFilePolyfills} from '@loaders.gl/polyfills';\n\ninstallFilePolyfills();\n\nexport * from \"./src/index.js\";\nexport {convert2xkt} from \"./src/convert2xkt.js\"; // convert2xkt is only bundled for Node.js\n"],"names":["KDNode","_createClass","aabb","_classCallCheck","entities","left","right","math","XKTEntity","entityId","meshes","entityIndex","AABB3","hasReusedGeometries","XKTGeometry","cfg","geometryId","primitiveType","geometryIndex","numInstances","positions","positionsQuantized","Uint16Array","length","normals","normalsOctEncoded","colorsCompressed","uvs","uvsCompressed","indices","edgeIndices","solid","key","get","XKTMesh","meshId","meshIndex","matrix","geometry","color","Float32Array","metallic","undefined","roughness","opacity","textureSet","entity","XKTMetaObject","metaObjectId","propertySetIds","metaObjectType","metaObjectName","parentMetaObjectId","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","protoProps","staticProps","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","geometryCompression","buildEdgeIndices","isTriangleMeshSolid","XKTTile","XKTPropertySet","mergeVertices","XKT_INFO","XKTTexture","XKTTextureSet","encode","load","KTX2BasisWriter","ImageLoader","tempVec4a","vec4","tempVec4b","tempMat4","mat4","tempMat4b","kdTreeDimLength","Float64Array","COLOR_TEXTURE","METALLIC_ROUGHNESS_TEXTURE","NORMALS_TEXTURE","EMISSIVE_TEXTURE","OCCLUSION_TEXTURE","TEXTURE_ENCODING_OPTIONS","useSRGB","qualityLevel","encodeUASTC","mipmaps","XKTModel","modelId","projectId","revisionId","author","createdAt","creatingApplication","schema","xktVersion","edgeThreshold","minTileSize","modelAABB","propertySets","propertySetsList","metaObjects","metaObjectsList","reusedGeometriesDecodeMatrix","geometries","geometriesList","textures","texturesList","textureSets","textureSetsList","meshesList","entitiesList","tilesList","finalized","createPropertySet","params","propertySetId","properties","console","propertySetType","propertySetName","propertySet","createMetaObject","metaObject","_rootMetaObject","createTexture","textureId","imageData","src","fileExt","split","concat","texture","mediaType","minFilter","magFilter","wrapS","wrapT","wrapR","width","height","compressed","createTextureSet","textureSetId","colorTexture","colorTextureId","channel","metallicRoughnessTexture","metallicRoughnessTextureId","normalsTexture","normalsTextureId","emissiveTexture","emissiveTextureId","occlusionTexture","occlusionTextureId","textureSetIndex","createGeometry","triangles","points","lines","line_strip","line_loop","triangle_strip","triangle_fan","_createDefaultIndices","colors","xktGeometryCfg","uv","Uint8Array","len","Math","floor","mergedPositions","mergedIndices","numIndices","createMesh","position","scale","rotation","identityMat4","quaternion","eulerToQuaternion","identityQuaternion","composeMat4","mesh","createEntity","meshIds","warn","createUUID","meshIdIdx","meshIdLen","createDefaultMetaObjects","_finalize","_callee","rootKDNode","_callee$","_context","log","_removeUnusedTextures","_compressTextures","_bakeSingleUseGeometryPositions","_bakeAndOctEncodeNormals","_createEntityAABBs","_createKDTree","_createTilesFromKDTree","_createReusedGeometriesDecodeMatrix","_flagSolidGeometries","set","finalize","leni","textureIndex","_this","countTextures","_loop","encodingOptions","image","encodedData","encodedImageData","j","lenj","isIdentityMat4","transformPoint4","Int8Array","octEncodeNormals","modelNormalMatrix","inverseMat4","transposeMat4","transformAndOctEncodeNormals","entityAABB","collapseAABB3","expandAABB3Point3","expandAABB3","_insertEntityIntoKDTree","kdNode","nodeAABB","nodeAABBDiag","getAABB3Diag","containsAABB3","dim","aabbLeft","aabbRight","_createTilesFromKDNode","_createTileFromEntities","tileAABB","tileCenter","getAABB3Center","tileCenterNeg","mulVec3Scalar","vec3","rtcAABB","reused","k","lenk","quantizePositions","translateMat4v","tile","tempVec3a","reusedGeometriesAABB","countReusedGeometries","numGeometries","createPositionsDecodeMatrix","maxNumPositions","maxNumIndices","vertexIndexMapping","Array","edges","RepeatWrapping","LinearMipMapNearestFilter","materialType","materialIndex","uniquePositions","indicesLookup","indicesReverseLookup","weldedIndices","faces","numFaces","compa","compb","compc","a","b","c","cb","ab","cross","normal","inverseNormal","weldVertices","positionsMap","vx","vy","vz","precisionPoints","precision","pow","lenUniquePositions","round","buildFaces","positionsDecodeMatrix","ia","ib","ic","decompressPosition","subVec3","cross3Vec3","normalizeVec3","face","thresholdDot","cos","DEGTORAD","edge1","edge2","index1","index2","largeIndex","edge","normal1","normal2","dot","faceIndex","min","max","face1","face2","abs","dotVec3","dot2","Uint32Array","lenPositions","quantizedPositions","xmin","ymin","zmin","xwid","ywid","zwid","maxInt","xMultiplier","yMultiplier","zMultiplier","verify","num","compressPosition","p","q","multiplier","translate","translationMat4v","scalingMat4v","mulMat4","lenNormals","compressedNormals","lenCompressedNormals","oct","dec","best","currentCos","bestCos","ei","localNormal","worldNormal","transformVec3","octEncodeVec3","octDecodeVec2","array","xfunc","yfunc","x","y","tempx","tempy","z","sqrt","compareIndexPositions","posA","posB","newIndices","sort","uniqueVertexIndex","a2","b2","c2","temp","compareEdges","e1","e2","sameEdgeCount","toArrayBuffer","buf","ArrayBuffer","view","isString","o","o2","utils","pako","XKT_VERSION","NUM_TEXTURE_ATTRIBUTES","NUM_MATERIAL_ATTRIBUTES","writeXKTModelToArrayBuffer","xktModel","metaModelJSON","stats","options","zip","writeXKTModelToArrayBufferUncompressed","data","getModelData","deflatedData","deflateData","texturesSize","textureData","byteLength","arrayBuffer","createArrayBuffer","object2Array","encoder","TextEncoder","JSON","stringify","arrays","metadata","eachTextureDataPortion","eachTextureAttributes","eachTextureSetTextures","matrices","eachGeometryPrimitiveType","eachGeometryPositionsPortion","eachGeometryNormalsPortion","eachGeometryColorsPortion","eachGeometryUVsPortion","eachGeometryIndicesPortion","eachGeometryEdgeIndicesPortion","eachMeshGeometriesPortion","eachMeshMatricesPortion","eachMeshTextureSet","eachMeshMaterialAttributes","eachEntityId","eachEntityMeshesPortion","eachTileAABB","eachTileEntitiesPortion","arraysCnt","dataView","DataView","setUint32","byteOffset","offsets","arr","BPE","BYTES_PER_ELEMENT","ceil","idx","dataArray","buffer","requiresSwapToLittleEndian","subarray","swaps","cnt","offset","i1","i2","tmp","metaModelDataStr","numPropertySets","numMetaObjects","numTextures","numTextureSets","numMeshes","numEntities","numTiles","lenColors","lenUVs","lenIndices","lenEdgeIndices","lenMatrices","lenTextures","xktTexture","numCompressedTextures","Int32Array","countPositions","countNormals","countColors","countUVs","countIndices","countEdgeIndices","id","propertySetsIndex","propertySetJSON","metaObjectsIndex","metaObjectJSON","parent","external","portionIdx","textureAttrIdx","eachTextureSetTexturesIndex","countEntityMeshesPortion","eachMeshMaterialAttributesIndex","matricesIndex","tileIndex","tileEntities","numTileEntities","entityMeshes","numEntityMeshes","tileAABBIndex","deflate","metaModelBytes","deflatedJSON","deflateJSON","replace","chr","charCodeAt","toString","substr","strings","elements","indexData","dataLen","element","elementsize","indexBuf","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","GIFMediaType","JPEGMediaType","PNGMediaType","parseCityJSONIntoXKTModel","parseGLTFIntoXKTModel","parseIFCIntoXKTModel","parseLASIntoXKTModel","parsePCDIntoXKTModel","parsePLYIntoXKTModel","parseSTLIntoXKTModel","fs","require","path","convert2xkt","_ref","WebIFC","_ref$configs","configs","source","sourceData","sourceFormat","metaModelSource","output","outputXKTModel","outputXKT","includeTypes","excludeTypes","_ref$reuseGeometries","reuseGeometries","_ref$minTileSize","_ref$stats","outputStats","_ref$rotateX","rotateX","_ref$includeTextures","includeTextures","_ref$includeNormals","includeNormals","_ref$zip","_ref$log","msg","schemaVersion","title","created","numTriangles","numVertices","numNormals","numUVs","numObjects","sourceSize","xktSize","compressionRatio","conversionTime","getFileExtension","fileName","ext","extname","substring","_log","startTime","Date","sourceConfigs","fileTypeConfigs","overrideOption","option1","option2","readFileSync","sourceFileSizeBytes","toFixed","parse","e","convert","center","transform","metaModelData","gltfBasePath","dirname","baseUri","wasmPath","fp64","colorDepth","skip","parser","converterParams","xktArrayBuffer","xktContent","Buffer","from","targetFileSizeBytes","outputDir","existsSync","mkdirSync","recursive","writeFileSync","buildBoxGeometry","xSize","ySize","zSize","centerX","centerY","centerZ","xmax","ymax","zmax","buildBoxLinesGeometry","buildCylinderGeometry","radiusTop","radiusBottom","radialSegments","heightSegments","openEnded","heightHalf","heightLength","radialAngle","PI","radialLength","radiusChange","h","currentRadius","currentHeight","first","second","startIndex","tu","tv","normalY","atan","sin","buildGridGeometry","size","divisions","step","halfSize","l","buildPlaneGeometry","xSegments","zSegments","halfWidth","halfHeight","planeX","planeZ","planeX1","planeZ1","segmentWidth","segmentHeight","offset2","iz","ix","d","buildSphereGeometry","lod","radius","widthSegments","theta","sinTheta","cosTheta","phi","sinPhi","cosPhi","u","v","buildTorusGeometry","tube","tubeSegments","arc","vec","letters","buildVectorTextGeometry","origin","xOrigin","yOrigin","zOrigin","text","trim","countVerts","str","mag","penUp","p1","p2","needLine","pointsLen","iLine","parseGLTFJSONIntoXKTModel","parseMetaModelIntoXKTModel","earcut","holeIndices","hasHoles","outerLen","outerNode","linkedList","minX","minY","maxX","maxY","invSize","eliminateHoles","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","steiner","area","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","prevZ","n","nextZ","intersects","locallyInside","isValidDiagonal","splitPolygon","queue","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","qx","Infinity","m","mx","my","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","ax","ay","bx","by","cx","cy","px","py","intersectsPolygon","middleInside","r","q1","q2","o1","sign","o3","o4","onSegment","inside","Node","an","bp","deviation","polygonArea","trianglesArea","sum","flatten","vertices","holes","dimensions","holeIndex","faceToVertexNormals","smoothNormalsAngleThreshold","vertexMap","vertexNormals","vertexNormalAccum","acc","posi","numVerts","ii","jj","angle","angleVec3","doublePrecision","FloatArrayType","tempMat1","tempMat2","tempVec4","MIN_DOUBLE","MAX_SAFE_INTEGER","MAX_DOUBLE","RADTODEG","vec2","mat3","mat3ToMat4","mat4ToMat3","lut","d0","random","d1","d2","d3","clamp","fmod","negateVec4","dest","addVec4","addVec4Scalar","s","addVec3","addVec3Scalar","subVec4","subVec2","subVec4Scalar","subScalarVec4","mulVec4","mulVec4Scalar","mulVec2Scalar","divVec3","divVec4","divScalarVec3","divVec3Scalar","divVec4Scalar","divScalarVec4","dotVec4","cross3Vec4","u0","u1","u2","v0","v1","v2","x2","y2","z2","sqLenVec4","lenVec4","dotVec2","sqLenVec3","sqLenVec2","lenVec3","distVec3","w","lenVec2","distVec2","rcpVec3","normalizeVec4","f","normalizeVec2","acos","vec3FromMat4Scale","tempVec3","vecToArray","trunc","xyzArrayToObject","xyzObjectToArray","xyz","arry","dupMat4","mat4To3","m4s","setMat4ToZeroes","setMat4ToOnes","diagonalMat4v","diagonalMat4c","diagonalMat4s","mat","identityMat3","negateMat4","addMat4","addMat4Scalar","addScalarMat4","subMat4","subMat4Scalar","subScalarMat4","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","mulMat3","mulMat4Scalar","mulMat4v4","v3","m4","m14","m8","m13","m12","m9","transposeMat3","determinantMat4","b04","b05","b06","b07","b08","b09","invDet","traceMat4","translationMat3v","translationMat4c","translationMat4s","translateMat4c","OLDtranslateMat4c","m15","m3","m7","m11","rotationMat4v","anglerad","axis","xy","yz","zx","xs","ys","zs","rotationMat4c","scalingMat3v","scalingMat4c","scaleMat4c","scaleMat4v","scalingMat4s","rotationTranslationMat4","xx","xz","yy","zz","wx","wy","wz","mat4ToEuler","order","m21","m22","m23","m31","m32","m33","asin","atan2","quaternionToRotationMat4","decomposeMat4","decompose","sx","sy","sz","det","invSX","invSY","invSZ","mat4ToQuaternion","lookAtMat4v","pos","up","posx","posy","posz","upx","upy","upz","targetx","targety","targetz","z0","z1","x0","x1","y0","y1","lookAtMat4c","orthoMat4c","bottom","top","near","far","rl","tb","frustumMat4v","fmin","fmax","fmin4","fmax4","t","tempMat20","tempMat21","tempMat22","frustumMat4","perspectiveMat4","fovyrad","aspectratio","znear","zfar","pmin","pmax","transformPoint3","transformPoints3","points2","p0","pi","m0","m1","m2","m5","m6","m10","transformPositions3","transformPositions4","transformVec4","rotateVec3X","rotateVec3Y","rotateVec3Z","projectVec4","unprojectVec3","mat2","viewMat","projMat","lerpVec3","t1","t2","item","euler","c1","c3","s1","s2","s3","trace","vec3PairToQuaternion","norm_u_norm_v","real_part","normalizeQuaternion","angleAxisToQuaternion","angleAxis","halfAngle","fsin","quaternionToEuler","mulQuaternions","p3","q0","q3","vec3ApplyQuaternion","qy","qz","qw","iy","iw","quaternionToMat4","tx","ty","tz","twx","twy","twz","txx","txy","txz","tyy","tyz","tzz","conjugateQuaternion","inverseQuaternion","quaternionToAngleAxis","AABB2","OBB3","OBB2","Sphere3","transformOBB3","aabb1","aabb2","getAABB3DiagPoint","diagVec","xneg","xpos","yneg","ypos","zneg","zpos","getAABB2Center","AABB3ToOBB3","obb","positions3ToAABB3","OBB3ToAABB3","points3ToAABB3","points3ToSphere3","sphere","numPoints","dist","positions3ToSphere3","tempVec3b","numPositions","OBB3ToSphere3","point","lenPoints","getSphere3Center","triangleNormal","p1x","p1y","p1z","p2x","p2y","p2z","p3x","p3y","p3z","uvi","tempVec2a","tempVec3c","_ref$center","_ref$transform","copyVertices","transformVertices","centerVertices","customTransformVertices","version","rootMetaObjectId","modelMetaObjectId","ctx","nextId","parseCityJSON","vertices2","cityJSONTransform","vertex","centerPos","cityObjects","CityObjects","objectId","cityObject","parseCityObject","parents","objectMaterial","surfaceMaterials","appearance","materials","geometryMaterial","material","themeIds","themeId","theme","surfaceMaterial","parseGeometrySurfacesWithOwnMaterials","parseGeometrySurfacesWithSharedMaterial","geomType","surfaces","boundaries","parseSurfacesWithOwnMaterials","shells","solids","surface","diffuseColor","transparency","sharedIndices","geometryCfg","newFace","extractLocalIndices","_toConsumableArray","pList","getNormalOfPositions","pv","to2D","unshift","tr","parseSurfacesWithSharedMaterial","primitiveCfg","boundary","newBoundary","index","includes","vertexIndex","indexOf","nexti","_p","_n","re","x3","tmp2","y3","GLTFLoader","getAttachment","gltfData","nodesHaveNames","geometryCreated","parseTextures","parseMaterials","parseDefaultScene","errMsg","parseTexture","sampler","flipY","_textureId","_textureSetId","parseTextureSet","_attributes","parseMaterialAttributes","textureSetCfg","normalTexture","normalTextureId","metallicPBR","pbrMetallicRoughness","baseColorTexture","extensions","specularPBR","specularTexture","specularColorTexture","materialAttributes","diffuseFactor","common","technique","blinn","phong","lambert","diffuse","transparent","baseColorFactor","metallicFactor","roughnessFactor","scene","scenes","parseScene","nodes","node","countMeshUsage","testIfNodesHaveNames","parseNodesWithoutNames","parseNodesWithNames","level","instances","children","childNode","depth","parseNodeMatrix","parseNodeMesh","objectIdStack","meshIdsStack","xktEntityId","nodeName","entityMeshIds","localMatrix","translation","numPrimitives","primitives","primitive","_xktGeometryId","xktGeometryId","mode","POSITION","attributes","NORMAL","COLOR_0","TEXCOORD_0","xktMeshId","meshCfg","atob2","atob","WEBGL_COMPONENT_TYPES","Int16Array","WEBGL_TYPE_SIZES","gltf","metaModelCorrections","getMetaModelCorrections","createXKTGeometryIds","nextMeshId","parseBuffers","parseBufferViews","freeBuffers","eachRootStats","eachChildRoot","metaObjectsMap","metaObjectParent","rootMetaObject","rootStats","numChildren","countChildren","buffers","all","map","parseBuffer","bufferInfo","_arrayBuffer","_buffer","uri","parseArrayBuffer","dataUriRegex","dataUriRegexResult","match","isBase64","decodeURIComponent","bufferViewsInfo","bufferViews","parseBufferView","bufferViewInfo","_typedArray","materialsInfo","materialInfo","parseMaterial","_materialData","defaultSceneInfo","sceneInfo","glTFNode","parseNode","deferredMeshIds","gltfMeshId","meshInfo","numPrimitivesInMesh","primitiveInfo","geometryHash","createPrimitiveGeometryHash","geometryArrays","parsePrimitiveGeometry","childNodeIdx","childGLTFNode","rootMetaObjectStats","join","accessors","indicesIndex","accessorInfo","parseAccessorTypedArray","positionsIndex","normalsIndex","colorsIndex","bufferView","itemSize","TypedArray","componentType","elementBytes","itemBytes","byteStride","count","_ref$autoNormals","autoNormals","ifcAPI","IfcAPI","SetWasmPath","Init","modelID","OpenModel","GetLineIDsWithType","IFCPROJECT","ifcProjectId","ifcProject","GetLine","parseMetadata","parseGeometry","parsePropertySets","IFCRELDEFINESBYPROPERTIES","relID","rel","relatingPropertyDefinition","RelatingPropertyDefinition","GlobalId","relatedObjects","RelatedObjects","relatedObject","HasProperties","Name","prop","nominalValue","NominalValue","property","valueType","Description","description","parseSpatialChildren","ifcElement","parseRelatedItemsOfType","expressID","IFCRELAGGREGATES","IFCRELCONTAINEDINSPATIALSTRUCTURE","relation","related","relatedItems","foundElement","isArray","element2","flatMeshes","LoadAllGeometry","flatMesh","createObject","IFCSPACE","ifcSpaceId","GetFlatMesh","flatMeshExpressID","placedGeometries","placedGeometry","geometryExpressID","GetGeometry","vertexData","GetVertexArray","GetVertexData","GetVertexDataSize","GetIndexArray","GetIndexData","GetIndexDataSize","flatTransformation","LASLoader","MAX_VERTICES","_ref$colorDepth","_ref$fp","_ref$skip","las","parsedData","loaderData","pointsFormatId","readAttributes","intensity","readIntensities","readColorsAndIntensities","pointsChunks","chunkArray","readPositions","colorsChunks","positionsValue","attributesPosition","attributesColor","attributesIntensity","colorSize","intensities","colorsCompressedSize","chunkSize","includeTypesMap","excludeTypesMap","newObject","countMetaObjects","_ref$littleEndian","littleEndian","textData","decodeText","header","parseHeader","headerLen","line","parseFloat","rgb","g","sizes","compressedSize","decompressedSize","decompressed","decompressLZF","dataview","getFloat32","getUint8","row","rowSize","result1","search","result2","exec","fields","viewpoint","parseInt","sizeSum","TextDecoder","decode","il","fromCharCode","escape","inData","outLength","inLength","outData","inPtr","outPtr","ctrl","ref","PLYLoader","_x","_parsePLYIntoXKTModel","hasColors","colorsValue","t0","_parseSTLIntoXKTModel","splitMeshes","smoothNormals","binData","ensureBinary","isBinary","parseBinary","parseASCII","ensureString","reader","getUint32","faceSize","numExpectedBytes","defaultR","defaultG","defaultB","lastR","lastG","lastB","newMesh","alpha","dataOffset","faceLength","normalX","normalZ","packedColor","getUint16","vertexstart","addMesh","faceRegex","faceCounter","floatRegex","vertexRegex","RegExp","normalRegex","normalx","normaly","normalz","verticesPerFace","normalsPerFace","nextGeometryId","ni","installFilePolyfills"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"xeokit-convert.cjs.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AAJA,IAKMA,MAAM,gBAAAC,YAAA;AAER;AACJ;AACA;AACI,SAAAD,OAAYE,IAAI,EAAE;EAAAC,eAAA,OAAAH,MAAA;EAEd;AACR;AACA;AACA;AACA;EACQ,IAAI,CAACE,IAAI,GAAGA,IAAI;;EAEhB;AACR;AACA;EACQ,IAAI,CAACE,QAAQ,GAAG,IAAI;;EAEpB;AACR;AACA;EACQ,IAAI,CAACC,IAAI,GAAG,IAAI;;EAEhB;AACR;AACA;EACQ,IAAI,CAACC,KAAK,GAAG,IAAI;AACrB,CAAC;;;;;;;;;;;;;;;;;;;;;;ACjC+B;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASME,SAAS,gBAAAP,YAAA;AAEX;AACJ;AACA;AACA;AACA;AACI,SAAAO,UAAYC,QAAQ,EAAGC,MAAM,EAAE;EAAAP,eAAA,OAAAK,SAAA;EAE3B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACC,QAAQ,GAAGA,QAAQ;;EAExB;AACR;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACE,WAAW,GAAG,IAAI;;EAEvB;AACR;AACA;AACA;AACA;EACQ,IAAI,CAACD,MAAM,GAAGA,MAAM;;EAEpB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACR,IAAI,GAAGK,8CAAI,CAACK,KAAK,CAAC,CAAC;;EAExB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ,IAAI,CAACC,mBAAmB,GAAG,KAAK;AACpC,CAAC;;;;;;;;;;;;;;;;;;;;;ACtEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,IASMC,WAAW;EAEb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAAAA,YAAYC,GAAG,EAAE;IAAAZ,eAAA,OAAAW,WAAA;IAEb;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACE,UAAU,GAAGD,GAAG,CAACC,UAAU;;IAEhC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGF,GAAG,CAACE,aAAa;;IAEtC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGH,GAAG,CAACG,aAAa;;IAEtC;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,YAAY,GAAG,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,SAAS,GAAGL,GAAG,CAACK,SAAS;;IAE9B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,kBAAkB,GAAG,IAAIC,WAAW,CAACP,GAAG,CAACK,SAAS,CAACG,MAAM,CAAC;;IAE/D;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,OAAO,GAAGT,GAAG,CAACS,OAAO;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,iBAAiB,GAAG,IAAI;;IAE7B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAGX,GAAG,CAACW,gBAAgB;;IAE5C;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,GAAG,GAAGZ,GAAG,CAACY,GAAG;;IAElB;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,aAAa,GAAGb,GAAG,CAACa,aAAa;;IAEtC;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,OAAO,GAAGd,GAAG,CAACc,OAAO;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAGf,GAAG,CAACe,WAAW;;IAElC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,KAAK,GAAG,KAAK;EACtB;;EAEA;AACJ;AACA;AACA;EAHI9B,YAAA,CAAAa,WAAA;IAAAkB,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAa;MAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,gBAAgB,GAAG,EAAE;;IAE1B;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,EAAE;;IAEzB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,4BAA4B,GAAG,IAAI/N,YAAY,CAAC,EAAE,CAAC;;IAExD;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACgO,UAAU,GAAG,CAAC,CAAC;;IAEpB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,cAAc,GAAG,EAAE;;IAExB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC;;IAElB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,YAAY,GAAG,EAAE;;IAEtB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC;;IAErB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,EAAE;;IAEzB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACnQ,MAAM,GAAG,CAAC,CAAC;;IAEhB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACoQ,UAAU,GAAG,EAAE;;IAEpB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC1Q,QAAQ,GAAG,CAAC,CAAC;;IAElB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC2Q,YAAY,GAAG,EAAE;;IAEtB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAACC,SAAS,GAAG,EAAE;;IAEnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAI,CAAC9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","sources":["webpack://convert2xkt/webpack/universalModuleDefinition","webpack://convert2xkt/./src/XKTModel/KDNode.js","webpack://convert2xkt/./src/XKTModel/XKTEntity.js","webpack://convert2xkt/./src/XKTModel/XKTGeometry.js","webpack://convert2xkt/./src/XKTModel/XKTMesh.js","webpack://convert2xkt/./src/XKTModel/XKTMetaObject.js","webpack://convert2xkt/./src/XKTModel/XKTModel.js","webpack://convert2xkt/./src/XKTModel/XKTPropertySet.js","webpack://convert2xkt/./src/XKTModel/XKTTexture.js","webpack://convert2xkt/./src/XKTModel/XKTTextureSet.js","webpack://convert2xkt/./src/XKTModel/XKTTile.js","webpack://convert2xkt/./src/XKTModel/lib/buildEdgeIndices.js","webpack://convert2xkt/./src/XKTModel/lib/geometryCompression.js","webpack://convert2xkt/./src/XKTModel/lib/isTriangleMeshSolid.js","webpack://convert2xkt/./src/XKTModel/lib/toArraybuffer.js","webpack://convert2xkt/./src/XKTModel/lib/utils.js","webpack://convert2xkt/./src/XKTModel/writeXKTModelToArrayBuffer.js","webpack://convert2xkt/./src/XKT_INFO.js","webpack://convert2xkt/./src/constants.js","webpack://convert2xkt/./src/convert2xkt.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildBoxLinesGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildCylinderGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildGridGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildPlaneGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildSphereGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildTorusGeometry.js","webpack://convert2xkt/./src/geometryBuilders/buildVectorTextGeometry.js","webpack://convert2xkt/./src/index.js","webpack://convert2xkt/./src/lib/earcut.js","webpack://convert2xkt/./src/lib/faceToVertexNormals.js","webpack://convert2xkt/./src/lib/math.js","webpack://convert2xkt/./src/lib/mergeVertices.js","webpack://convert2xkt/./src/parsers/parseCityJSONIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseGLTFIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseGLTFJSONIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseIFCIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseLASIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseMetaModelIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parsePCDIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parsePLYIntoXKTModel.js","webpack://convert2xkt/./src/parsers/parseSTLIntoXKTModel.js","webpack://convert2xkt/external commonjs \"@loaders.gl/core\"","webpack://convert2xkt/external commonjs \"@loaders.gl/gltf\"","webpack://convert2xkt/external commonjs \"@loaders.gl/images\"","webpack://convert2xkt/external commonjs \"@loaders.gl/las\"","webpack://convert2xkt/external commonjs \"@loaders.gl/ply\"","webpack://convert2xkt/external commonjs \"@loaders.gl/polyfills\"","webpack://convert2xkt/external commonjs \"@loaders.gl/textures\"","webpack://convert2xkt/external commonjs \"fs\"","webpack://convert2xkt/external commonjs \"pako\"","webpack://convert2xkt/external commonjs \"path\"","webpack://convert2xkt/webpack/bootstrap","webpack://convert2xkt/webpack/runtime/compat get default export","webpack://convert2xkt/webpack/runtime/define property getters","webpack://convert2xkt/webpack/runtime/hasOwnProperty shorthand","webpack://convert2xkt/webpack/runtime/make namespace object","webpack://convert2xkt/./index.dist.node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"convert2xkt\"] = factory();\n\telse\n\t\troot[\"convert2xkt\"] = factory();\n})(global, () => {\nreturn ","/**\n * A kd-Tree node, used internally by {@link XKTModel}.\n *\n * @private\n */\nclass KDNode {\n\n /**\n * Create a KDNode with an axis-aligned 3D World-space boundary.\n */\n constructor(aabb) {\n\n /**\n * The axis-aligned 3D World-space boundary of this KDNode.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}s within this KDNode.\n */\n this.entities = null;\n\n /**\n * The left child KDNode.\n */\n this.left = null;\n\n /**\n * The right child KDNode.\n */\n this.right = null;\n }\n}\n\nexport {KDNode};","import {math} from \"../lib/math.js\";\n\n/**\n * An object within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTModel#entities} and {@link XKTModel#entitiesList}\n * * Has one or more {@link XKTMesh}s, each having an {@link XKTGeometry}\n *\n * @class XKTEntity\n */\nclass XKTEntity {\n\n /**\n * @private\n * @param entityId\n * @param meshes\n */\n constructor(entityId, meshes) {\n\n /**\n * Unique ID of this ````XKTEntity```` in {@link XKTModel#entities}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * We can also use {@link XKTModel#createMetaObject} to create an {@link XKTMetaObject} to specify metadata for\n * this ````XKTEntity````. To associate the {@link XKTMetaObject} with our {@link XKTEntity}, we give\n * {@link XKTMetaObject#metaObjectId} the same value as {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.entityId = entityId;\n\n /**\n * Index of this ````XKTEntity```` in {@link XKTModel#entitiesList}.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Number}\n */\n this.entityIndex = null;\n\n /**\n * A list of {@link XKTMesh}s that indicate which {@link XKTGeometry}s are used by this Entity.\n *\n * @type {XKTMesh[]}\n */\n this.meshes = meshes;\n\n /**\n * World-space axis-aligned bounding box (AABB) that encloses the {@link XKTGeometry#positions} of\n * the {@link XKTGeometry}s that are used by this ````XKTEntity````.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {Float32Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this ````XKTEntity```` shares {@link XKTGeometry}s with other {@link XKTEntity}'s.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * Note that when an ````XKTEntity```` shares ````XKTGeometrys````, it shares **all** of its ````XKTGeometrys````. An ````XKTEntity````\n * never shares only some of its ````XKTGeometrys```` - it always shares either the whole set or none at all.\n *\n * @type {Boolean}\n */\n this.hasReusedGeometries = false;\n }\n}\n\nexport {XKTEntity};","/**\n * An element of reusable geometry within an {@link XKTModel}.\n *\n * * Created by {@link XKTModel#createGeometry}\n * * Stored in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}\n * * Referenced by {@link XKTMesh}s, which belong to {@link XKTEntity}s\n *\n * @class XKTGeometry\n */\nclass XKTGeometry {\n\n /**\n * @private\n * @param {*} cfg Configuration for the XKTGeometry.\n * @param {Number} cfg.geometryId Unique ID of the geometry in {@link XKTModel#geometries}.\n * @param {String} cfg.primitiveType Type of this geometry - \"triangles\", \"points\" or \"lines\" so far.\n * @param {Number} cfg.geometryIndex Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n * @param {Float64Array} cfg.positions Non-quantized 3D vertex positions.\n * @param {Float32Array} cfg.normals Non-compressed vertex normals.\n * @param {Uint8Array} cfg.colorsCompressed Unsigned 8-bit integer RGBA vertex colors.\n * @param {Float32Array} cfg.uvs Non-compressed vertex UV coordinates.\n * @param {Uint32Array} cfg.indices Indices to organize the vertex positions and normals into triangles.\n * @param {Uint32Array} cfg.edgeIndices Indices to organize the vertex positions into edges.\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTGeometry in {@link XKTModel#geometries}.\n *\n * @type {Number}\n */\n this.geometryId = cfg.geometryId;\n\n /**\n * The type of primitive - \"triangles\" | \"points\" | \"lines\".\n *\n * @type {String}\n */\n this.primitiveType = cfg.primitiveType;\n\n /**\n * Index of this XKTGeometry in {@link XKTModel#geometriesList}.\n *\n * @type {Number}\n */\n this.geometryIndex = cfg.geometryIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTGeometry.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * Non-quantized 3D vertex positions.\n *\n * Defined for all primitive types.\n *\n * @type {Float64Array}\n */\n this.positions = cfg.positions;\n\n /**\n * Quantized vertex positions.\n *\n * Defined for all primitive types.\n *\n * This array is later created from {@link XKTGeometry#positions} by {@link XKTModel#finalize}.\n *\n * @type {Uint16Array}\n */\n this.positionsQuantized = new Uint16Array(cfg.positions.length);\n\n /**\n * Non-compressed 3D vertex normals.\n *\n * Defined only for triangle primitives. Can be null if we want xeokit to auto-generate them. Ignored for points and lines.\n *\n * @type {Float32Array}\n */\n this.normals = cfg.normals;\n\n /**\n * Compressed vertex normals.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * This array is later created from {@link XKTGeometry#normals} by {@link XKTModel#finalize}.\n *\n * Will be null if {@link XKTGeometry#normals} is also null.\n *\n * @type {Int8Array}\n */\n this.normalsOctEncoded = null;\n\n /**\n * Compressed RGBA vertex colors.\n *\n * Defined only for point primitives. Ignored for triangles and lines.\n *\n * @type {Uint8Array}\n */\n this.colorsCompressed = cfg.colorsCompressed;\n\n /**\n * Non-compressed vertex UVs.\n *\n * @type {Float32Array}\n */\n this.uvs = cfg.uvs;\n\n /**\n * Compressed vertex UVs.\n *\n * @type {Uint16Array}\n */\n this.uvsCompressed = cfg.uvsCompressed;\n\n /**\n * Indices that organize the vertex positions and normals as triangles.\n *\n * Defined only for triangle and lines primitives. Ignored for points.\n *\n * @type {Uint32Array}\n */\n this.indices = cfg.indices;\n\n /**\n * Indices that organize the vertex positions as edges.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * @type {Uint32Array}\n */\n this.edgeIndices = cfg.edgeIndices;\n\n /**\n * When {@link XKTGeometry#primitiveType} is \"triangles\", this is ````true```` when this geometry is a watertight mesh.\n *\n * Defined only for triangle primitives. Ignored for points and lines.\n *\n * Set by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.solid = false;\n }\n\n /**\n * Convenience property that is ````true```` when {@link XKTGeometry#numInstances} is greater that one.\n * @returns {boolean}\n */\n get reused() {\n return (this.numInstances > 1);\n }\n}\n\nexport {XKTGeometry};","/**\n * Represents the usage of a {@link XKTGeometry} by an {@link XKTEntity}.\n *\n * * Created by {@link XKTModel#createEntity}\n * * Stored in {@link XKTEntity#meshes} and {@link XKTModel#meshesList}\n * * Has an {@link XKTGeometry}, and an optional {@link XKTTextureSet}, both of which it can share with other {@link XKTMesh}es\n * * Has {@link XKTMesh#color}, {@link XKTMesh#opacity}, {@link XKTMesh#metallic} and {@link XKTMesh#roughness} PBR attributes\n * @class XKTMesh\n */\nclass XKTMesh {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTMesh in {@link XKTModel#meshes}.\n *\n * @type {Number}\n */\n this.meshId = cfg.meshId;\n\n /**\n * Index of this XKTMesh in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.meshIndex = cfg.meshIndex;\n\n /**\n * The 4x4 modeling transform matrix.\n *\n * Transform is relative to the center of the {@link XKTTile} that contains this XKTMesh's {@link XKTEntity},\n * which is given in {@link XKTMesh#entity}.\n *\n * When the ````XKTEntity```` shares its {@link XKTGeometry}s with other ````XKTEntity````s, this matrix is used\n * to transform this XKTMesh's XKTGeometry into World-space. When this XKTMesh does not share its ````XKTGeometry````,\n * then this matrix is ignored.\n *\n * @type {Number[]}\n */\n this.matrix = cfg.matrix;\n\n /**\n * The instanced {@link XKTGeometry}.\n *\n * @type {XKTGeometry}\n */\n this.geometry = cfg.geometry;\n\n /**\n * RGB color of this XKTMesh.\n *\n * @type {Float32Array}\n */\n this.color = cfg.color || new Float32Array([1, 1, 1]);\n\n /**\n * PBR metallness of this XKTMesh.\n *\n * @type {Number}\n */\n this.metallic = (cfg.metallic !== null && cfg.metallic !== undefined) ? cfg.metallic : 0;\n\n /**\n * PBR roughness of this XKTMesh.\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {Number}\n * @type {XKTTextureSet}\n */\n this.roughness = (cfg.roughness !== null && cfg.roughness !== undefined) ? cfg.roughness : 1;\n\n /**\n * Opacity of this XKTMesh.\n *\n * @type {Number}\n */\n this.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? cfg.opacity : 1.0;\n\n /**\n * The {@link XKTTextureSet} that defines the appearance of this XKTMesh.\n *\n * @type {XKTTextureSet}\n */\n this.textureSet = cfg.textureSet;\n\n /**\n * The owner {@link XKTEntity}.\n *\n * Set by {@link XKTModel#createEntity}.\n *\n * @type {XKTEntity}\n */\n this.entity = null; // Set after instantiation, when the Entity is known\n }\n}\n\nexport {XKTMesh};","/**\n * A meta object within an {@link XKTModel}.\n *\n * These are plugged together into a parent-child hierarchy to represent structural\n * metadata for the {@link XKTModel}.\n *\n * The leaf XKTMetaObjects are usually associated with\n * an {@link XKTEntity}, which they do so by sharing the same ID,\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * * Created by {@link XKTModel#createMetaObject}\n * * Stored in {@link XKTModel#metaObjects} and {@link XKTModel#metaObjectsList}\n * * Has an ID, a type, and a human-readable name\n * * May have a parent {@link XKTMetaObject}\n * * When no children, is usually associated with an {@link XKTEntity}\n *\n * @class XKTMetaObject\n */\nclass XKTMetaObject {\n\n /**\n * @private\n * @param metaObjectId\n * @param propertySetIds\n * @param metaObjectType\n * @param metaObjectName\n * @param parentMetaObjectId\n */\n constructor(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId) {\n\n /**\n * Unique ID of this ````XKTMetaObject```` in {@link XKTModel#metaObjects}.\n *\n * For a BIM model, this will be an IFC product ID.\n *\n * If this is a leaf XKTMetaObject, where it is not a parent to any other XKTMetaObject,\n * then this will be equal to the ID of an {@link XKTEntity} in {@link XKTModel#entities},\n * ie. where {@link XKTMetaObject#metaObjectId} == {@link XKTEntity#entityId}.\n *\n * @type {String}\n */\n this.metaObjectId = metaObjectId;\n\n /**\n * Unique ID of one or more property sets that contains additional metadata about this\n * {@link XKTMetaObject}. The property sets can be stored in an external system, or\n * within the {@link XKTModel}, as {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n *\n * @type {String[]}\n */\n this.propertySetIds = propertySetIds;\n\n /**\n * Indicates the XKTMetaObject meta object type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.metaObjectType = metaObjectType;\n\n /**\n * Indicates the XKTMetaObject meta object name.\n *\n * This defaults to {@link XKTMetaObject#metaObjectId}.\n *\n * @type {string}\n */\n this.metaObjectName = metaObjectName;\n\n /**\n * The parent XKTMetaObject, if any.\n *\n * Will be null if there is no parent.\n *\n * @type {String}\n */\n this.parentMetaObjectId = parentMetaObjectId;\n }\n}\n\nexport {XKTMetaObject};","import {math} from \"../lib/math.js\";\nimport {geometryCompression} from \"./lib/geometryCompression.js\";\nimport {buildEdgeIndices} from \"./lib/buildEdgeIndices.js\";\nimport {isTriangleMeshSolid} from \"./lib/isTriangleMeshSolid.js\";\n\nimport {XKTMesh} from './XKTMesh.js';\nimport {XKTGeometry} from './XKTGeometry.js';\nimport {XKTEntity} from './XKTEntity.js';\nimport {XKTTile} from './XKTTile.js';\nimport {KDNode} from \"./KDNode.js\";\nimport {XKTMetaObject} from \"./XKTMetaObject.js\";\nimport {XKTPropertySet} from \"./XKTPropertySet.js\";\nimport {mergeVertices} from \"../lib/mergeVertices.js\";\nimport {XKT_INFO} from \"../XKT_INFO.js\";\nimport {XKTTexture} from \"./XKTTexture\";\nimport {XKTTextureSet} from \"./XKTTextureSet\";\nimport {encode, load} from \"@loaders.gl/core\";\nimport {KTX2BasisWriter} from \"@loaders.gl/textures\";\nimport {ImageLoader} from '@loaders.gl/images';\n\nconst tempVec4a = math.vec4([0, 0, 0, 1]);\nconst tempVec4b = math.vec4([0, 0, 0, 1]);\n\nconst tempMat4 = math.mat4();\nconst tempMat4b = math.mat4();\n\nconst kdTreeDimLength = new Float64Array(3);\n\n// XKT texture types\n\nconst COLOR_TEXTURE = 0;\nconst METALLIC_ROUGHNESS_TEXTURE = 1;\nconst NORMALS_TEXTURE = 2;\nconst EMISSIVE_TEXTURE = 3;\nconst OCCLUSION_TEXTURE = 4;\n\n// KTX2 encoding options for each texture type\n\nconst TEXTURE_ENCODING_OPTIONS = {}\nTEXTURE_ENCODING_OPTIONS[COLOR_TEXTURE] = {\n useSRGB: true,\n qualityLevel: 50,\n encodeUASTC: true,\n mipmaps: true\n};\nTEXTURE_ENCODING_OPTIONS[EMISSIVE_TEXTURE] = {\n useSRGB: true,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[METALLIC_ROUGHNESS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 50,\n mipmaps: true // Needed for GGX roughness shading\n};\nTEXTURE_ENCODING_OPTIONS[NORMALS_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\nTEXTURE_ENCODING_OPTIONS[OCCLUSION_TEXTURE] = {\n useSRGB: false,\n encodeUASTC: true,\n qualityLevel: 10,\n mipmaps: false\n};\n\n/**\n * A document model that represents the contents of an .XKT file.\n *\n * * An XKTModel contains {@link XKTTile}s, which spatially subdivide the model into axis-aligned, box-shaped regions.\n * * Each {@link XKTTile} contains {@link XKTEntity}s, which represent the objects within its region.\n * * Each {@link XKTEntity} has {@link XKTMesh}s, which each have a {@link XKTGeometry}. Each {@link XKTGeometry} can be shared by multiple {@link XKTMesh}s.\n * * Import models into an XKTModel using {@link parseGLTFJSONIntoXKTModel}, {@link parseIFCIntoXKTModel}, {@link parseCityJSONIntoXKTModel} etc.\n * * Build an XKTModel programmatically using {@link XKTModel#createGeometry}, {@link XKTModel#createMesh} and {@link XKTModel#createEntity}.\n * * Serialize an XKTModel to an ArrayBuffer using {@link writeXKTModelToArrayBuffer}.\n *\n * ## Usage\n *\n * See [main docs page](/docs/#javascript-api) for usage examples.\n *\n * @class XKTModel\n */\nclass XKTModel {\n\n /**\n * Constructs a new XKTModel.\n *\n * @param {*} [cfg] Configuration\n * @param {Number} [cfg.edgeThreshold=10]\n * @param {Number} [cfg.minTileSize=500]\n */\n constructor(cfg = {}) {\n\n /**\n * The model's ID, if available.\n *\n * Will be \"default\" by default.\n *\n * @type {String}\n */\n this.modelId = cfg.modelId || \"default\";\n\n /**\n * The project ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.projectId = cfg.projectId || \"\";\n\n /**\n * The revision ID, if available.\n *\n * Will be an empty string by default.\n *\n * @type {String}\n */\n this.revisionId = cfg.revisionId || \"\";\n\n /**\n * The model author, if available.\n *\n * Will be an empty string by default.\n *\n * @property author\n * @type {String}\n */\n this.author = cfg.author || \"\";\n\n /**\n * The date the model was created, if available.\n *\n * Will be an empty string by default.\n *\n * @property createdAt\n * @type {String}\n */\n this.createdAt = cfg.createdAt || \"\";\n\n /**\n * The application that created the model, if available.\n *\n * Will be an empty string by default.\n *\n * @property creatingApplication\n * @type {String}\n */\n this.creatingApplication = cfg.creatingApplication || \"\";\n\n /**\n * The model schema version, if available.\n *\n * In the case of IFC, this could be \"IFC2x3\" or \"IFC4\", for example.\n *\n * Will be an empty string by default.\n *\n * @property schema\n * @type {String}\n */\n this.schema = cfg.schema || \"\";\n\n /**\n * The XKT format version.\n *\n * @property xktVersion;\n * @type {number}\n */\n this.xktVersion = XKT_INFO.xktVersion;\n\n /**\n *\n * @type {Number|number}\n */\n this.edgeThreshold = cfg.edgeThreshold || 10;\n\n /**\n * Minimum diagonal size of the boundary of an {@link XKTTile}.\n *\n * @type {Number|number}\n */\n this.minTileSize = cfg.minTileSize || 500;\n\n /**\n * Optional overall AABB that contains all the {@link XKTEntity}s we'll create in this model, if previously known.\n *\n * This is the AABB of a complete set of input files that are provided as a split-model set for conversion.\n *\n * This is used to help the {@link XKTTile.aabb}s within split models align neatly with each other, as we\n * build them with a k-d tree in {@link XKTModel#finalize}. Without this, the AABBs of the different parts\n * tend to misalign slightly, resulting in excess number of {@link XKTTile}s, which degrades memory and rendering\n * performance when the XKT is viewer in the xeokit Viewer.\n */\n this.modelAABB = cfg.modelAABB;\n\n /**\n * Map of {@link XKTPropertySet}s within this XKTModel, each mapped to {@link XKTPropertySet#propertySetId}.\n *\n * Created by {@link XKTModel#createPropertySet}.\n *\n * @type {{String:XKTPropertySet}}\n */\n this.propertySets = {};\n\n /**\n * {@link XKTPropertySet}s within this XKTModel.\n *\n * Each XKTPropertySet holds its position in this list in {@link XKTPropertySet#propertySetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTPropertySet[]}\n */\n this.propertySetsList = [];\n\n /**\n * Map of {@link XKTMetaObject}s within this XKTModel, each mapped to {@link XKTMetaObject#metaObjectId}.\n *\n * Created by {@link XKTModel#createMetaObject}.\n *\n * @type {{String:XKTMetaObject}}\n */\n this.metaObjects = {};\n\n /**\n * {@link XKTMetaObject}s within this XKTModel.\n *\n * Each XKTMetaObject holds its position in this list in {@link XKTMetaObject#metaObjectIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMetaObject[]}\n */\n this.metaObjectsList = [];\n\n /**\n * The positions of all shared {@link XKTGeometry}s are de-quantized using this singular\n * de-quantization matrix.\n *\n * This de-quantization matrix is generated from the collective Local-space boundary of the\n * positions of all shared {@link XKTGeometry}s.\n *\n * @type {Float32Array}\n */\n this.reusedGeometriesDecodeMatrix = new Float32Array(16);\n\n /**\n * Map of {@link XKTGeometry}s within this XKTModel, each mapped to {@link XKTGeometry#geometryId}.\n *\n * Created by {@link XKTModel#createGeometry}.\n *\n * @type {{Number:XKTGeometry}}\n */\n this.geometries = {};\n\n /**\n * List of {@link XKTGeometry}s within this XKTModel, in the order they were created.\n *\n * Each XKTGeometry holds its position in this list in {@link XKTGeometry#geometryIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTGeometry[]}\n */\n this.geometriesList = [];\n\n /**\n * Map of {@link XKTTexture}s within this XKTModel, each mapped to {@link XKTTexture#textureId}.\n *\n * Created by {@link XKTModel#createTexture}.\n *\n * @type {{Number:XKTTexture}}\n */\n this.textures = {};\n\n /**\n * List of {@link XKTTexture}s within this XKTModel, in the order they were created.\n *\n * Each XKTTexture holds its position in this list in {@link XKTTexture#textureIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTexture[]}\n */\n this.texturesList = [];\n\n /**\n * Map of {@link XKTTextureSet}s within this XKTModel, each mapped to {@link XKTTextureSet#textureSetId}.\n *\n * Created by {@link XKTModel#createTextureSet}.\n *\n * @type {{Number:XKTTextureSet}}\n */\n this.textureSets = {};\n\n /**\n * List of {@link XKTTextureSet}s within this XKTModel, in the order they were created.\n *\n * Each XKTTextureSet holds its position in this list in {@link XKTTextureSet#textureSetIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTextureSet[]}\n */\n this.textureSetsList = [];\n\n /**\n * Map of {@link XKTMesh}s within this XKTModel, each mapped to {@link XKTMesh#meshId}.\n *\n * Created by {@link XKTModel#createMesh}.\n *\n * @type {{Number:XKTMesh}}\n */\n this.meshes = {};\n\n /**\n * List of {@link XKTMesh}s within this XKTModel, in the order they were created.\n *\n * Each XKTMesh holds its position in this list in {@link XKTMesh#meshIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTMesh[]}\n */\n this.meshesList = [];\n\n /**\n * Map of {@link XKTEntity}s within this XKTModel, each mapped to {@link XKTEntity#entityId}.\n *\n * Created by {@link XKTModel#createEntity}.\n *\n * @type {{String:XKTEntity}}\n */\n this.entities = {};\n\n /**\n * {@link XKTEntity}s within this XKTModel.\n *\n * Each XKTEntity holds its position in this list in {@link XKTEntity#entityIndex}.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTEntity[]}\n */\n this.entitiesList = [];\n\n /**\n * {@link XKTTile}s within this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {XKTTile[]}\n */\n this.tilesList = [];\n\n /**\n * The axis-aligned 3D World-space boundary of this XKTModel.\n *\n * Created by {@link XKTModel#finalize}.\n *\n * @type {Float64Array}\n */\n this.aabb = math.AABB3();\n\n /**\n * Indicates if this XKTModel has been finalized.\n *\n * Set ````true```` by {@link XKTModel#finalize}.\n *\n * @type {boolean}\n */\n this.finalized = false;\n }\n\n /**\n * Creates an {@link XKTPropertySet} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.propertySetId Unique ID for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetType=\"default\"] A meta type for the {@link XKTPropertySet}.\n * @param {String} [params.propertySetName] Human-readable name for the {@link XKTPropertySet}. Defaults to the ````propertySetId```` parameter.\n * @param {String[]} params.properties Properties for the {@link XKTPropertySet}.\n * @returns {XKTPropertySet} The new {@link XKTPropertySet}.\n */\n createPropertySet(params) {\n\n if (!params) {\n throw \"[XKTModel.createPropertySet] Parameters expected: params\";\n }\n\n if (params.propertySetId === null || params.propertySetId === undefined) {\n throw \"[XKTModel.createPropertySet] Parameter expected: params.propertySetId\";\n }\n\n if (params.properties === null || params.properties === undefined) {\n throw \"[XKTModel.createPropertySet] Parameter expected: params.properties\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more property sets\");\n return;\n }\n\n if (this.propertySets[params.propertySetId]) {\n // console.error(\"XKTPropertySet already exists with this ID: \" + params.propertySetId);\n return;\n }\n\n const propertySetId = params.propertySetId;\n const propertySetType = params.propertySetType || \"Default\";\n const propertySetName = params.propertySetName || params.propertySetId;\n const properties = params.properties || [];\n\n const propertySet = new XKTPropertySet(propertySetId, propertySetType, propertySetName, properties);\n\n this.propertySets[propertySetId] = propertySet;\n this.propertySetsList.push(propertySet);\n\n return propertySet;\n }\n\n /**\n * Creates an {@link XKTMetaObject} within this XKTModel.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.metaObjectId Unique ID for the {@link XKTMetaObject}.\n * @param {String} params.propertySetIds ID of one or more property sets that contains additional metadata about\n * this {@link XKTMetaObject}. The property sets could be stored externally (ie not managed at all by the XKT file),\n * or could be {@link XKTPropertySet}s within {@link XKTModel#propertySets}.\n * @param {String} [params.metaObjectType=\"default\"] A meta type for the {@link XKTMetaObject}. Can be anything,\n * but is usually an IFC type, such as \"IfcSite\" or \"IfcWall\".\n * @param {String} [params.metaObjectName] Human-readable name for the {@link XKTMetaObject}. Defaults to the ````metaObjectId```` parameter.\n * @param {String} [params.parentMetaObjectId] ID of the parent {@link XKTMetaObject}, if any. Defaults to the ````metaObjectId```` parameter.\n * @returns {XKTMetaObject} The new {@link XKTMetaObject}.\n */\n createMetaObject(params) {\n\n if (!params) {\n throw \"[XKTModel.createMetaObject] Parameters expected: params\";\n }\n\n if (params.metaObjectId === null || params.metaObjectId === undefined) {\n throw \"[XKTModel.createMetaObject] Parameter expected: params.metaObjectId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more meta objects\");\n return;\n }\n\n if (this.metaObjects[params.metaObjectId]) {\n // console.error(\"XKTMetaObject already exists with this ID: \" + params.metaObjectId);\n return;\n }\n\n const metaObjectId = params.metaObjectId;\n const propertySetIds = params.propertySetIds;\n const metaObjectType = params.metaObjectType || \"Default\";\n const metaObjectName = params.metaObjectName || params.metaObjectId;\n const parentMetaObjectId = params.parentMetaObjectId;\n\n const metaObject = new XKTMetaObject(metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId);\n\n this.metaObjects[metaObjectId] = metaObject;\n this.metaObjectsList.push(metaObject);\n\n if (!parentMetaObjectId) {\n if (!this._rootMetaObject) {\n this._rootMetaObject = metaObject;\n }\n }\n\n return metaObject;\n }\n\n /**\n * Creates an {@link XKTTexture} within this XKTModel.\n *\n * Registers the new {@link XKTTexture} in {@link XKTModel#textures} and {@link XKTModel#texturesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureId Unique ID for the {@link XKTTexture}.\n * @param {String} [params.src] Source of an image file for the texture.\n * @param {Buffer} [params.imageData] Image data for the texture.\n * @param {Number} [params.mediaType] Media type (ie. MIME type) of ````imageData````. Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n * @param {Number} [params.width] Texture width, used with ````imageData````. Ignored for compressed textures.\n * @param {Number} [params.height] Texture height, used with ````imageData````. Ignored for compressed textures.\n * @param {Boolean} [params.compressed=true] Whether to compress the texture.\n * @param {Number} [params.minFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers less than one pixel. Supported\n * values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter},\n * {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}. Ignored for compressed textures.\n * @param {Number} [params.magFilter=LinearMipMapNearestFilter] How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}. Ignored for compressed textures.\n * @param {Number} [params.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @param {Number} [params.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * {@param {Number} [params.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. Ignored for compressed textures.\n * @returns {XKTTexture} The new {@link XKTTexture}.\n */\n createTexture(params) {\n\n if (!params) {\n throw \"[XKTModel.createTexture] Parameters expected: params\";\n }\n\n if (params.textureId === null || params.textureId === undefined) {\n throw \"[XKTModel.createTexture] Parameter expected: params.textureId\";\n }\n\n if (!params.imageData && !params.src) {\n throw \"[XKTModel.createTexture] Parameter expected: params.imageData or params.src\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textures\");\n return;\n }\n\n if (this.textures[params.textureId]) {\n console.error(\"XKTTexture already exists with this ID: \" + params.textureId);\n return;\n }\n\n if (params.src) {\n const fileExt = params.src.split('.').pop();\n if (fileExt !== \"jpg\" && fileExt !== \"jpeg\" && fileExt !== \"png\") {\n console.error(`XKTModel does not support image files with extension '${fileExt}' - won't create texture '${params.textureId}`);\n return;\n }\n }\n\n const textureId = params.textureId;\n\n const texture = new XKTTexture({\n textureId,\n imageData: params.imageData,\n mediaType: params.mediaType,\n minFilter: params.minFilter,\n magFilter: params.magFilter,\n wrapS: params.wrapS,\n wrapT: params.wrapT,\n wrapR: params.wrapR,\n width: params.width,\n height: params.height,\n compressed: (params.compressed !== false),\n src: params.src\n });\n\n this.textures[textureId] = texture;\n this.texturesList.push(texture);\n\n return texture;\n }\n\n /**\n * Creates an {@link XKTTextureSet} within this XKTModel.\n *\n * Registers the new {@link XKTTextureSet} in {@link XKTModel#textureSets} and {@link XKTModel#.textureSetsList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.textureSetId Unique ID for the {@link XKTTextureSet}.\n * @param {*} [params.colorTextureId] ID of *RGBA* base color {@link XKTTexture}, with color in *RGB* and alpha in *A*.\n * @param {*} [params.metallicRoughnessTextureId] ID of *RGBA* metal-roughness {@link XKTTexture}, with the metallic factor in *R*, and roughness factor in *G*.\n * @param {*} [params.normalsTextureId] ID of *RGBA* normal {@link XKTTexture}, with normal map vectors in *RGB*.\n * @param {*} [params.emissiveTextureId] ID of *RGBA* emissive {@link XKTTexture}, with emissive color in *RGB*.\n * @param {*} [params.occlusionTextureId] ID of *RGBA* occlusion {@link XKTTexture}, with occlusion factor in *R*.\n * @returns {XKTTextureSet} The new {@link XKTTextureSet}.\n */\n createTextureSet(params) {\n\n if (!params) {\n throw \"[XKTModel.createTextureSet] Parameters expected: params\";\n }\n\n if (params.textureSetId === null || params.textureSetId === undefined) {\n throw \"[XKTModel.createTextureSet] Parameter expected: params.textureSetId\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more textureSets\");\n return;\n }\n\n if (this.textureSets[params.textureSetId]) {\n console.error(\"XKTTextureSet already exists with this ID: \" + params.textureSetId);\n return;\n }\n\n let colorTexture;\n if (params.colorTextureId !== undefined && params.colorTextureId !== null) {\n colorTexture = this.textures[params.colorTextureId];\n if (!colorTexture) {\n console.error(`Texture not found: ${params.colorTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n colorTexture.channel = COLOR_TEXTURE;\n }\n\n let metallicRoughnessTexture;\n if (params.metallicRoughnessTextureId !== undefined && params.metallicRoughnessTextureId !== null) {\n metallicRoughnessTexture = this.textures[params.metallicRoughnessTextureId];\n if (!metallicRoughnessTexture) {\n console.error(`Texture not found: ${params.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n metallicRoughnessTexture.channel = METALLIC_ROUGHNESS_TEXTURE;\n }\n\n let normalsTexture;\n if (params.normalsTextureId !== undefined && params.normalsTextureId !== null) {\n normalsTexture = this.textures[params.normalsTextureId];\n if (!normalsTexture) {\n console.error(`Texture not found: ${params.normalsTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n normalsTexture.channel = NORMALS_TEXTURE;\n }\n\n let emissiveTexture;\n if (params.emissiveTextureId !== undefined && params.emissiveTextureId !== null) {\n emissiveTexture = this.textures[params.emissiveTextureId];\n if (!emissiveTexture) {\n console.error(`Texture not found: ${params.emissiveTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n emissiveTexture.channel = EMISSIVE_TEXTURE;\n }\n\n let occlusionTexture;\n if (params.occlusionTextureId !== undefined && params.occlusionTextureId !== null) {\n occlusionTexture = this.textures[params.occlusionTextureId];\n if (!occlusionTexture) {\n console.error(`Texture not found: ${params.occlusionTextureId} - ensure that you create it first with createTexture()`);\n return;\n }\n occlusionTexture.channel = OCCLUSION_TEXTURE;\n }\n\n const textureSet = new XKTTextureSet({\n textureSetId: params.textureSetId,\n textureSetIndex: this.textureSetsList.length,\n colorTexture,\n metallicRoughnessTexture,\n normalsTexture,\n emissiveTexture,\n occlusionTexture\n });\n\n this.textureSets[params.textureSetId] = textureSet;\n this.textureSetsList.push(textureSet);\n\n return textureSet;\n }\n\n /**\n * Creates an {@link XKTGeometry} within this XKTModel.\n *\n * Registers the new {@link XKTGeometry} in {@link XKTModel#geometries} and {@link XKTModel#geometriesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {Number} params.geometryId Unique ID for the {@link XKTGeometry}.\n * @param {String} params.primitiveType The type of {@link XKTGeometry}: \"triangles\", \"lines\" or \"points\".\n * @param {Float64Array} params.positions Floating-point Local-space vertex positions for the {@link XKTGeometry}. Required for all primitive types.\n * @param {Number[]} [params.normals] Floating-point vertex normals for the {@link XKTGeometry}. Only used with triangles primitives. Ignored for points and lines.\n * @param {Number[]} [params.colors] Floating-point RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Number[]} [params.uvs] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uv````.\n * @param {Number[]} [params.uv] Floating-point vertex UV coordinates for the {@link XKTGeometry}. Alias for ````uvs````.\n * @param {Number[]} [params.colorsCompressed] Integer RGBA vertex colors for the {@link XKTGeometry}. Required for points primitives. Ignored for lines and triangles.\n * @param {Uint32Array} [params.indices] Indices for the {@link XKTGeometry}. Required for triangles and lines primitives. Ignored for points.\n * @param {Number} [params.edgeThreshold=10]\n * @returns {XKTGeometry} The new {@link XKTGeometry}.\n */\n createGeometry(params) {\n\n if (!params) {\n throw \"[XKTModel.createGeometry] Parameters expected: params\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.geometryId\";\n }\n\n if (!params.primitiveType) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.primitiveType\";\n }\n\n if (!params.positions) {\n throw \"[XKTModel.createGeometry] Parameter expected: params.positions\";\n }\n\n const triangles = params.primitiveType === \"triangles\";\n const points = params.primitiveType === \"points\";\n const lines = params.primitiveType === \"lines\";\n const line_strip = params.primitiveType === \"line-strip\";\n const line_loop = params.primitiveType === \"line-loop\";\n const triangle_strip = params.primitiveType === \"triangle-strip\";\n const triangle_fan = params.primitiveType === \"triangle-fan\";\n\n if (!triangles && !points && !lines && !line_strip && !line_loop) {\n throw \"[XKTModel.createGeometry] Unsupported value for params.primitiveType: \"\n + params.primitiveType\n + \"' - supported values are 'triangles', 'points', 'lines', 'line-strip', 'triangle-strip' and 'triangle-fan\";\n }\n\n if (triangles) {\n if (!params.indices) {\n params.indices = this._createDefaultIndices()\n throw \"[XKTModel.createGeometry] Parameter expected for 'triangles' primitive: params.indices\";\n }\n }\n\n if (points) {\n if (!params.colors && !params.colorsCompressed) {\n console.error(\"[XKTModel.createGeometry] Parameter expected for 'points' primitive: params.colors or params.colorsCompressed\");\n return;\n }\n }\n\n if (lines) {\n if (!params.indices) {\n throw \"[XKTModel.createGeometry] Parameter expected for 'lines' primitive: params.indices\";\n }\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more geometries\");\n return;\n }\n\n if (this.geometries[params.geometryId]) {\n console.error(\"XKTGeometry already exists with this ID: \" + params.geometryId);\n return;\n }\n\n const geometryId = params.geometryId;\n const primitiveType = params.primitiveType;\n const positions = new Float64Array(params.positions); // May modify in #finalize\n\n const xktGeometryCfg = {\n geometryId: geometryId,\n geometryIndex: this.geometriesList.length,\n primitiveType: primitiveType,\n positions: positions,\n uvs: params.uvs || params.uv\n }\n\n if (triangles) {\n if (params.normals) {\n xktGeometryCfg.normals = new Float32Array(params.normals);\n }\n if (params.indices) {\n xktGeometryCfg.indices = params.indices;\n } else {\n xktGeometryCfg.indices = this._createDefaultIndices(positions.length / 3);\n }\n }\n\n if (points) {\n if (params.colorsCompressed) {\n xktGeometryCfg.colorsCompressed = new Uint8Array(params.colorsCompressed);\n\n } else {\n const colors = params.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = Math.floor(colors[i] * 255);\n }\n xktGeometryCfg.colorsCompressed = colorsCompressed;\n }\n }\n\n if (lines) {\n xktGeometryCfg.indices = params.indices;\n }\n\n if (triangles) {\n\n if (!params.normals && !params.uv && !params.uvs) {\n\n // Building models often duplicate positions to allow face-aligned vertex normals; when we're not\n // providing normals for a geometry, it becomes possible to merge duplicate vertex positions within it.\n\n // TODO: Make vertex merging also merge normals?\n\n const mergedPositions = [];\n const mergedIndices = [];\n mergeVertices(xktGeometryCfg.positions, xktGeometryCfg.indices, mergedPositions, mergedIndices);\n xktGeometryCfg.positions = new Float64Array(mergedPositions);\n xktGeometryCfg.indices = mergedIndices;\n }\n\n xktGeometryCfg.edgeIndices = buildEdgeIndices(xktGeometryCfg.positions, xktGeometryCfg.indices, null, params.edgeThreshold || this.edgeThreshold || 10);\n }\n\n const geometry = new XKTGeometry(xktGeometryCfg);\n\n this.geometries[geometryId] = geometry;\n this.geometriesList.push(geometry);\n\n return geometry;\n }\n\n _createDefaultIndices(numIndices) {\n const indices = [];\n for (let i = 0; i < numIndices; i++) {\n indices.push(i);\n }\n return indices;\n }\n\n /**\n * Creates an {@link XKTMesh} within this XKTModel.\n *\n * An {@link XKTMesh} can be owned by one {@link XKTEntity}, which can own multiple {@link XKTMesh}es.\n *\n * Registers the new {@link XKTMesh} in {@link XKTModel#meshes} and {@link XKTModel#meshesList}.\n *\n * @param {*} params Method parameters.\n * @param {Number} params.meshId Unique ID for the {@link XKTMesh}.\n * @param {Number} params.geometryId ID of an existing {@link XKTGeometry} in {@link XKTModel#geometries}.\n * @param {Number} [params.textureSetId] Unique ID of an {@link XKTTextureSet} in {@link XKTModel#textureSets}.\n * @param {Float32Array} params.color RGB color for the {@link XKTMesh}, with each color component in range [0..1].\n * @param {Number} [params.metallic=0] How metallic the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully dielectric material, while ````1```` indicates fully metallic.\n * @param {Number} [params.roughness=1] How rough the {@link XKTMesh} is, in range [0..1]. A value of ````0```` indicates fully smooth, while ````1```` indicates fully rough.\n * @param {Number} params.opacity Opacity factor for the {@link XKTMesh}, in range [0..1].\n * @param {Float64Array} [params.matrix] Modeling matrix for the {@link XKTMesh}. Overrides ````position````, ````scale```` and ````rotation```` parameters.\n * @param {Number[]} [params.position=[0,0,0]] Position of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.scale=[1,1,1]] Scale of the {@link XKTMesh}. Overridden by the ````matrix```` parameter.\n * @param {Number[]} [params.rotation=[0,0,0]] Rotation of the {@link XKTMesh} as Euler angles given in degrees, for each of the X, Y and Z axis. Overridden by the ````matrix```` parameter.\n * @returns {XKTMesh} The new {@link XKTMesh}.\n */\n createMesh(params) {\n\n if (params.meshId === null || params.meshId === undefined) {\n throw \"[XKTModel.createMesh] Parameter expected: params.meshId\";\n }\n\n if (params.geometryId === null || params.geometryId === undefined) {\n throw \"[XKTModel.createMesh] Parameter expected: params.geometryId\";\n }\n\n if (this.finalized) {\n throw \"[XKTModel.createMesh] XKTModel has been finalized, can't add more meshes\";\n }\n\n if (this.meshes[params.meshId]) {\n console.error(\"XKTMesh already exists with this ID: \" + params.meshId);\n return;\n }\n\n const geometry = this.geometries[params.geometryId];\n\n if (!geometry) {\n console.error(\"XKTGeometry not found: \" + params.geometryId);\n return;\n }\n\n geometry.numInstances++;\n\n let textureSet = null;\n if (params.textureSetId) {\n textureSet = this.textureSets[params.textureSetId];\n if (!textureSet) {\n console.error(\"XKTTextureSet not found: \" + params.textureSetId);\n return;\n }\n textureSet.numInstances++;\n }\n\n let matrix = params.matrix;\n\n if (!matrix) {\n\n const position = params.position;\n const scale = params.scale;\n const rotation = params.rotation;\n\n if (position || scale || rotation) {\n matrix = math.identityMat4();\n const quaternion = math.eulerToQuaternion(rotation || [0, 0, 0], \"XYZ\", math.identityQuaternion());\n math.composeMat4(position || [0, 0, 0], quaternion, scale || [1, 1, 1], matrix)\n\n } else {\n matrix = math.identityMat4();\n }\n }\n\n const meshIndex = this.meshesList.length;\n\n const mesh = new XKTMesh({\n meshId: params.meshId,\n meshIndex,\n matrix,\n geometry,\n color: params.color,\n metallic: params.metallic,\n roughness: params.roughness,\n opacity: params.opacity,\n textureSet\n });\n\n this.meshes[mesh.meshId] = mesh;\n this.meshesList.push(mesh);\n\n return mesh;\n }\n\n /**\n * Creates an {@link XKTEntity} within this XKTModel.\n *\n * Registers the new {@link XKTEntity} in {@link XKTModel#entities} and {@link XKTModel#entitiesList}.\n *\n * Logs error and does nothing if this XKTModel has been finalized (see {@link XKTModel#finalized}).\n *\n * @param {*} params Method parameters.\n * @param {String} params.entityId Unique ID for the {@link XKTEntity}.\n * @param {String[]} params.meshIds IDs of {@link XKTMesh}es used by the {@link XKTEntity}. Note that each {@link XKTMesh} can only be used by one {@link XKTEntity}.\n * @returns {XKTEntity} The new {@link XKTEntity}.\n */\n createEntity(params) {\n\n if (!params) {\n throw \"[XKTModel.createEntity] Parameters expected: params\";\n }\n\n if (params.entityId === null || params.entityId === undefined) {\n throw \"[XKTModel.createEntity] Parameter expected: params.entityId\";\n }\n\n if (!params.meshIds) {\n throw \"[XKTModel.createEntity] Parameter expected: params.meshIds\";\n }\n\n if (this.finalized) {\n console.error(\"XKTModel has been finalized, can't add more entities\");\n return;\n }\n\n if (params.meshIds.length === 0) {\n console.warn(\"XKTEntity has no meshes - won't create: \" + params.entityId);\n return;\n }\n\n let entityId = params.entityId;\n\n if (this.entities[entityId]) {\n while (this.entities[entityId]) {\n entityId = math.createUUID();\n }\n console.error(\"XKTEntity already exists with this ID: \" + params.entityId + \" - substituting random ID instead: \" + entityId);\n }\n\n const meshIds = params.meshIds;\n const meshes = [];\n\n for (let meshIdIdx = 0, meshIdLen = meshIds.length; meshIdIdx < meshIdLen; meshIdIdx++) {\n\n const meshId = meshIds[meshIdIdx];\n const mesh = this.meshes[meshId];\n\n if (!mesh) {\n console.error(\"XKTMesh found: \" + meshId);\n continue;\n }\n\n if (mesh.entity) {\n console.error(\"XKTMesh \" + meshId + \" already used by XKTEntity \" + mesh.entity.entityId);\n continue;\n }\n\n meshes.push(mesh);\n }\n\n const entity = new XKTEntity(entityId, meshes);\n\n for (let i = 0, len = meshes.length; i < len; i++) {\n const mesh = meshes[i];\n mesh.entity = entity;\n }\n\n this.entities[entityId] = entity;\n this.entitiesList.push(entity);\n\n return entity;\n }\n\n /**\n * Creates a default {@link XKTMetaObject} for each {@link XKTEntity} that does not already have one.\n */\n createDefaultMetaObjects() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const metaObjectId = entity.entityId;\n const metaObject = this.metaObjects[metaObjectId];\n\n if (!metaObject) {\n\n if (!this._rootMetaObject) {\n this._rootMetaObject = this.createMetaObject({\n metaObjectId: this.modelId,\n metaObjectType: \"Default\",\n metaObjectName: this.modelId\n });\n }\n\n this.createMetaObject({\n metaObjectId: metaObjectId,\n metaObjectType: \"Default\",\n metaObjectName: \"\" + metaObjectId,\n parentMetaObjectId: this._rootMetaObject.metaObjectId\n });\n }\n }\n }\n\n /**\n * Finalizes this XKTModel.\n *\n * After finalizing, we may then serialize the model to an array buffer using {@link writeXKTModelToArrayBuffer}.\n *\n * Logs error and does nothing if this XKTModel has already been finalized.\n *\n * Internally, this method:\n *\n * * for each {@link XKTEntity} that doesn't already have a {@link XKTMetaObject}, creates one with {@link XKTMetaObject#metaObjectType} set to \"default\"\n * * sets each {@link XKTEntity}'s {@link XKTEntity#hasReusedGeometries} true if it shares its {@link XKTGeometry}s with other {@link XKTEntity}s,\n * * creates each {@link XKTEntity}'s {@link XKTEntity#aabb},\n * * creates {@link XKTTile}s in {@link XKTModel#tilesList}, and\n * * sets {@link XKTModel#finalized} ````true````.\n */\n async finalize() {\n\n if (this.finalized) {\n console.log(\"XKTModel already finalized\");\n return;\n }\n\n this._removeUnusedTextures();\n\n await this._compressTextures();\n\n this._bakeSingleUseGeometryPositions();\n\n this._bakeAndOctEncodeNormals();\n\n this._createEntityAABBs();\n\n const rootKDNode = this._createKDTree();\n\n this.entitiesList = [];\n\n this._createTilesFromKDTree(rootKDNode);\n\n this._createReusedGeometriesDecodeMatrix();\n\n this._flagSolidGeometries();\n\n this.aabb.set(rootKDNode.aabb);\n\n this.finalized = true;\n }\n\n _removeUnusedTextures() {\n let texturesList = [];\n const textures = {};\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n if (texture.channel !== null) {\n texture.textureIndex = texturesList.length;\n texturesList.push(texture);\n textures[texture.textureId] = texture;\n }\n }\n this.texturesList = texturesList;\n this.textures = textures;\n }\n\n _compressTextures() {\n let countTextures = this.texturesList.length;\n return new Promise((resolve) => {\n if (countTextures === 0) {\n resolve();\n return;\n }\n for (let i = 0, leni = this.texturesList.length; i < leni; i++) {\n const texture = this.texturesList[i];\n const encodingOptions = TEXTURE_ENCODING_OPTIONS[texture.channel] || {};\n\n if (texture.src) {\n\n // XKTTexture created with XKTModel#createTexture({ src: ... })\n\n const src = texture.src;\n const fileExt = src.split('.').pop();\n switch (fileExt) {\n case \"jpeg\":\n case \"jpg\":\n case \"png\":\n load(src, ImageLoader, {\n image: {\n type: \"data\"\n }\n }).then((imageData) => {\n if (texture.compressed) {\n encode(imageData, KTX2BasisWriter, encodingOptions).then((encodedData) => {\n const encodedImageData = new Uint8Array(encodedData);\n texture.imageData = encodedImageData;\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to load image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n break;\n default:\n if (--countTextures <= 0) {\n resolve();\n }\n break;\n }\n }\n\n if (texture.imageData) {\n\n // XKTTexture created with XKTModel#createTexture({ imageData: ... })\n\n if (texture.compressed) {\n encode(texture.imageData, KTX2BasisWriter, encodingOptions)\n .then((encodedImageData) => {\n texture.imageData = new Uint8Array(encodedImageData);\n if (--countTextures <= 0) {\n resolve();\n }\n }).catch((err) => {\n console.error(\"[XKTModel.finalize] Failed to encode image: \" + err);\n if (--countTextures <= 0) {\n resolve();\n }\n });\n } else {\n texture.imageData = new Uint8Array(1);\n if (--countTextures <= 0) {\n resolve();\n }\n }\n }\n }\n });\n }\n\n _bakeSingleUseGeometryPositions() {\n\n for (let j = 0, lenj = this.meshesList.length; j < lenj; j++) {\n\n const mesh = this.meshesList[j];\n\n const geometry = mesh.geometry;\n\n if (geometry.numInstances === 1) {\n\n const matrix = mesh.matrix;\n\n if (matrix && (!math.isIdentityMat4(matrix))) {\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n\n positions[i + 0] = tempVec4b[0];\n positions[i + 1] = tempVec4b[1];\n positions[i + 2] = tempVec4b[2];\n }\n }\n }\n }\n }\n\n _bakeAndOctEncodeNormals() {\n\n for (let i = 0, len = this.meshesList.length; i < len; i++) {\n\n const mesh = this.meshesList[i];\n const geometry = mesh.geometry;\n\n if (geometry.normals && !geometry.normalsOctEncoded) {\n\n geometry.normalsOctEncoded = new Int8Array(geometry.normals.length);\n\n if (geometry.numInstances > 1) {\n geometryCompression.octEncodeNormals(geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n\n } else {\n const modelNormalMatrix = math.inverseMat4(math.transposeMat4(mesh.matrix, tempMat4), tempMat4b);\n geometryCompression.transformAndOctEncodeNormals(modelNormalMatrix, geometry.normals, geometry.normals.length, geometry.normalsOctEncoded, 0);\n }\n }\n }\n }\n\n _createEntityAABBs() {\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n\n const entity = this.entitiesList[i];\n const entityAABB = entity.aabb;\n const meshes = entity.meshes;\n\n math.collapseAABB3(entityAABB);\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n const matrix = mesh.matrix;\n\n if (geometry.numInstances > 1) {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n tempVec4a[3] = 1;\n math.transformPoint4(matrix, tempVec4a, tempVec4b);\n math.expandAABB3Point3(entityAABB, tempVec4b);\n }\n\n } else {\n\n const positions = geometry.positions;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n tempVec4a[0] = positions[i + 0];\n tempVec4a[1] = positions[i + 1];\n tempVec4a[2] = positions[i + 2];\n math.expandAABB3Point3(entityAABB, tempVec4a);\n }\n }\n }\n }\n }\n\n _createKDTree() {\n\n let aabb;\n if (this.modelAABB) {\n aabb = this.modelAABB; // Pre-known uber AABB\n } else {\n aabb = math.collapseAABB3();\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n math.expandAABB3(aabb, entity.aabb);\n }\n }\n\n const rootKDNode = new KDNode(aabb);\n\n for (let i = 0, len = this.entitiesList.length; i < len; i++) {\n const entity = this.entitiesList[i];\n this._insertEntityIntoKDTree(rootKDNode, entity);\n }\n\n return rootKDNode;\n }\n\n _insertEntityIntoKDTree(kdNode, entity) {\n\n const nodeAABB = kdNode.aabb;\n const entityAABB = entity.aabb;\n\n const nodeAABBDiag = math.getAABB3Diag(nodeAABB);\n\n if (nodeAABBDiag < this.minTileSize) {\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n math.expandAABB3(nodeAABB, entityAABB);\n return;\n }\n\n if (kdNode.left) {\n if (math.containsAABB3(kdNode.left.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (kdNode.right) {\n if (math.containsAABB3(kdNode.right.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdTreeDimLength[0] = nodeAABB[3] - nodeAABB[0];\n kdTreeDimLength[1] = nodeAABB[4] - nodeAABB[1];\n kdTreeDimLength[2] = nodeAABB[5] - nodeAABB[2];\n\n let dim = 0;\n\n if (kdTreeDimLength[1] > kdTreeDimLength[dim]) {\n dim = 1;\n }\n\n if (kdTreeDimLength[2] > kdTreeDimLength[dim]) {\n dim = 2;\n }\n\n if (!kdNode.left) {\n const aabbLeft = nodeAABB.slice();\n aabbLeft[dim + 3] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.left = new KDNode(aabbLeft);\n if (math.containsAABB3(aabbLeft, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity);\n return;\n }\n }\n\n if (!kdNode.right) {\n const aabbRight = nodeAABB.slice();\n aabbRight[dim] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.right = new KDNode(aabbRight);\n if (math.containsAABB3(aabbRight, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity);\n return;\n }\n }\n\n kdNode.entities = kdNode.entities || [];\n kdNode.entities.push(entity);\n\n math.expandAABB3(nodeAABB, entityAABB);\n }\n\n _createTilesFromKDTree(rootKDNode) {\n this._createTilesFromKDNode(rootKDNode);\n }\n\n _createTilesFromKDNode(kdNode) {\n if (kdNode.entities && kdNode.entities.length > 0) {\n this._createTileFromEntities(kdNode);\n }\n if (kdNode.left) {\n this._createTilesFromKDNode(kdNode.left);\n }\n if (kdNode.right) {\n this._createTilesFromKDNode(kdNode.right);\n }\n }\n\n /**\n * Creates a tile from the given entities.\n *\n * For each single-use {@link XKTGeometry}, this method centers {@link XKTGeometry#positions} to make them relative to the\n * tile's center, then quantizes the positions to unsigned 16-bit integers, relative to the tile's boundary.\n *\n * @param kdNode\n */\n _createTileFromEntities(kdNode) {\n\n const tileAABB = kdNode.aabb;\n const entities = kdNode.entities;\n\n const tileCenter = math.getAABB3Center(tileAABB);\n const tileCenterNeg = math.mulVec3Scalar(tileCenter, -1, math.vec3());\n\n const rtcAABB = math.AABB3(); // AABB centered at the RTC origin\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n for (let i = 0; i < entities.length; i++) {\n\n const entity = entities [i];\n\n const meshes = entity.meshes;\n\n for (let j = 0, lenj = meshes.length; j < lenj; j++) {\n\n const mesh = meshes[j];\n const geometry = mesh.geometry;\n\n if (!geometry.reused) { // Batched geometry\n\n const positions = geometry.positions;\n\n // Center positions relative to their tile's World-space center\n\n for (let k = 0, lenk = positions.length; k < lenk; k += 3) {\n\n positions[k + 0] -= tileCenter[0];\n positions[k + 1] -= tileCenter[1];\n positions[k + 2] -= tileCenter[2];\n }\n\n // Quantize positions relative to tile's RTC-space boundary\n\n geometryCompression.quantizePositions(positions, positions.length, rtcAABB, geometry.positionsQuantized);\n\n } else { // Instanced geometry\n\n // Post-multiply a translation to the mesh's modeling matrix\n // to center the entity's geometry instances to the tile RTC center\n\n //////////////////////////////\n // Why do we do this?\n // Seems to break various models\n /////////////////////////////////\n\n math.translateMat4v(tileCenterNeg, mesh.matrix);\n }\n }\n\n entity.entityIndex = this.entitiesList.length;\n\n this.entitiesList.push(entity);\n }\n\n const tile = new XKTTile(tileAABB, entities);\n\n this.tilesList.push(tile);\n }\n\n _createReusedGeometriesDecodeMatrix() {\n\n const tempVec3a = math.vec3();\n const reusedGeometriesAABB = math.collapseAABB3(math.AABB3());\n let countReusedGeometries = 0;\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) { // Instanced geometry\n\n const positions = geometry.positions;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n math.expandAABB3Point3(reusedGeometriesAABB, tempVec3a);\n }\n\n countReusedGeometries++;\n }\n }\n\n if (countReusedGeometries > 0) {\n\n geometryCompression.createPositionsDecodeMatrix(reusedGeometriesAABB, this.reusedGeometriesDecodeMatrix);\n\n for (let geometryIndex = 0, numGeometries = this.geometriesList.length; geometryIndex < numGeometries; geometryIndex++) {\n\n const geometry = this.geometriesList [geometryIndex];\n\n if (geometry.reused) {\n geometryCompression.quantizePositions(geometry.positions, geometry.positions.length, reusedGeometriesAABB, geometry.positionsQuantized);\n }\n }\n\n } else {\n math.identityMat4(this.reusedGeometriesDecodeMatrix); // No need for this matrix, but we'll be tidy and set it to identity\n }\n }\n\n _flagSolidGeometries() {\n let maxNumPositions = 0;\n let maxNumIndices = 0;\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n if (geometry.positionsQuantized.length > maxNumPositions) {\n maxNumPositions = geometry.positionsQuantized.length;\n }\n if (geometry.indices.length > maxNumIndices) {\n maxNumIndices = geometry.indices.length;\n }\n }\n }\n let vertexIndexMapping = new Array(maxNumPositions / 3);\n let edges = new Array(maxNumIndices);\n for (let i = 0, len = this.geometriesList.length; i < len; i++) {\n const geometry = this.geometriesList[i];\n if (geometry.primitiveType === \"triangles\") {\n geometry.solid = isTriangleMeshSolid(geometry.indices, geometry.positionsQuantized, vertexIndexMapping, edges);\n }\n }\n }\n}\n\nexport {\n XKTModel\n}","/**\n * A property set within an {@link XKTModel}.\n *\n * These are shared among {@link XKTMetaObject}s.\n *\n * * Created by {@link XKTModel#createPropertySet}\n * * Stored in {@link XKTModel#propertySets} and {@link XKTModel#propertySetsList}\n * * Has an ID, a type, and a human-readable name\n *\n * @class XKTPropertySet\n */\nclass XKTPropertySet {\n\n /**\n * @private\n */\n constructor(propertySetId, propertySetType, propertySetName, properties) {\n\n /**\n * Unique ID of this ````XKTPropertySet```` in {@link XKTModel#propertySets}.\n *\n * @type {String}\n */\n this.propertySetId = propertySetId;\n\n /**\n * Indicates the ````XKTPropertySet````'s type.\n *\n * This defaults to \"default\".\n *\n * @type {string}\n */\n this.propertySetType = propertySetType;\n\n /**\n * Indicates the XKTPropertySet meta object name.\n *\n * This defaults to {@link XKTPropertySet#propertySetId}.\n *\n * @type {string}\n */\n this.propertySetName = propertySetName;\n\n /**\n * The properties within this ````XKTPropertySet````.\n *\n * @type {*[]}\n */\n this.properties = properties;\n }\n}\n\nexport {XKTPropertySet};","/**\n * A texture shared by {@link XKTTextureSet}s.\n *\n * * Created by {@link XKTModel#createTexture}\n * * Stored in {@link XKTTextureSet#textures}, {@link XKTModel#textures} and {@link XKTModel#texturesList}\n *\n * @class XKTTexture\n */\nimport {RepeatWrapping, LinearMipMapNearestFilter} from \"../constants\";\n\nclass XKTTexture {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTexture in {@link XKTModel#textures}.\n *\n * @type {Number}\n */\n this.textureId = cfg.textureId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureIndex = cfg.textureIndex;\n\n /**\n * Texture image data.\n *\n * @type {Buffer}\n */\n this.imageData = cfg.imageData;\n\n /**\n * Which material channel this texture is applied to, as determined by its {@link XKTTextureSet}s.\n *\n * @type {Number}\n */\n this.channel = null;\n\n /**\n * Width of this XKTTexture.\n *\n * @type {Number}\n */\n this.width = cfg.width;\n\n /**\n * Height of this XKTTexture.\n *\n * @type {Number}\n */\n this.height = cfg.height;\n\n /**\n * Texture file source.\n *\n * @type {String}\n */\n this.src = cfg.src;\n\n /**\n * Whether this XKTTexture is to be compressed.\n *\n * @type {Boolean}\n */\n this.compressed = (!!cfg.compressed);\n\n /**\n * Media type of this XKTTexture.\n *\n * Supported values are {@link GIFMediaType}, {@link PNGMediaType} and {@link JPEGMediaType}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.mediaType = cfg.mediaType;\n\n /**\n * How the texture is sampled when a texel covers less than one pixel. Supported values\n * are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter},\n * {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter}\n * and {@link LinearMipMapLinearFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.minFilter = cfg.minFilter || LinearMipMapNearestFilter;\n\n /**\n * How the texture is sampled when a texel covers more than one pixel. Supported values\n * are {@link LinearFilter} and {@link NearestFilter}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.magFilter = cfg.magFilter || LinearMipMapNearestFilter;\n\n /**\n * S wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapS = cfg.wrapS || RepeatWrapping;\n\n /**\n * T wrapping mode.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * Ignored for compressed textures.\n *\n * @type {Number}\n */\n this.wrapT = cfg.wrapT || RepeatWrapping;\n\n /**\n * R wrapping mode.\n *\n * Ignored for compressed textures.\n *\n * Supported values are {@link ClampToEdgeWrapping},\n * {@link MirroredRepeatWrapping} and {@link RepeatWrapping}.\n *\n * @type {*|number}\n */\n this.wrapR = cfg.wrapR || RepeatWrapping\n }\n}\n\nexport {XKTTexture};","/**\n * A set of textures shared by {@link XKTMesh}es.\n *\n * * Created by {@link XKTModel#createTextureSet}\n * * Registered in {@link XKTMesh#material}, {@link XKTModel#materials} and {@link XKTModel#.textureSetsList}\n *\n * @class XKTMetalRoughMaterial\n */\nclass XKTTextureSet {\n\n /**\n * @private\n */\n constructor(cfg) {\n\n /**\n * Unique ID of this XKTTextureSet in {@link XKTModel#materials}.\n *\n * @type {Number}\n */\n this.textureSetId = cfg.textureSetId;\n\n /**\n * Index of this XKTTexture in {@link XKTModel#texturesList};\n *\n * @type {Number}\n */\n this.textureSetIndex = cfg.textureSetIndex;\n\n /**\n * Identifies the material type.\n *\n * @type {Number}\n */\n this.materialType = cfg.materialType;\n\n /**\n * Index of this XKTTextureSet in {@link XKTModel#meshesList};\n *\n * @type {Number}\n */\n this.materialIndex = cfg.materialIndex;\n\n /**\n * The number of {@link XKTMesh}s that reference this XKTTextureSet.\n *\n * @type {Number}\n */\n this.numInstances = 0;\n\n /**\n * RGBA {@link XKTTexture} containing base color in RGB and opacity in A.\n *\n * @type {XKTTexture}\n */\n this.colorTexture = cfg.colorTexture;\n\n /**\n * RGBA {@link XKTTexture} containing metallic and roughness factors in R and G.\n *\n * @type {XKTTexture}\n */\n this.metallicRoughnessTexture = cfg.metallicRoughnessTexture;\n\n /**\n * RGBA {@link XKTTexture} with surface normals in RGB.\n *\n * @type {XKTTexture}\n */\n this.normalsTexture = cfg.normalsTexture;\n\n /**\n * RGBA {@link XKTTexture} with emissive color in RGB.\n *\n * @type {XKTTexture}\n */\n this.emissiveTexture = cfg.emissiveTexture;\n\n /**\n * RGBA {@link XKTTexture} with ambient occlusion factors in RGB.\n *\n * @type {XKTTexture}\n */\n this.occlusionTexture = cfg.occlusionTexture;\n }\n}\n\nexport {XKTTextureSet};","/**\n * @desc A box-shaped 3D region within an {@link XKTModel} that contains {@link XKTEntity}s.\n *\n * * Created by {@link XKTModel#finalize}\n * * Stored in {@link XKTModel#tilesList}\n *\n * @class XKTTile\n */\nclass XKTTile {\n\n /**\n * Creates a new XKTTile.\n *\n * @private\n * @param aabb\n * @param entities\n */\n constructor(aabb, entities) {\n\n /**\n * Axis-aligned World-space bounding box that encloses the {@link XKTEntity}'s within this Tile.\n *\n * @type {Float64Array}\n */\n this.aabb = aabb;\n\n /**\n * The {@link XKTEntity}'s within this XKTTile.\n *\n * @type {XKTEntity[]}\n */\n this.entities = entities;\n }\n}\n\nexport {XKTTile};","import {math} from \"../../lib/math.js\";\n\n/**\n * @private\n */\nconst buildEdgeIndices = (function () {\n\n const uniquePositions = [];\n const indicesLookup = [];\n const indicesReverseLookup = [];\n const weldedIndices = [];\n\n// TODO: Optimize with caching, but need to cater to both compressed and uncompressed positions\n\n const faces = [];\n let numFaces = 0;\n const compa = new Uint16Array(3);\n const compb = new Uint16Array(3);\n const compc = new Uint16Array(3);\n const a = math.vec3();\n const b = math.vec3();\n const c = math.vec3();\n const cb = math.vec3();\n const ab = math.vec3();\n const cross = math.vec3();\n const normal = math.vec3();\n const inverseNormal = math.vec3();\n\n function weldVertices(positions, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = Math.pow(10, precisionPoints);\n let i;\n let len;\n let lenUniquePositions = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = Math.round(vx * precision) + '_' + Math.round(vy * precision) + '_' + Math.round(vz * precision);\n if (positionsMap[key] === undefined) {\n positionsMap[key] = lenUniquePositions / 3;\n uniquePositions[lenUniquePositions++] = vx;\n uniquePositions[lenUniquePositions++] = vy;\n uniquePositions[lenUniquePositions++] = vz;\n }\n indicesLookup[i / 3] = positionsMap[key];\n }\n for (i = 0, len = indices.length; i < len; i++) {\n weldedIndices[i] = indicesLookup[indices[i]];\n indicesReverseLookup[weldedIndices[i]] = indices[i];\n }\n }\n\n function buildFaces(numIndices, positionsDecodeMatrix) {\n numFaces = 0;\n for (let i = 0, len = numIndices; i < len; i += 3) {\n const ia = ((weldedIndices[i]) * 3);\n const ib = ((weldedIndices[i + 1]) * 3);\n const ic = ((weldedIndices[i + 2]) * 3);\n if (positionsDecodeMatrix) {\n compa[0] = uniquePositions[ia];\n compa[1] = uniquePositions[ia + 1];\n compa[2] = uniquePositions[ia + 2];\n compb[0] = uniquePositions[ib];\n compb[1] = uniquePositions[ib + 1];\n compb[2] = uniquePositions[ib + 2];\n compc[0] = uniquePositions[ic];\n compc[1] = uniquePositions[ic + 1];\n compc[2] = uniquePositions[ic + 2];\n // Decode\n math.decompressPosition(compa, positionsDecodeMatrix, a);\n math.decompressPosition(compb, positionsDecodeMatrix, b);\n math.decompressPosition(compc, positionsDecodeMatrix, c);\n } else {\n a[0] = uniquePositions[ia];\n a[1] = uniquePositions[ia + 1];\n a[2] = uniquePositions[ia + 2];\n b[0] = uniquePositions[ib];\n b[1] = uniquePositions[ib + 1];\n b[2] = uniquePositions[ib + 2];\n c[0] = uniquePositions[ic];\n c[1] = uniquePositions[ic + 1];\n c[2] = uniquePositions[ic + 2];\n }\n math.subVec3(c, b, cb);\n math.subVec3(a, b, ab);\n math.cross3Vec3(cb, ab, cross);\n math.normalizeVec3(cross, normal);\n const face = faces[numFaces] || (faces[numFaces] = {normal: math.vec3()});\n face.normal[0] = normal[0];\n face.normal[1] = normal[1];\n face.normal[2] = normal[2];\n numFaces++;\n }\n }\n\n return function (positions, indices, positionsDecodeMatrix, edgeThreshold) {\n weldVertices(positions, indices);\n buildFaces(indices.length, positionsDecodeMatrix);\n const edgeIndices = [];\n const thresholdDot = Math.cos(math.DEGTORAD * edgeThreshold);\n const edges = {};\n let edge1;\n let edge2;\n let index1;\n let index2;\n let key;\n let largeIndex = false;\n let edge;\n let normal1;\n let normal2;\n let dot;\n let ia;\n let ib;\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const faceIndex = i / 3;\n for (let j = 0; j < 3; j++) {\n edge1 = weldedIndices[i + j];\n edge2 = weldedIndices[i + ((j + 1) % 3)];\n index1 = Math.min(edge1, edge2);\n index2 = Math.max(edge1, edge2);\n key = index1 + ',' + index2;\n if (edges[key] === undefined) {\n edges[key] = {\n index1: index1,\n index2: index2,\n face1: faceIndex,\n face2: undefined,\n };\n } else {\n edges[key].face2 = faceIndex;\n }\n }\n }\n for (key in edges) {\n edge = edges[key];\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n if (edge.face2 !== undefined) {\n normal1 = faces[edge.face1].normal;\n normal2 = faces[edge.face2].normal;\n inverseNormal[0] = -normal2[0];\n inverseNormal[1] = -normal2[1];\n inverseNormal[2] = -normal2[2];\n dot = Math.abs(math.dotVec3(normal1, normal2));\n const dot2 = Math.abs(math.dotVec3(normal1, inverseNormal));\n if (dot > thresholdDot && dot2 > thresholdDot) {\n continue;\n }\n }\n ia = indicesReverseLookup[edge.index1];\n ib = indicesReverseLookup[edge.index2];\n if (!largeIndex && ia > 65535 || ib > 65535) {\n largeIndex = true;\n }\n edgeIndices.push(ia);\n edgeIndices.push(ib);\n }\n return (largeIndex) ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices);\n };\n})();\n\n\nexport {buildEdgeIndices};","import {math} from \"../../lib/math.js\";\n\nfunction quantizePositions (positions, lenPositions, aabb, quantizedPositions) {\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n const xMultiplier = maxInt / xwid;\n const yMultiplier = maxInt / ywid;\n const zMultiplier = maxInt / zwid;\n const verify = (num) => num >= 0 ? num : 0;\n for (let i = 0; i < lenPositions; i += 3) {\n quantizedPositions[i + 0] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 0] - xmin) * xMultiplier)));\n quantizedPositions[i + 1] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 1] - ymin) * yMultiplier)));\n quantizedPositions[i + 2] = Math.max(0, Math.min(65535,Math.floor(verify(positions[i + 2] - zmin) * zMultiplier)));\n }\n}\n\nfunction compressPosition(p, aabb, q) {\n const multiplier = new Float32Array([\n aabb[3] !== aabb[0] ? 65535 / (aabb[3] - aabb[0]) : 0,\n aabb[4] !== aabb[1] ? 65535 / (aabb[4] - aabb[1]) : 0,\n aabb[5] !== aabb[2] ? 65535 / (aabb[5] - aabb[2]) : 0\n ]);\n q[0] = Math.max(0, Math.min(65535, Math.floor((p[0] - aabb[0]) * multiplier[0])));\n q[1] = Math.max(0, Math.min(65535, Math.floor((p[1] - aabb[1]) * multiplier[1])));\n q[2] = Math.max(0, Math.min(65535, Math.floor((p[2] - aabb[2]) * multiplier[2])));\n}\n\nvar createPositionsDecodeMatrix = (function () {\n const translate = math.mat4();\n const scale = math.mat4();\n return function (aabb, positionsDecodeMatrix) {\n positionsDecodeMatrix = positionsDecodeMatrix || math.mat4();\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n math.identityMat4(translate);\n math.translationMat4v(aabb, translate);\n math.identityMat4(scale);\n math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale);\n math.mulMat4(translate, scale, positionsDecodeMatrix);\n return positionsDecodeMatrix;\n };\n})();\n\nfunction transformAndOctEncodeNormals(modelNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n let i, ei;\n let localNormal = math.vec3();\n let worldNormal = math.vec3();\n for (i = 0; i < lenNormals; i += 3) {\n localNormal[0] = normals[i];\n localNormal[1] = normals[i + 1];\n localNormal[2] = normals[i + 2];\n\n math.transformVec3(modelNormalMatrix, localNormal, worldNormal);\n math.normalizeVec3(worldNormal, worldNormal);\n\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(worldNormal, 0, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(worldNormal, 0, dec);\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, 0, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, 0, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\nfunction octEncodeNormals(normals, lenNormals, compressedNormals, lenCompressedNormals) { // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n for (let i = 0; i < lenNormals; i += 3) {\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(normals, i, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(normals, i, dec);\n oct = octEncodeVec3(normals, i, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(normals, i, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(normals, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3(array, i, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = array[i] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n let y = array[i + 1] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n if (array[i + 2] < 0) {\n let tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n let tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * Decode an oct-encoded normal\n */\nfunction octDecodeVec2(oct) {\n let x = oct[0];\n let y = oct[1];\n x /= x < 0 ? 127 : 128;\n y /= y < 0 ? 127 : 128;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n return [\n x / length,\n y / length,\n z / length\n ];\n}\n\n/**\n * Dot product of a normal in an array against a candidate decoding\n * @private\n */\nfunction dot(array, i, vec3) {\n return array[i] * vec3[0] + array[i + 1] * vec3[1] + array[i + 2] * vec3[2];\n}\n\n/**\n * @private\n */\nconst geometryCompression = {\n quantizePositions,\n compressPosition,\n createPositionsDecodeMatrix,\n transformAndOctEncodeNormals,\n octEncodeNormals,\n};\n\nexport {geometryCompression}","/**\n * Uses edge adjacency counts to identify if the given triangle mesh can be rendered with backface culling enabled.\n *\n * If all edges are connected to exactly two triangles, then the mesh will likely be a closed solid, and we can safely\n * render it with backface culling enabled.\n *\n * Otherwise, the mesh is a surface, and we must render it with backface culling disabled.\n *\n * @private\n */\nconst isTriangleMeshSolid = (indices, positions, vertexIndexMapping, edges) => {\n\n function compareIndexPositions(a, b)\n {\n let posA, posB;\n\n for (let i = 0; i < 3; i++) {\n posA = positions [a*3+i];\n posB = positions [b*3+i];\n\n if (posA !== posB) {\n return posB - posA;\n }\n }\n\n return 0;\n };\n\n // Group together indices corresponding to same position coordinates\n let newIndices = indices.slice ().sort (compareIndexPositions);\n\n // Calculate the mapping:\n // - from original index in indices array\n // - to indices-for-unique-positions\n let uniqueVertexIndex = null;\n\n for (let i = 0, len = newIndices.length; i < len; i++) {\n if (i == 0 || 0 != compareIndexPositions (\n newIndices[i],\n newIndices[i-1],\n )) {\n // different position\n uniqueVertexIndex = newIndices [i];\n }\n\n vertexIndexMapping [\n newIndices[i]\n ] = uniqueVertexIndex;\n }\n\n // Generate the list of edges\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const a = vertexIndexMapping[indices[i]];\n const b = vertexIndexMapping[indices[i+1]];\n const c = vertexIndexMapping[indices[i+2]];\n\n let a2 = a;\n let b2 = b;\n let c2 = c;\n\n if (a > b && a > c) {\n if (b > c) {\n a2 = a;\n b2 = b;\n c2 = c;\n } else {\n a2 = a;\n b2 = c;\n c2 = b;\n }\n } else if (b > a && b > c) {\n if (a > c) {\n a2 = b;\n b2 = a;\n c2 = c;\n } else {\n a2 = b;\n b2 = c;\n c2 = a;\n }\n } else if (c > a && c > b) {\n if (a > b) {\n a2 = c;\n b2 = a;\n c2 = b;\n } else {\n a2 = c;\n b2 = b;\n c2 = a;\n }\n }\n\n edges[i+0] = [\n a2, b2\n ];\n edges[i+1] = [\n b2, c2\n ];\n\n if (a2 > c2) {\n const temp = c2;\n c2 = a2;\n a2 = temp;\n }\n\n edges[i+2] = [\n c2, a2\n ];\n }\n\n // Group semantically equivalent edgdes together\n function compareEdges (e1, e2) {\n let a, b;\n\n for (let i = 0; i < 2; i++) {\n a = e1[i];\n b = e2[i];\n\n if (b !== a) {\n return b - a;\n }\n }\n\n return 0;\n }\n\n edges = edges.slice(0, indices.length);\n\n edges.sort (compareEdges);\n\n // Make sure each edge is used exactly twice\n let sameEdgeCount = 0;\n\n for (let i = 0; i < edges.length; i++)\n {\n if (i === 0 || 0 !== compareEdges (\n edges[i], edges[i-1]\n )) {\n // different edge\n if (0 !== i && sameEdgeCount !== 2)\n {\n return false;\n }\n\n sameEdgeCount = 1;\n }\n else\n {\n // same edge\n sameEdgeCount++;\n }\n }\n\n if (edges.length > 0 && sameEdgeCount !== 2)\n {\n return false;\n }\n\n // Each edge is used exactly twice, this is a\n // watertight surface and hence a solid geometry.\n return true;\n};\n\nexport {isTriangleMeshSolid};","/**\n * @private\n * @param buf\n * @returns {ArrayBuffer}\n */\nexport function toArrayBuffer(buf) {\n const ab = new ArrayBuffer(buf.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n}","function isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\n\nfunction apply(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n o2[name] = o[name];\n }\n }\n return o2;\n}\n\n/**\n * @private\n */\nconst utils = {\n isString,\n apply\n};\n\nexport {utils};\n","import {XKT_INFO} from \"../XKT_INFO.js\";\nimport * as pako from 'pako';\n\nconst XKT_VERSION = XKT_INFO.xktVersion;\nconst NUM_TEXTURE_ATTRIBUTES = 9;\nconst NUM_MATERIAL_ATTRIBUTES = 6;\n\n/**\n * Writes an {@link XKTModel} to an {@link ArrayBuffer}.\n *\n * @param {XKTModel} xktModel The {@link XKTModel}.\n * @param {String} metaModelJSON The metamodel JSON in a string.\n * @param {Object} [stats] Collects statistics.\n * @param {Object} options Options for how the XKT is written.\n * @param {Boolean} [options.zip=true] ZIP the contents?\n * @returns {ArrayBuffer} The {@link ArrayBuffer}.\n */\nfunction writeXKTModelToArrayBuffer(xktModel, metaModelJSON, stats, options) {\n if (! options.zip) {\n return writeXKTModelToArrayBufferUncompressed(xktModel, metaModelJSON, stats);\n }\n const data = getModelData(xktModel, metaModelJSON, stats);\n const deflatedData = deflateData(data, metaModelJSON, options);\n stats.texturesSize += deflatedData.textureData.byteLength;\n const arrayBuffer = createArrayBuffer(deflatedData);\n return arrayBuffer;\n}\n\n// V11\nfunction writeXKTModelToArrayBufferUncompressed(xktModel, metaModelJSON, stats) {\n const data = getModelData(xktModel, metaModelJSON, stats);\n stats.texturesSize += data.textureData.byteLength;\n\n const object2Array = (function() {\n const encoder = new TextEncoder();\n return obj => encoder.encode(JSON.stringify(obj));\n })();\n\n const arrays = [\n object2Array(metaModelJSON || data.metadata),\n data.textureData,\n data.eachTextureDataPortion,\n data.eachTextureAttributes,\n data.positions,\n data.normals,\n data.colors,\n data.uvs,\n data.indices,\n data.edgeIndices,\n data.eachTextureSetTextures,\n data.matrices,\n data.reusedGeometriesDecodeMatrix,\n data.eachGeometryPrimitiveType,\n data.eachGeometryPositionsPortion,\n data.eachGeometryNormalsPortion,\n data.eachGeometryColorsPortion,\n data.eachGeometryUVsPortion,\n data.eachGeometryIndicesPortion,\n data.eachGeometryEdgeIndicesPortion,\n data.eachMeshGeometriesPortion,\n data.eachMeshMatricesPortion,\n data.eachMeshTextureSet,\n data.eachMeshMaterialAttributes,\n object2Array(data.eachEntityId),\n data.eachEntityMeshesPortion,\n data.eachTileAABB,\n data.eachTileEntitiesPortion\n ];\n\n const arraysCnt = arrays.length;\n const dataView = new DataView(new ArrayBuffer((1 + 2 * arraysCnt) * 4));\n\n dataView.setUint32(0, XKT_VERSION, true);\n\n let byteOffset = dataView.byteLength;\n const offsets = [ ];\n\n // Store arrays' offsets and lengths\n for (let i = 0; i < arraysCnt; i++) {\n const arr = arrays[i];\n const BPE = arr.BYTES_PER_ELEMENT;\n // align to BPE, so the arrayBuffer can be used for a typed array\n byteOffset = Math.ceil(byteOffset / BPE) * BPE;\n const byteLength = arr.byteLength;\n\n const idx = 1 + 2 * i;\n dataView.setUint32(idx * 4, byteOffset, true);\n dataView.setUint32((idx + 1) * 4, byteLength, true);\n\n offsets.push(byteOffset);\n byteOffset += byteLength;\n }\n\n const dataArray = new Uint8Array(byteOffset);\n dataArray.set(new Uint8Array(dataView.buffer), 0);\n\n const requiresSwapToLittleEndian = (function() {\n const buffer = new ArrayBuffer(2);\n new Uint16Array(buffer)[0] = 1;\n return new Uint8Array(buffer)[0] !== 1;\n })();\n\n // Store arrays themselves\n for (let i = 0; i < arraysCnt; i++) {\n const arr = arrays[i];\n const subarray = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n\n const BPE = arr.BYTES_PER_ELEMENT;\n if (requiresSwapToLittleEndian && (BPE > 1)) {\n const swaps = BPE / 2;\n const cnt = subarray.length / BPE;\n for (let b = 0; b < cnt; b++) {\n const offset = b * BPE;\n for (let j = 0; j < swaps; j++) {\n const i1 = offset + j;\n const i2 = offset - j + BPE - 1;\n const tmp = subarray[i1];\n subarray[i1] = subarray[i2];\n subarray[i2] = tmp;\n }\n }\n }\n\n dataArray.set(subarray, offsets[i]);\n }\n\n return dataArray.buffer;\n}\n\nfunction getModelData(xktModel, metaModelDataStr, stats) {\n\n //------------------------------------------------------------------------------------------------------------------\n // Allocate data\n //------------------------------------------------------------------------------------------------------------------\n\n const propertySetsList = xktModel.propertySetsList;\n const metaObjectsList = xktModel.metaObjectsList;\n const geometriesList = xktModel.geometriesList;\n const texturesList = xktModel.texturesList;\n const textureSetsList = xktModel.textureSetsList;\n const meshesList = xktModel.meshesList;\n const entitiesList = xktModel.entitiesList;\n const tilesList = xktModel.tilesList;\n\n const numPropertySets = propertySetsList.length;\n const numMetaObjects = metaObjectsList.length;\n const numGeometries = geometriesList.length;\n const numTextures = texturesList.length;\n const numTextureSets = textureSetsList.length;\n const numMeshes = meshesList.length;\n const numEntities = entitiesList.length;\n const numTiles = tilesList.length;\n\n let lenPositions = 0;\n let lenNormals = 0;\n let lenColors = 0;\n let lenUVs = 0;\n let lenIndices = 0;\n let lenEdgeIndices = 0;\n let lenMatrices = 0;\n let lenTextures = 0;\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n if (geometry.positionsQuantized) {\n lenPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n lenNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n lenColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n lenUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n lenIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n lenEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n for (let textureIndex = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n lenTextures += imageData.byteLength;\n\n if (xktTexture.compressed) {\n stats.numCompressedTextures++;\n }\n }\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const mesh = meshesList[meshIndex];\n if (mesh.geometry.numInstances > 1) {\n lenMatrices += 16;\n }\n }\n\n const data = {\n metadata: {},\n textureData: new Uint8Array(lenTextures), // All textures\n eachTextureDataPortion: new Uint32Array(numTextures), // For each texture, an index to its first element in textureData\n eachTextureAttributes: new Uint16Array(numTextures * NUM_TEXTURE_ATTRIBUTES),\n positions: new Uint16Array(lenPositions), // All geometry arrays\n normals: new Int8Array(lenNormals),\n colors: new Uint8Array(lenColors),\n uvs: new Float32Array(lenUVs),\n indices: new Uint32Array(lenIndices),\n edgeIndices: new Uint32Array(lenEdgeIndices),\n eachTextureSetTextures: new Int32Array(numTextureSets * 5), // For each texture set, a set of five Texture indices [color, metal/roughness,normals,emissive,occlusion]; each index has value -1 if no texture\n matrices: new Float32Array(lenMatrices), // Modeling matrices for entities that share geometries. Each entity either shares all it's geometries, or owns all its geometries exclusively. Exclusively-owned geometries are pre-transformed into World-space, and so their entities don't have modeling matrices in this array.\n reusedGeometriesDecodeMatrix: new Float32Array(xktModel.reusedGeometriesDecodeMatrix), // A single, global vertex position de-quantization matrix for all reused geometries. Reused geometries are quantized to their collective Local-space AABB, and this matrix is derived from that AABB.\n eachGeometryPrimitiveType: new Uint8Array(numGeometries), // Primitive type for each geometry (0=solid triangles, 1=surface triangles, 2=lines, 3=points, 4=line-strip)\n eachGeometryPositionsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.positions. Every primitive type has positions.\n eachGeometryNormalsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.normals. If the next geometry has the same index, then this geometry has no normals.\n eachGeometryColorsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.colors. If the next geometry has the same index, then this geometry has no colors.\n eachGeometryUVsPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.uvs. If the next geometry has the same index, then this geometry has no UVs.\n eachGeometryIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.indices. If the next geometry has the same index, then this geometry has no indices.\n eachGeometryEdgeIndicesPortion: new Uint32Array(numGeometries), // For each geometry, an index to its first element in data.edgeIndices. If the next geometry has the same index, then this geometry has no edge indices.\n eachMeshGeometriesPortion: new Uint32Array(numMeshes), // For each mesh, an index into the eachGeometry* arrays\n eachMeshMatricesPortion: new Uint32Array(numMeshes), // For each mesh that shares its geometry, an index to its first element in data.matrices, to indicate the modeling matrix that transforms the shared geometry Local-space vertex positions. This is ignored for meshes that don't share geometries, because the vertex positions of non-shared geometries are pre-transformed into World-space.\n eachMeshTextureSet: new Int32Array(numMeshes), // For each mesh, the index of its texture set in data.eachTextureSetTextures; this array contains signed integers so that we can use -1 to indicate when a mesh has no texture set\n eachMeshMaterialAttributes: new Uint8Array(numMeshes * NUM_MATERIAL_ATTRIBUTES), // For each mesh, an RGBA integer color of format [0..255, 0..255, 0..255, 0..255], and PBR metallic and roughness factors, of format [0..255, 0..255]\n eachEntityId: [], // For each entity, an ID string\n eachEntityMeshesPortion: new Uint32Array(numEntities), // For each entity, the index of the first element of meshes used by the entity\n eachTileAABB: new Float64Array(numTiles * 6), // For each tile, an axis-aligned bounding box\n eachTileEntitiesPortion: new Uint32Array(numTiles) // For each tile, the index of the first element of eachEntityId, eachEntityMeshesPortion and eachEntityMatricesPortion used by the tile\n };\n\n let countPositions = 0;\n let countNormals = 0;\n let countColors = 0;\n let countUVs = 0;\n let countIndices = 0;\n let countEdgeIndices = 0;\n\n // Metadata\n\n data.metadata = {\n id: xktModel.modelId,\n projectId: xktModel.projectId,\n revisionId: xktModel.revisionId,\n author: xktModel.author,\n createdAt: xktModel.createdAt,\n creatingApplication: xktModel.creatingApplication,\n schema: xktModel.schema,\n propertySets: [],\n metaObjects: []\n };\n\n // Property sets\n\n for (let propertySetsIndex = 0; propertySetsIndex < numPropertySets; propertySetsIndex++) {\n const propertySet = propertySetsList[propertySetsIndex];\n const propertySetJSON = {\n id: \"\" + propertySet.propertySetId,\n name: propertySet.propertySetName,\n type: propertySet.propertySetType,\n properties: propertySet.properties\n };\n data.metadata.propertySets.push(propertySetJSON);\n }\n\n // Metaobjects\n\n if (!metaModelDataStr) {\n for (let metaObjectsIndex = 0; metaObjectsIndex < numMetaObjects; metaObjectsIndex++) {\n const metaObject = metaObjectsList[metaObjectsIndex];\n const metaObjectJSON = {\n name: metaObject.metaObjectName,\n type: metaObject.metaObjectType,\n id: \"\" + metaObject.metaObjectId\n };\n if (metaObject.parentMetaObjectId !== undefined && metaObject.parentMetaObjectId !== null) {\n metaObjectJSON.parent = \"\" + metaObject.parentMetaObjectId;\n }\n if (metaObject.propertySetIds && metaObject.propertySetIds.length > 0) {\n metaObjectJSON.propertySetIds = metaObject.propertySetIds;\n }\n if (metaObject.external) {\n metaObjectJSON.external = metaObject.external;\n }\n data.metadata.metaObjects.push(metaObjectJSON);\n }\n }\n\n // Geometries\n\n for (let geometryIndex = 0; geometryIndex < numGeometries; geometryIndex++) {\n const geometry = geometriesList [geometryIndex];\n let primitiveType = 1;\n switch (geometry.primitiveType) {\n case \"triangles\":\n primitiveType = geometry.solid ? 0 : 1;\n break;\n case \"points\":\n primitiveType = 2;\n break;\n case \"lines\":\n primitiveType = 3;\n break;\n case \"line-strip\":\n case \"line-loop\":\n primitiveType = 4;\n break;\n case \"triangle-strip\":\n primitiveType = 5;\n break;\n case \"triangle-fan\":\n primitiveType = 6;\n break;\n default:\n primitiveType = 1\n }\n data.eachGeometryPrimitiveType [geometryIndex] = primitiveType;\n data.eachGeometryPositionsPortion [geometryIndex] = countPositions;\n data.eachGeometryNormalsPortion [geometryIndex] = countNormals;\n data.eachGeometryColorsPortion [geometryIndex] = countColors;\n data.eachGeometryUVsPortion [geometryIndex] = countUVs;\n data.eachGeometryIndicesPortion [geometryIndex] = countIndices;\n data.eachGeometryEdgeIndicesPortion [geometryIndex] = countEdgeIndices;\n if (geometry.positionsQuantized) {\n data.positions.set(geometry.positionsQuantized, countPositions);\n countPositions += geometry.positionsQuantized.length;\n }\n if (geometry.normalsOctEncoded) {\n data.normals.set(geometry.normalsOctEncoded, countNormals);\n countNormals += geometry.normalsOctEncoded.length;\n }\n if (geometry.colorsCompressed) {\n data.colors.set(geometry.colorsCompressed, countColors);\n countColors += geometry.colorsCompressed.length;\n }\n if (geometry.uvs) {\n data.uvs.set(geometry.uvs, countUVs);\n countUVs += geometry.uvs.length;\n }\n if (geometry.indices) {\n data.indices.set(geometry.indices, countIndices);\n countIndices += geometry.indices.length;\n }\n if (geometry.edgeIndices) {\n data.edgeIndices.set(geometry.edgeIndices, countEdgeIndices);\n countEdgeIndices += geometry.edgeIndices.length;\n }\n }\n\n // Textures\n\n for (let textureIndex = 0, numTextures = xktModel.texturesList.length, portionIdx = 0; textureIndex < numTextures; textureIndex++) {\n const xktTexture = xktModel.texturesList[textureIndex];\n const imageData = xktTexture.imageData;\n data.textureData.set(imageData, portionIdx);\n data.eachTextureDataPortion[textureIndex] = portionIdx;\n\n portionIdx += imageData.byteLength;\n\n let textureAttrIdx = textureIndex * NUM_TEXTURE_ATTRIBUTES;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.compressed ? 1 : 0;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.mediaType; // GIFMediaType | PNGMediaType | JPEGMediaType\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.width;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.height;\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.minFilter; // LinearMipmapLinearFilter | LinearMipMapNearestFilter | NearestMipMapNearestFilter | NearestMipMapLinearFilter | LinearMipMapLinearFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.magFilter; // LinearFilter | NearestFilter\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapS; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapT; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n data.eachTextureAttributes[textureAttrIdx++] = xktTexture.wrapR; // ClampToEdgeWrapping | MirroredRepeatWrapping | RepeatWrapping\n }\n\n // Texture sets\n\n for (let textureSetIndex = 0, numTextureSets = xktModel.textureSetsList.length, eachTextureSetTexturesIndex = 0; textureSetIndex < numTextureSets; textureSetIndex++) {\n const textureSet = textureSetsList[textureSetIndex];\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.colorTexture ? textureSet.colorTexture.textureIndex : -1; // Color map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.metallicRoughnessTexture ? textureSet.metallicRoughnessTexture.textureIndex : -1; // Metal/rough map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.normalsTexture ? textureSet.normalsTexture.textureIndex : -1; // Normal map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.emissiveTexture ? textureSet.emissiveTexture.textureIndex : -1; // Emissive map\n data.eachTextureSetTextures[eachTextureSetTexturesIndex++] = textureSet.occlusionTexture ? textureSet.occlusionTexture.textureIndex : -1; // Occlusion map\n }\n\n // Tiles -> Entities -> Meshes\n\n let entityIndex = 0;\n let countEntityMeshesPortion = 0;\n let eachMeshMaterialAttributesIndex = 0;\n let matricesIndex = 0;\n let meshIndex = 0;\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const tile = tilesList [tileIndex];\n const tileEntities = tile.entities;\n const numTileEntities = tileEntities.length;\n\n if (numTileEntities === 0) {\n continue;\n }\n\n data.eachTileEntitiesPortion[tileIndex] = entityIndex;\n\n const tileAABB = tile.aabb;\n\n for (let j = 0; j < numTileEntities; j++) {\n\n const entity = tileEntities[j];\n const entityMeshes = entity.meshes;\n const numEntityMeshes = entityMeshes.length;\n\n for (let k = 0; k < numEntityMeshes; k++) {\n\n const mesh = entityMeshes[k];\n const geometry = mesh.geometry;\n const geometryIndex = geometry.geometryIndex;\n\n data.eachMeshGeometriesPortion [countEntityMeshesPortion + k] = geometryIndex;\n\n if (mesh.geometry.numInstances > 1) {\n data.matrices.set(mesh.matrix, matricesIndex);\n data.eachMeshMatricesPortion [meshIndex] = matricesIndex;\n matricesIndex += 16;\n }\n\n data.eachMeshTextureSet[meshIndex] = mesh.textureSet ? mesh.textureSet.textureSetIndex : -1;\n\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[0] * 255); // Color RGB\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[1] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.color[2] * 255);\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.opacity * 255); // Opacity\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.metallic * 255); // Metallic\n data.eachMeshMaterialAttributes[eachMeshMaterialAttributesIndex++] = (mesh.roughness * 255); // Roughness\n\n meshIndex++;\n }\n\n data.eachEntityId [entityIndex] = entity.entityId;\n data.eachEntityMeshesPortion[entityIndex] = countEntityMeshesPortion; // <<<<<<<<<<<<<<<<<<<< Error here? Order/value of countEntityMeshesPortion correct?\n\n entityIndex++;\n countEntityMeshesPortion += numEntityMeshes;\n }\n\n const tileAABBIndex = tileIndex * 6;\n\n data.eachTileAABB.set(tileAABB, tileAABBIndex);\n }\n\n return data;\n}\n\nfunction deflateData(data, metaModelJSON, options) {\n\n function deflate(buffer) {\n return (options.zip !== false) ? pako.deflate(buffer) : buffer;\n }\n\n let metaModelBytes;\n if (metaModelJSON) {\n const deflatedJSON = deflateJSON(metaModelJSON);\n metaModelBytes = deflate(deflatedJSON)\n } else {\n const deflatedJSON = deflateJSON(data.metadata);\n metaModelBytes = deflate(deflatedJSON)\n }\n\n return {\n metadata: metaModelBytes,\n textureData: deflate(data.textureData.buffer),\n eachTextureDataPortion: deflate(data.eachTextureDataPortion.buffer),\n eachTextureAttributes: deflate(data.eachTextureAttributes.buffer),\n positions: deflate(data.positions.buffer),\n normals: deflate(data.normals.buffer),\n colors: deflate(data.colors.buffer),\n uvs: deflate(data.uvs.buffer),\n indices: deflate(data.indices.buffer),\n edgeIndices: deflate(data.edgeIndices.buffer),\n eachTextureSetTextures: deflate(data.eachTextureSetTextures.buffer),\n matrices: deflate(data.matrices.buffer),\n reusedGeometriesDecodeMatrix: deflate(data.reusedGeometriesDecodeMatrix.buffer),\n eachGeometryPrimitiveType: deflate(data.eachGeometryPrimitiveType.buffer),\n eachGeometryPositionsPortion: deflate(data.eachGeometryPositionsPortion.buffer),\n eachGeometryNormalsPortion: deflate(data.eachGeometryNormalsPortion.buffer),\n eachGeometryColorsPortion: deflate(data.eachGeometryColorsPortion.buffer),\n eachGeometryUVsPortion: deflate(data.eachGeometryUVsPortion.buffer),\n eachGeometryIndicesPortion: deflate(data.eachGeometryIndicesPortion.buffer),\n eachGeometryEdgeIndicesPortion: deflate(data.eachGeometryEdgeIndicesPortion.buffer),\n eachMeshGeometriesPortion: deflate(data.eachMeshGeometriesPortion.buffer),\n eachMeshMatricesPortion: deflate(data.eachMeshMatricesPortion.buffer),\n eachMeshTextureSet: deflate(data.eachMeshTextureSet.buffer),\n eachMeshMaterialAttributes: deflate(data.eachMeshMaterialAttributes.buffer),\n eachEntityId: deflate(JSON.stringify(data.eachEntityId)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n })),\n eachEntityMeshesPortion: deflate(data.eachEntityMeshesPortion.buffer),\n eachTileAABB: deflate(data.eachTileAABB.buffer),\n eachTileEntitiesPortion: deflate(data.eachTileEntitiesPortion.buffer)\n };\n}\n\nfunction deflateJSON(strings) {\n return JSON.stringify(strings)\n .replace(/[\\u007F-\\uFFFF]/g, function (chr) { // Produce only ASCII-chars, so that the data can be inflated later\n return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n });\n}\n\nfunction createArrayBuffer(deflatedData) {\n return toArrayBuffer([\n deflatedData.metadata,\n deflatedData.textureData,\n deflatedData.eachTextureDataPortion,\n deflatedData.eachTextureAttributes,\n deflatedData.positions,\n deflatedData.normals,\n deflatedData.colors,\n deflatedData.uvs,\n deflatedData.indices,\n deflatedData.edgeIndices,\n deflatedData.eachTextureSetTextures,\n deflatedData.matrices,\n deflatedData.reusedGeometriesDecodeMatrix,\n deflatedData.eachGeometryPrimitiveType,\n deflatedData.eachGeometryPositionsPortion,\n deflatedData.eachGeometryNormalsPortion,\n deflatedData.eachGeometryColorsPortion,\n deflatedData.eachGeometryUVsPortion,\n deflatedData.eachGeometryIndicesPortion,\n deflatedData.eachGeometryEdgeIndicesPortion,\n deflatedData.eachMeshGeometriesPortion,\n deflatedData.eachMeshMatricesPortion,\n deflatedData.eachMeshTextureSet,\n deflatedData.eachMeshMaterialAttributes,\n deflatedData.eachEntityId,\n deflatedData.eachEntityMeshesPortion,\n deflatedData.eachTileAABB,\n deflatedData.eachTileEntitiesPortion\n ]);\n}\n\nfunction toArrayBuffer(elements) {\n const indexData = new Uint32Array(elements.length + 2);\n indexData[0] = 10; // XKT_VERSION for legacy v10 mode\n indexData [1] = elements.length; // Stored Data 1.1: number of stored elements\n let dataLen = 0; // Stored Data 1.2: length of stored elements\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementsize = element.length;\n indexData[i + 2] = elementsize;\n dataLen += elementsize;\n }\n const indexBuf = new Uint8Array(indexData.buffer);\n const dataArray = new Uint8Array(indexBuf.length + dataLen);\n dataArray.set(indexBuf);\n let offset = indexBuf.length;\n for (let i = 0, len = elements.length; i < len; i++) { // Stored Data 2: the elements themselves\n const element = elements[i];\n dataArray.set(element, offset);\n offset += element.length;\n }\n return dataArray.buffer;\n}\n\nexport {writeXKTModelToArrayBuffer};","/**\n * @desc Provides info on the XKT generated by xeokit-convert.\n */\nconst XKT_INFO = {\n\n /**\n * The XKT version generated by xeokit-convert.\n *\n * This is the XKT version that's modeled by {@link XKTModel}, serialized\n * by {@link writeXKTModelToArrayBuffer}, and written by {@link convert2xkt}.\n *\n * * Current XKT version: **10**\n * * [XKT format specs](https://github.com/xeokit/xeokit-convert/blob/main/specs/index.md)\n *\n * @property xktVersion\n * @type {number}\n */\n xktVersion: 11\n};\n\nexport {XKT_INFO};","/*----------------------------------------------------------------------------------------------------------------------\n * NOTE: The values of these constants must match those within xeokit-sdk\n *--------------------------------------------------------------------------------------------------------------------*/\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity.\n */\nexport const RepeatWrapping = 1000;\n\n/**\n * Texture wrapping mode in which the last pixel of the texture stretches to the edge of the mesh.\n */\nexport const ClampToEdgeWrapping = 1001;\n\n/**\n * Texture wrapping mode in which the texture repeats to infinity, mirroring on each repeat.\n */\nexport const MirroredRepeatWrapping = 1002;\n\n/**\n * Texture magnification and minification filter that returns the nearest texel to the given sample coordinates.\n */\nexport const NearestFilter = 1003;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipMapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured\n * and returns the nearest texel to the given sample coordinates.\n */\nexport const NearestMipmapNearestFilter = 1004;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipmapLinearFilter = 1005;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured\n * and returns the nearest texel to the center of the pixel at the given sample coordinates.\n */\nexport const NearestMipMapLinearFilter = 1005;\n\n/**\n * Texture magnification and minification filter that returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearFilter = 1006;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipmapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses the mipmap that most closely matches the size of the pixel being textured and\n * returns the weighted average of the four nearest texels to the given sample coordinates.\n */\nexport const LinearMipMapNearestFilter = 1007;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipmapLinearFilter = 1008;\n\n/**\n * Texture minification filter that chooses two mipmaps that most closely match the size of the pixel being textured,\n * finds within each mipmap the weighted average of the nearest texel to the center of the pixel, then returns the\n * weighted average of those two values.\n */\nexport const LinearMipMapLinearFilter = 1008;\n\n/**\n * Media type for GIF images.\n */\nexport const GIFMediaType = 10000;\n\n/**\n * Media type for JPEG images.\n */\nexport const JPEGMediaType = 10001;\n\n/**\n * Media type for PNG images.\n */\nexport const PNGMediaType = 10002;","import {XKT_INFO} from \"./XKT_INFO.js\";\nimport {XKTModel} from \"./XKTModel/XKTModel.js\";\nimport {parseCityJSONIntoXKTModel} from \"./parsers/parseCityJSONIntoXKTModel.js\";\nimport {parseGLTFIntoXKTModel} from \"./parsers/parseGLTFIntoXKTModel.js\";\nimport {parseIFCIntoXKTModel} from \"./parsers/parseIFCIntoXKTModel.js\";\nimport {parseLASIntoXKTModel} from \"./parsers/parseLASIntoXKTModel.js\";\nimport {parsePCDIntoXKTModel} from \"./parsers/parsePCDIntoXKTModel.js\";\nimport {parsePLYIntoXKTModel} from \"./parsers/parsePLYIntoXKTModel.js\";\nimport {parseSTLIntoXKTModel} from \"./parsers/parseSTLIntoXKTModel.js\";\nimport {writeXKTModelToArrayBuffer} from \"./XKTModel/writeXKTModelToArrayBuffer.js\";\n\nimport {toArrayBuffer} from \"./XKTModel/lib/toArraybuffer\";\n\nconst fs = require('fs');\nconst path = require(\"path\");\n\n/**\n * Converts model files into xeokit's native XKT format.\n *\n * Supported source formats are: IFC, CityJSON, glTF, LAZ and LAS.\n *\n * **Only bundled in xeokit-convert.cjs.js.**\n *\n * ## Usage\n *\n * ````javascript\n * const convert2xkt = require(\"@xeokit/xeokit-convert/dist/convert2xkt.cjs.js\");\n * const fs = require('fs');\n *\n * convert2xkt({\n * sourceData: fs.readFileSync(\"rme_advanced_sample_project.ifc\"),\n * outputXKT: (xtkArrayBuffer) => {\n * fs.writeFileSync(\"rme_advanced_sample_project.ifc.xkt\", xtkArrayBuffer);\n * }\n * }).then(() => {\n * console.log(\"Converted.\");\n * }, (errMsg) => {\n * console.error(\"Conversion failed: \" + errMsg)\n * });\n ````\n * @param {Object} params Conversion parameters.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {*} [params.configs] Configurations.\n * @param {String} [params.source] Path to source file. Alternative to ````sourceData````.\n * @param {ArrayBuffer|JSON} [params.sourceData] Source file data. Alternative to ````source````.\n * @param {String} [params.sourceFormat] Format of source file/data. Always needed with ````sourceData````, but not normally needed with ````source````, because convert2xkt will determine the format automatically from the file extension of ````source````.\n * @param {String} [params.metaModelDataStr] Source file data. Overrides metadata from ````metaModelSource````, ````sourceData```` and ````source````.\n * @param {String} [params.metaModelSource] Path to source metaModel file. Overrides metadata from ````sourceData```` and ````source````. Overridden by ````metaModelData````.\n * @param {String} [params.output] Path to destination XKT file. Directories on this path are automatically created if not existing.\n * @param {Function} [params.outputXKTModel] Callback to collect the ````XKTModel```` that is internally build by this method.\n * @param {Function} [params.outputXKT] Callback to collect XKT file data.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {Object} [stats] Collects conversion statistics. Statistics are attached to this object if provided.\n * @param {Function} [params.outputStats] Callback to collect statistics.\n * @param {Boolean} [params.rotateX=false] Whether to rotate the model 90 degrees about the X axis to make the Y axis \"up\", if necessary. Applies to CityJSON and LAS/LAZ models.\n * @param {Boolean} [params.reuseGeometries=true] When true, will enable geometry reuse within the XKT. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be when a model (eg. glTF) has 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {Boolean} [params.includeTextures=true] Whether to convert textures. Only works for ````glTF```` models.\n * @param {Boolean} [params.includeNormals=true] Whether to convert normals. When false, the parser will ignore\n * geometry normals, and the modelwill rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the model.\n * @param {Number} [params.minTileSize=200] Minimum RTC coordinate tile size. Set this to a value between 100 and 10000,\n * depending on how far from the coordinate origin the model's vertex positions are; specify larger tile sizes when close\n * to the origin, and smaller sizes when distant. This compensates for decreasing precision as floats get bigger.\n * @param {Function} [params.log] Logging callback.\n * @return {Promise}\n */\nfunction convert2xkt({\n WebIFC,\n configs = {},\n source,\n sourceData,\n sourceFormat,\n metaModelSource,\n metaModelDataStr,\n modelAABB,\n output,\n outputXKTModel,\n outputXKT,\n includeTypes,\n excludeTypes,\n reuseGeometries = true,\n minTileSize = 200,\n stats = {},\n outputStats,\n rotateX = false,\n includeTextures = true,\n includeNormals = true,\n zip = true,\n log = function (msg) {\n }\n }) {\n\n stats.sourceFormat = \"\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numTextureSets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.sourceSize = 0;\n stats.xktSize = 0;\n stats.texturesSize = 0;\n stats.xktVersion = \"\";\n stats.compressionRatio = 0;\n stats.conversionTime = 0;\n stats.aabb = null;\n\n function getFileExtension(fileName) {\n let ext = path.extname(fileName);\n if (ext.charAt(0) === \".\") {\n ext = ext.substring(1);\n }\n return ext;\n }\n\n return new Promise(function (resolve, reject) {\n const _log = log;\n log = (msg) => {\n _log(`[convert2xkt] ${msg}`)\n }\n\n if (!source && !sourceData) {\n reject(\"Argument expected: source or sourceData\");\n return;\n }\n\n if (!sourceFormat && sourceData) {\n reject(\"Argument expected: sourceFormat is required with sourceData\");\n return;\n }\n\n if (!output && !outputXKTModel && !outputXKT) {\n reject(\"Argument expected: output, outputXKTModel or outputXKT\");\n return;\n }\n\n if (source) {\n log('Reading input file: ' + source);\n }\n\n const startTime = new Date();\n\n const sourceConfigs = configs.sourceConfigs || {};\n const ext = sourceFormat || getFileExtension(source);\n\n log(`Input file extension: \"${ext}\"`);\n\n let fileTypeConfigs = sourceConfigs[ext];\n\n if (!fileTypeConfigs) {\n log(`[WARNING] Could not find configs sourceConfigs entry for source format \"${ext}\". This is derived from the source file name extension. Will use internal default configs.`);\n fileTypeConfigs = {};\n }\n\n function overrideOption(option1, option2) {\n if (option1 !== undefined) {\n return option1;\n }\n return option2;\n }\n\n if (!sourceData) {\n try {\n sourceData = fs.readFileSync(source);\n } catch (err) {\n reject(err);\n return;\n }\n }\n\n const sourceFileSizeBytes = sourceData.byteLength;\n\n log(\"Input file size: \" + (sourceFileSizeBytes / 1000).toFixed(2) + \" kB\");\n\n if (!metaModelDataStr && metaModelSource) {\n log('Reading input metadata file: ' + metaModelSource);\n try {\n metaModelDataStr = fs.readFileSync(metaModelSource);\n } catch (err) {\n reject(err);\n return;\n }\n } else {\n log(`Not embedding metadata in XKT`);\n }\n\n let metaModelJSON;\n\n if (metaModelDataStr) {\n try {\n metaModelJSON = JSON.parse(metaModelDataStr);\n } catch (e) {\n metaModelJSON = {};\n log(`Error parsing metadata JSON: ${e}`);\n }\n }\n\n minTileSize = overrideOption(fileTypeConfigs.minTileSize, minTileSize);\n rotateX = overrideOption(fileTypeConfigs.rotateX, rotateX);\n reuseGeometries = overrideOption(fileTypeConfigs.reuseGeometries, reuseGeometries);\n includeTextures = overrideOption(fileTypeConfigs.includeTextures, includeTextures);\n includeNormals = overrideOption(fileTypeConfigs.includeNormals, includeNormals);\n includeTypes = overrideOption(fileTypeConfigs.includeTypes, includeTypes);\n excludeTypes = overrideOption(fileTypeConfigs.excludeTypes, excludeTypes);\n\n if (reuseGeometries === false) {\n log(\"Geometry reuse is disabled\");\n }\n\n const xktModel = new XKTModel({\n minTileSize,\n modelAABB\n });\n\n switch (ext) {\n case \"json\":\n convert(parseCityJSONIntoXKTModel, {\n data: JSON.parse(sourceData),\n xktModel,\n stats,\n rotateX,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n log\n });\n break;\n\n case \"glb\":\n sourceData = toArrayBuffer(sourceData);\n convert(parseGLTFIntoXKTModel, {\n data: sourceData,\n reuseGeometries,\n includeTextures: true,\n includeNormals,\n metaModelData: metaModelJSON,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"gltf\":\n sourceData = toArrayBuffer(sourceData);\n const gltfBasePath = source ? path.dirname(source) : \"\";\n convert(parseGLTFIntoXKTModel, {\n baseUri: gltfBasePath,\n data: sourceData,\n reuseGeometries,\n includeTextures: true,\n includeNormals,\n metaModelData: metaModelJSON,\n xktModel,\n stats,\n log\n });\n break;\n\n // case \"gltf\":\n // const gltfJSON = JSON.parse(sourceData);\n // const gltfBasePath = source ? getBasePath(source) : \"\";\n // convert(parseGLTFIntoXKTModel, {\n // baseUri: gltfBasePath,\n // data: gltfJSON,\n // reuseGeometries,\n // includeTextures,\n // includeNormals,\n // metaModelData: metaModelJSON,\n // xktModel,\n // getAttachment: async (name) => {\n // const filePath = gltfBasePath + name;\n // log(`Reading attachment file: ${filePath}`);\n // const buffer = fs.readFileSync(filePath);\n // const arrayBuf = toArrayBuffer(buffer);\n // return arrayBuf;\n // },\n // stats,\n // log\n // });\n // break;\n\n case \"ifc\":\n convert(parseIFCIntoXKTModel, {\n WebIFC,\n data: sourceData,\n xktModel,\n wasmPath: \"./\",\n includeTypes,\n excludeTypes,\n stats,\n log\n });\n break;\n\n case \"laz\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n fp64: fileTypeConfigs.fp64,\n colorDepth: fileTypeConfigs.colorDepth,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n skip: overrideOption(fileTypeConfigs.skip, 1),\n log\n });\n break;\n\n case \"las\":\n convert(parseLASIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n fp64: fileTypeConfigs.fp64,\n colorDepth: fileTypeConfigs.colorDepth,\n center: fileTypeConfigs.center,\n transform: fileTypeConfigs.transform,\n skip: overrideOption(fileTypeConfigs.skip, 1),\n log\n });\n break;\n\n case \"pcd\":\n convert(parsePCDIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"ply\":\n convert(parsePLYIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n case \"stl\":\n convert(parseSTLIntoXKTModel, {\n data: sourceData,\n xktModel,\n stats,\n log\n });\n break;\n\n default:\n reject(`Error: unsupported source format: \"${ext}\".`);\n return;\n }\n\n function convert(parser, converterParams) {\n\n parser(converterParams).then(() => {\n\n if (!metaModelJSON) {\n log(\"Creating default metamodel in XKT\");\n xktModel.createDefaultMetaObjects();\n }\n\n log(\"Input file parsed OK. Building XKT document...\");\n\n xktModel.finalize().then(() => {\n\n log(\"XKT document built OK. Writing to XKT file...\");\n\n const xktArrayBuffer = writeXKTModelToArrayBuffer(xktModel, metaModelJSON, stats, {zip: zip});\n\n const xktContent = Buffer.from(xktArrayBuffer);\n\n const targetFileSizeBytes = xktArrayBuffer.byteLength;\n\n stats.minTileSize = minTileSize || 200;\n stats.sourceSize = (sourceFileSizeBytes / 1000).toFixed(2);\n stats.xktSize = (targetFileSizeBytes / 1000).toFixed(2);\n stats.xktVersion = zip ? 10 : XKT_INFO.xktVersion;\n stats.compressionRatio = (sourceFileSizeBytes / targetFileSizeBytes).toFixed(2);\n stats.conversionTime = ((new Date() - startTime) / 1000.0).toFixed(2);\n stats.aabb = xktModel.aabb;\n log(`Converted to: XKT v${stats.xktVersion}`);\n if (includeTypes) {\n log(\"Include types: \" + (includeTypes ? includeTypes : \"(include all)\"));\n }\n if (excludeTypes) {\n log(\"Exclude types: \" + (excludeTypes ? excludeTypes : \"(exclude none)\"));\n }\n log(\"XKT size: \" + stats.xktSize + \" kB\");\n log(\"XKT textures size: \" + (stats.texturesSize / 1000).toFixed(2) + \"kB\");\n log(\"Compression ratio: \" + stats.compressionRatio);\n log(\"Conversion time: \" + stats.conversionTime + \" s\");\n log(\"Converted metaobjects: \" + stats.numMetaObjects);\n log(\"Converted property sets: \" + stats.numPropertySets);\n log(\"Converted drawable objects: \" + stats.numObjects);\n log(\"Converted geometries: \" + stats.numGeometries);\n log(\"Converted textures: \" + stats.numTextures);\n log(\"Converted textureSets: \" + stats.numTextureSets);\n log(\"Converted triangles: \" + stats.numTriangles);\n log(\"Converted vertices: \" + stats.numVertices);\n log(\"Converted UVs: \" + stats.numUVs);\n log(\"Converted normals: \" + stats.numNormals);\n log(\"Converted tiles: \" + xktModel.tilesList.length);\n log(\"minTileSize: \" + stats.minTileSize);\n\n if (output) {\n const outputDir = path.dirname(output);\n if (outputDir !== \"\" && !fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, {recursive: true});\n }\n log('Writing XKT file: ' + output);\n fs.writeFileSync(output, xktContent);\n }\n\n if (outputXKTModel) {\n outputXKTModel(xktModel);\n }\n\n if (outputXKT) {\n outputXKT(xktContent);\n }\n\n if (outputStats) {\n outputStats(stats);\n }\n\n resolve();\n });\n }, (err) => {\n reject(err);\n });\n }\n });\n}\n\nexport {convert2xkt};","/**\n * @desc Creates box-shaped triangle mesh geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxGeometry({\n * primitiveType: \"triangles\" // or \"lines\"\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType,\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n\n primitiveType: \"triangles\",\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\n\n positions: [\n\n // v0-v1-v2-v3 front\n xmax, ymax, zmax,\n xmin, ymax, zmax,\n xmin, ymin, zmax,\n xmax, ymin, zmax,\n\n // v0-v3-v4-v1 right\n xmax, ymax, zmax,\n xmax, ymin, zmax,\n xmax, ymin, zmin,\n xmax, ymax, zmin,\n\n // v0-v1-v6-v1 top\n xmax, ymax, zmax,\n xmax, ymax, zmin,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n\n // v1-v6-v7-v2 left\n xmin, ymax, zmax,\n xmin, ymax, zmin,\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n\n // v7-v4-v3-v2 bottom\n xmin, ymin, zmin,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmin, ymin, zmax,\n\n // v4-v7-v6-v1 back\n xmax, ymin, zmin,\n xmin, ymin, zmin,\n xmin, ymax, zmin,\n xmax, ymax, zmin\n ],\n\n // Normal vectors, one for each vertex\n normals: [\n\n // v0-v1-v2-v3 front\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n\n // v0-v3-v4-v5 right\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n\n // v0-v5-v6-v1 top\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n\n // v1-v6-v7-v2 left\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n\n // v7-v4-v3-v2 bottom\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n\n // v4-v7-v6-v5 back\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1\n ],\n\n // UV coords\n uv: [\n\n // v0-v1-v2-v3 front\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v0-v3-v4-v1 right\n 0, 0,\n 0, 1,\n 1, 1,\n 1, 0,\n\n // v0-v1-v6-v1 top\n 1, 1,\n 1, 0,\n 0, 0,\n 0, 1,\n\n // v1-v6-v7-v2 left\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v7-v4-v3-v2 bottom\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0,\n\n // v4-v7-v6-v1 back\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0\n ],\n\n // Indices - these organise the\n // positions and uv texture coordinates\n // into geometric primitives in accordance\n // with the \"primitive\" parameter,\n // in this case a set of three indices\n // for each triangle.\n //\n // Note that each triangle is specified\n // in counter-clockwise winding order.\n //\n // You can specify them in clockwise\n // order if you configure the Modes\n // node's frontFace flag as \"cw\", instead of\n // the default \"ccw\".\n indices: [\n 0, 1, 2,\n 0, 2, 3,\n // front\n 4, 5, 6,\n 4, 6, 7,\n // right\n 8, 9, 10,\n 8, 10, 11,\n // top\n 12, 13, 14,\n 12, 14, 15,\n // left\n 16, 17, 18,\n 16, 18, 19,\n // bottom\n 20, 21, 22,\n 20, 22, 23\n ]\n };\n}\n\nexport {buildBoxGeometry};\n","/**\n * @desc Creates box-shaped line segment geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a box-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const box = buildBoxLinesGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"boxGeometry\",\n * primitiveType: box.primitiveType, // \"lines\"\n * positions: box.positions,\n * normals: box.normals,\n * indices: box.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redBoxMesh\",\n * geometryId: \"boxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redBox\",\n * meshIds: [\"redBoxMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildBoxLinesGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildBoxLinesGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return {\n primitiveType: \"lines\",\n positions: [\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmax, ymax, zmin,\n xmax, ymax, zmax\n ],\n indices: [\n 0, 1,\n 1, 3,\n 3, 2,\n 2, 0,\n 4, 5,\n 5, 7,\n 7, 6,\n 6, 4,\n 0, 4,\n 1, 5,\n 2, 6,\n 3, 7\n ]\n }\n}\n\nexport {buildBoxLinesGeometry};\n","/**\n * @desc Creates cylinder-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a cylinder-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const cylinder = buildCylinderGeometry({\n * center: [0,0,0],\n * radiusTop: 2.0,\n * radiusBottom: 2.0,\n * height: 5.0,\n * radialSegments: 20,\n * heightSegments: 1,\n * openEnded: false\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"cylinderGeometry\",\n * primitiveType: cylinder.primitiveType,\n * positions: cylinder.positions,\n * normals: cylinder.normals,\n * indices: cylinder.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redCylinderMesh\",\n * geometryId: \"cylinderGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redCylinder\",\n * meshIds: [\"redCylinderMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildCylinderGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radiusTop=1] Radius of top.\n * @param {Number} [cfg.radiusBottom=1] Radius of bottom.\n * @param {Number} [cfg.height=1] Height.\n * @param {Number} [cfg.radialSegments=60] Number of horizontal segments.\n * @param {Number} [cfg.heightSegments=1] Number of vertical segments.\n * @param {Boolean} [cfg.openEnded=false] Whether or not the cylinder has solid caps on the ends.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildCylinderGeometry(cfg = {}) {\n\n let radiusTop = cfg.radiusTop || 1;\n if (radiusTop < 0) {\n console.error(\"negative radiusTop not allowed - will invert\");\n radiusTop *= -1;\n }\n\n let radiusBottom = cfg.radiusBottom || 1;\n if (radiusBottom < 0) {\n console.error(\"negative radiusBottom not allowed - will invert\");\n radiusBottom *= -1;\n }\n\n let height = cfg.height || 1;\n if (height < 0) {\n console.error(\"negative height not allowed - will invert\");\n height *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 3) {\n radialSegments = 3;\n }\n\n let heightSegments = cfg.heightSegments || 1;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n if (heightSegments < 1) {\n heightSegments = 1;\n }\n\n const openEnded = !!cfg.openEnded;\n\n let center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const heightHalf = height / 2;\n const heightLength = height / heightSegments;\n const radialAngle = (2.0 * Math.PI / radialSegments);\n const radialLength = 1.0 / radialSegments;\n //var nextRadius = this._radiusBottom;\n const radiusChange = (radiusTop - radiusBottom) / heightSegments;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let h;\n let i;\n\n let x;\n let z;\n\n let currentRadius;\n let currentHeight;\n\n let first;\n let second;\n\n let startIndex;\n let tu;\n let tv;\n\n // create vertices\n const normalY = (90.0 - (Math.atan(height / (radiusBottom - radiusTop))) * 180 / Math.PI) / 90.0;\n\n for (h = 0; h <= heightSegments; h++) {\n currentRadius = radiusTop - h * radiusChange;\n currentHeight = heightHalf - h * heightLength;\n\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n normals.push(currentRadius * x);\n normals.push(normalY); //todo\n normals.push(currentRadius * z);\n\n uvs.push((i * radialLength));\n uvs.push(h * 1 / heightSegments);\n\n positions.push((currentRadius * x) + centerX);\n positions.push((currentHeight) + centerY);\n positions.push((currentRadius * z) + centerZ);\n }\n }\n\n // create faces\n for (h = 0; h < heightSegments; h++) {\n for (i = 0; i <= radialSegments; i++) {\n\n first = h * (radialSegments + 1) + i;\n second = first + radialSegments;\n\n indices.push(first);\n indices.push(second);\n indices.push(second + 1);\n\n indices.push(first);\n indices.push(second + 1);\n indices.push(first + 1);\n }\n }\n\n // create top cap\n if (!openEnded && radiusTop > 0) {\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusTop * x);\n normals.push(1.0);\n normals.push(radiusTop * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusTop * x) + centerX);\n positions.push((heightHalf) + centerY);\n positions.push((radiusTop * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(first);\n indices.push(first + 1);\n indices.push(center);\n }\n }\n\n // create bottom cap\n if (!openEnded && radiusBottom > 0) {\n\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(-1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(0 - heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusBottom * x);\n normals.push(-1.0);\n normals.push(radiusBottom * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusBottom * x) + centerX);\n positions.push((0 - heightHalf) + centerY);\n positions.push((radiusBottom * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(center);\n indices.push(first + 1);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\n\nexport {buildCylinderGeometry};\n","/**\n * @desc Creates grid-shaped geometry arrays..\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a grid-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const grid = buildGridGeometry({\n * size: 1000,\n * divisions: 500\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"gridGeometry\",\n * primitiveType: grid.primitiveType, // Will be \"lines\"\n * positions: grid.positions,\n * indices: grid.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redGridMesh\",\n * geometryId: \"gridGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redGrid\",\n * meshIds: [\"redGridMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildGridGeometry\n * @param {*} [cfg] Configs\n * @param {Number} [cfg.size=1] Dimension on the X and Z-axis.\n * @param {Number} [cfg.divisions=1] Number of divisions on X and Z axis..\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildGridGeometry(cfg = {}) {\n\n let size = cfg.size || 1;\n if (size < 0) {\n console.error(\"negative size not allowed - will invert\");\n size *= -1;\n }\n\n let divisions = cfg.divisions || 1;\n if (divisions < 0) {\n console.error(\"negative divisions not allowed - will invert\");\n divisions *= -1;\n }\n if (divisions < 1) {\n divisions = 1;\n }\n\n size = size || 10;\n divisions = divisions || 10;\n\n const step = size / divisions;\n const halfSize = size / 2;\n\n const positions = [];\n const indices = [];\n let l = 0;\n\n for (let i = 0, j = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\n positions.push(-halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(k);\n positions.push(0);\n positions.push(-halfSize);\n\n positions.push(k);\n positions.push(0);\n positions.push(halfSize);\n\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildGridGeometry};\n","/**\n * @desc Creates plane-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a plane-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const plane = buildPlaneGeometry({\n * center: [0,0,0],\n * xSize: 2,\n * zSize: 2,\n * xSegments: 10,\n * zSegments: 10\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"planeGeometry\",\n * primitiveType: plane.primitiveType, // Will be \"triangles\"\n * positions: plane.positions,\n * normals: plane.normals,\n * indices: plane.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redPlaneMesh\",\n * geometryId: \"planeGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redPlane\",\n * meshIds: [\"redPlaneMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildPlaneGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1] Dimension on the X-axis.\n * @param {Number} [cfg.zSize=1] Dimension on the Z-axis.\n * @param {Number} [cfg.xSegments=1] Number of segments on the X-axis.\n * @param {Number} [cfg.zSegments=1] Number of segments on the Z-axis.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildPlaneGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n let xSegments = cfg.xSegments || 1;\n if (xSegments < 0) {\n console.error(\"negative xSegments not allowed - will invert\");\n xSegments *= -1;\n }\n if (xSegments < 1) {\n xSegments = 1;\n }\n\n let zSegments = cfg.xSegments || 1;\n if (zSegments < 0) {\n console.error(\"negative zSegments not allowed - will invert\");\n zSegments *= -1;\n }\n if (zSegments < 1) {\n zSegments = 1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const halfWidth = xSize / 2;\n const halfHeight = zSize / 2;\n\n const planeX = Math.floor(xSegments) || 1;\n const planeZ = Math.floor(zSegments) || 1;\n\n const planeX1 = planeX + 1;\n const planeZ1 = planeZ + 1;\n\n const segmentWidth = xSize / planeX;\n const segmentHeight = zSize / planeZ;\n\n const positions = new Float32Array(planeX1 * planeZ1 * 3);\n const normals = new Float32Array(planeX1 * planeZ1 * 3);\n const uvs = new Float32Array(planeX1 * planeZ1 * 2);\n\n let offset = 0;\n let offset2 = 0;\n\n let iz;\n let ix;\n let x;\n let a;\n let b;\n let c;\n let d;\n\n for (iz = 0; iz < planeZ1; iz++) {\n\n const z = iz * segmentHeight - halfHeight;\n\n for (ix = 0; ix < planeX1; ix++) {\n\n x = ix * segmentWidth - halfWidth;\n\n positions[offset] = x + centerX;\n positions[offset + 1] = centerY;\n positions[offset + 2] = -z + centerZ;\n\n normals[offset + 2] = -1;\n\n uvs[offset2] = (ix) / planeX;\n uvs[offset2 + 1] = ((planeZ - iz) / planeZ);\n\n offset += 3;\n offset2 += 2;\n }\n }\n\n offset = 0;\n\n const indices = new ((positions.length / 3) > 65535 ? Uint32Array : Uint16Array)(planeX * planeZ * 6);\n\n for (iz = 0; iz < planeZ; iz++) {\n\n for (ix = 0; ix < planeX; ix++) {\n\n a = ix + planeX1 * iz;\n b = ix + planeX1 * (iz + 1);\n c = (ix + 1) + planeX1 * (iz + 1);\n d = (ix + 1) + planeX1 * iz;\n\n indices[offset] = d;\n indices[offset + 1] = b;\n indices[offset + 2] = a;\n\n indices[offset + 3] = d;\n indices[offset + 4] = c;\n indices[offset + 5] = b;\n\n offset += 6;\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildPlaneGeometry};\n","/**\n * @desc Creates sphere-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a sphere-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const sphere = buildSphereGeometry({\n * center: [0,0,0],\n * radius: 1.5,\n * heightSegments: 60,\n * widthSegments: 60\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"sphereGeometry\",\n * primitiveType: sphere.primitiveType, // Will be \"triangles\"\n * positions: sphere.positions,\n * normals: sphere.normals,\n * indices: sphere.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redSphereMesh\",\n * geometryId: \"sphereGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n *const xktEntity = xktModel.createEntity({\n * entityId: \"redSphere\",\n * meshIds: [\"redSphereMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildSphereGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] Radius.\n * @param {Number} [cfg.heightSegments=24] Number of latitudinal bands.\n * @param {Number} [cfg.widthSegments=18] Number of longitudinal bands.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildSphereGeometry(cfg = {}) {\n\n const lod = cfg.lod || 1;\n\n const centerX = cfg.center ? cfg.center[0] : 0;\n const centerY = cfg.center ? cfg.center[1] : 0;\n const centerZ = cfg.center ? cfg.center[2] : 0;\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n\n let heightSegments = cfg.heightSegments || 18;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n heightSegments = Math.floor(lod * heightSegments);\n if (heightSegments < 18) {\n heightSegments = 18;\n }\n\n let widthSegments = cfg.widthSegments || 18;\n if (widthSegments < 0) {\n console.error(\"negative widthSegments not allowed - will invert\");\n widthSegments *= -1;\n }\n widthSegments = Math.floor(lod * widthSegments);\n if (widthSegments < 18) {\n widthSegments = 18;\n }\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let i;\n let j;\n\n let theta;\n let sinTheta;\n let cosTheta;\n\n let phi;\n let sinPhi;\n let cosPhi;\n\n let x;\n let y;\n let z;\n\n let u;\n let v;\n\n let first;\n let second;\n\n for (i = 0; i <= heightSegments; i++) {\n\n theta = i * Math.PI / heightSegments;\n sinTheta = Math.sin(theta);\n cosTheta = Math.cos(theta);\n\n for (j = 0; j <= widthSegments; j++) {\n\n phi = j * 2 * Math.PI / widthSegments;\n sinPhi = Math.sin(phi);\n cosPhi = Math.cos(phi);\n\n x = cosPhi * sinTheta;\n y = cosTheta;\n z = sinPhi * sinTheta;\n u = 1.0 - j / widthSegments;\n v = i / heightSegments;\n\n normals.push(x);\n normals.push(y);\n normals.push(z);\n\n uvs.push(u);\n uvs.push(v);\n\n positions.push(centerX + radius * x);\n positions.push(centerY + radius * y);\n positions.push(centerZ + radius * z);\n }\n }\n\n for (i = 0; i < heightSegments; i++) {\n for (j = 0; j < widthSegments; j++) {\n\n first = (i * (widthSegments + 1)) + j;\n second = first + widthSegments + 1;\n\n indices.push(first + 1);\n indices.push(second + 1);\n indices.push(second);\n indices.push(first + 1);\n indices.push(second);\n indices.push(first);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildSphereGeometry};\n","import {math} from '../lib/math.js';\n\n/**\n * @desc Creates torus-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a torus-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const torus = buildTorusGeometry({\n * center: [0,0,0],\n * radius: 1.0,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"torusGeometry\",\n * primitiveType: torus.primitiveType, // Will be \"triangles\"\n * positions: torus.positions,\n * normals: torus.normals,\n * indices: torus.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTorusMesh\",\n * geometryId: \"torusGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redTorus\",\n * meshIds: [\"redTorusMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildTorusGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] The overall radius.\n * @param {Number} [cfg.tube=0.3] The tube radius.\n * @param {Number} [cfg.radialSegments=32] The number of radial segments.\n * @param {Number} [cfg.tubeSegments=24] The number of tubular segments.\n * @param {Number} [cfg.arc=Math.PI*0.5] The length of the arc in radians, where Math.PI*2 is a closed torus.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildTorusGeometry(cfg = {}) {\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n radius *= 0.5;\n\n let tube = cfg.tube || 0.3;\n if (tube < 0) {\n console.error(\"negative tube not allowed - will invert\");\n tube *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 4) {\n radialSegments = 4;\n }\n\n let tubeSegments = cfg.tubeSegments || 24;\n if (tubeSegments < 0) {\n console.error(\"negative tubeSegments not allowed - will invert\");\n tubeSegments *= -1;\n }\n if (tubeSegments < 4) {\n tubeSegments = 4;\n }\n\n let arc = cfg.arc || Math.PI * 2;\n if (arc < 0) {\n console.warn(\"negative arc not allowed - will invert\");\n arc *= -1;\n }\n if (arc > 360) {\n arc = 360;\n }\n\n const center = cfg.center;\n let centerX = center ? center[0] : 0;\n let centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let u;\n let v;\n let x;\n let y;\n let z;\n let vec;\n\n let i;\n let j;\n\n for (j = 0; j <= tubeSegments; j++) {\n for (i = 0; i <= radialSegments; i++) {\n\n u = i / radialSegments * arc;\n v = 0.785398 + (j / tubeSegments * Math.PI * 2);\n\n centerX = radius * Math.cos(u);\n centerY = radius * Math.sin(u);\n\n x = (radius + tube * Math.cos(v)) * Math.cos(u);\n y = (radius + tube * Math.cos(v)) * Math.sin(u);\n z = tube * Math.sin(v);\n\n positions.push(x + centerX);\n positions.push(y + centerY);\n positions.push(z + centerZ);\n\n uvs.push(1 - (i / radialSegments));\n uvs.push((j / tubeSegments));\n\n vec = math.normalizeVec3(math.subVec3([x, y, z], [centerX, centerY, centerZ], []), []);\n\n normals.push(vec[0]);\n normals.push(vec[1]);\n normals.push(vec[2]);\n }\n }\n\n let a;\n let b;\n let c;\n let d;\n\n for (j = 1; j <= tubeSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n\n a = (radialSegments + 1) * j + i - 1;\n b = (radialSegments + 1) * (j - 1) + i - 1;\n c = (radialSegments + 1) * (j - 1) + i;\n d = (radialSegments + 1) * j + i;\n\n indices.push(a);\n indices.push(b);\n indices.push(c);\n\n indices.push(c);\n indices.push(d);\n indices.push(a);\n }\n }\n\n return {\n primitiveType: \"triangles\",\n positions: positions,\n normals: normals,\n uv: uvs,\n uvs: uvs,\n indices: indices\n };\n}\n\nexport {buildTorusGeometry};\n","const letters = {\n ' ': {width: 16, points: []},\n '!': {\n width: 10, points: [\n [5, 21],\n [5, 7],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '\"': {\n width: 16, points: [\n [4, 21],\n [4, 14],\n [-1, -1],\n [12, 21],\n [12, 14]\n ]\n },\n '#': {\n width: 21, points: [\n [11, 25],\n [4, -7],\n [-1, -1],\n [17, 25],\n [10, -7],\n [-1, -1],\n [4, 12],\n [18, 12],\n [-1, -1],\n [3, 6],\n [17, 6]\n ]\n },\n '$': {\n width: 20, points: [\n [8, 25],\n [8, -4],\n [-1, -1],\n [12, 25],\n [12, -4],\n [-1, -1],\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n '%': {\n width: 24, points: [\n [21, 21],\n [3, 0],\n [-1, -1],\n [8, 21],\n [10, 19],\n [10, 17],\n [9, 15],\n [7, 14],\n [5, 14],\n [3, 16],\n [3, 18],\n [4, 20],\n [6, 21],\n [8, 21],\n [10, 20],\n [13, 19],\n [16, 19],\n [19, 20],\n [21, 21],\n [-1, -1],\n [17, 7],\n [15, 6],\n [14, 4],\n [14, 2],\n [16, 0],\n [18, 0],\n [20, 1],\n [21, 3],\n [21, 5],\n [19, 7],\n [17, 7]\n ]\n },\n '&': {\n width: 26, points: [\n [23, 12],\n [23, 13],\n [22, 14],\n [21, 14],\n [20, 13],\n [19, 11],\n [17, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [7, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 6],\n [4, 8],\n [5, 9],\n [12, 13],\n [13, 14],\n [14, 16],\n [14, 18],\n [13, 20],\n [11, 21],\n [9, 20],\n [8, 18],\n [8, 16],\n [9, 13],\n [11, 10],\n [16, 3],\n [18, 1],\n [20, 0],\n [22, 0],\n [23, 1],\n [23, 2]\n ]\n },\n '\\'': {\n width: 10, points: [\n [5, 19],\n [4, 20],\n [5, 21],\n [6, 20],\n [6, 18],\n [5, 16],\n [4, 15]\n ]\n },\n '(': {\n width: 14, points: [\n [11, 25],\n [9, 23],\n [7, 20],\n [5, 16],\n [4, 11],\n [4, 7],\n [5, 2],\n [7, -2],\n [9, -5],\n [11, -7]\n ]\n },\n ')': {\n width: 14, points: [\n [3, 25],\n [5, 23],\n [7, 20],\n [9, 16],\n [10, 11],\n [10, 7],\n [9, 2],\n [7, -2],\n [5, -5],\n [3, -7]\n ]\n },\n '*': {\n width: 16, points: [\n [8, 21],\n [8, 9],\n [-1, -1],\n [3, 18],\n [13, 12],\n [-1, -1],\n [13, 18],\n [3, 12]\n ]\n },\n '+': {\n width: 26, points: [\n [13, 18],\n [13, 0],\n [-1, -1],\n [4, 9],\n [22, 9]\n ]\n },\n ',': {\n width: 10, points: [\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '-': {\n width: 26, points: [\n [4, 9],\n [22, 9]\n ]\n },\n '.': {\n width: 10, points: [\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '/': {\n width: 22, points: [\n [20, 25],\n [2, -7]\n ]\n },\n '0': {\n width: 20, points: [\n [9, 21],\n [6, 20],\n [4, 17],\n [3, 12],\n [3, 9],\n [4, 4],\n [6, 1],\n [9, 0],\n [11, 0],\n [14, 1],\n [16, 4],\n [17, 9],\n [17, 12],\n [16, 17],\n [14, 20],\n [11, 21],\n [9, 21]\n ]\n },\n '1': {\n width: 20, points: [\n [6, 17],\n [8, 18],\n [11, 21],\n [11, 0]\n ]\n },\n '2': {\n width: 20, points: [\n [4, 16],\n [4, 17],\n [5, 19],\n [6, 20],\n [8, 21],\n [12, 21],\n [14, 20],\n [15, 19],\n [16, 17],\n [16, 15],\n [15, 13],\n [13, 10],\n [3, 0],\n [17, 0]\n ]\n },\n '3': {\n width: 20, points: [\n [5, 21],\n [16, 21],\n [10, 13],\n [13, 13],\n [15, 12],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '4': {\n width: 20, points: [\n [13, 21],\n [3, 7],\n [18, 7],\n [-1, -1],\n [13, 21],\n [13, 0]\n ]\n },\n '5': {\n width: 20, points: [\n [15, 21],\n [5, 21],\n [4, 12],\n [5, 13],\n [8, 14],\n [11, 14],\n [14, 13],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '6': {\n width: 20, points: [\n [16, 18],\n [15, 20],\n [12, 21],\n [10, 21],\n [7, 20],\n [5, 17],\n [4, 12],\n [4, 7],\n [5, 3],\n [7, 1],\n [10, 0],\n [11, 0],\n [14, 1],\n [16, 3],\n [17, 6],\n [17, 7],\n [16, 10],\n [14, 12],\n [11, 13],\n [10, 13],\n [7, 12],\n [5, 10],\n [4, 7]\n ]\n },\n '7': {\n width: 20, points: [\n [17, 21],\n [7, 0],\n [-1, -1],\n [3, 21],\n [17, 21]\n ]\n },\n '8': {\n width: 20, points: [\n [8, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 14],\n [7, 13],\n [11, 12],\n [14, 11],\n [16, 9],\n [17, 7],\n [17, 4],\n [16, 2],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 7],\n [4, 9],\n [6, 11],\n [9, 12],\n [13, 13],\n [15, 14],\n [16, 16],\n [16, 18],\n [15, 20],\n [12, 21],\n [8, 21]\n ]\n },\n '9': {\n width: 20, points: [\n [16, 14],\n [15, 11],\n [13, 9],\n [10, 8],\n [9, 8],\n [6, 9],\n [4, 11],\n [3, 14],\n [3, 15],\n [4, 18],\n [6, 20],\n [9, 21],\n [10, 21],\n [13, 20],\n [15, 18],\n [16, 14],\n [16, 9],\n [15, 4],\n [13, 1],\n [10, 0],\n [8, 0],\n [5, 1],\n [4, 3]\n ]\n },\n ':': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n ';': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '<': {\n width: 24, points: [\n [20, 18],\n [4, 9],\n [20, 0]\n ]\n },\n '=': {\n width: 26, points: [\n [4, 12],\n [22, 12],\n [-1, -1],\n [4, 6],\n [22, 6]\n ]\n },\n '>': {\n width: 24, points: [\n [4, 18],\n [20, 9],\n [4, 0]\n ]\n },\n '?': {\n width: 18, points: [\n [3, 16],\n [3, 17],\n [4, 19],\n [5, 20],\n [7, 21],\n [11, 21],\n [13, 20],\n [14, 19],\n [15, 17],\n [15, 15],\n [14, 13],\n [13, 12],\n [9, 10],\n [9, 7],\n [-1, -1],\n [9, 2],\n [8, 1],\n [9, 0],\n [10, 1],\n [9, 2]\n ]\n },\n '@': {\n width: 27, points: [\n [18, 13],\n [17, 15],\n [15, 16],\n [12, 16],\n [10, 15],\n [9, 14],\n [8, 11],\n [8, 8],\n [9, 6],\n [11, 5],\n [14, 5],\n [16, 6],\n [17, 8],\n [-1, -1],\n [12, 16],\n [10, 14],\n [9, 11],\n [9, 8],\n [10, 6],\n [11, 5],\n [-1, -1],\n [18, 16],\n [17, 8],\n [17, 6],\n [19, 5],\n [21, 5],\n [23, 7],\n [24, 10],\n [24, 12],\n [23, 15],\n [22, 17],\n [20, 19],\n [18, 20],\n [15, 21],\n [12, 21],\n [9, 20],\n [7, 19],\n [5, 17],\n [4, 15],\n [3, 12],\n [3, 9],\n [4, 6],\n [5, 4],\n [7, 2],\n [9, 1],\n [12, 0],\n [15, 0],\n [18, 1],\n [20, 2],\n [21, 3],\n [-1, -1],\n [19, 16],\n [18, 8],\n [18, 6],\n [19, 5]\n ]\n },\n 'A': {\n width: 18, points: [\n [9, 21],\n [1, 0],\n [-1, -1],\n [9, 21],\n [17, 0],\n [-1, -1],\n [4, 7],\n [14, 7]\n ]\n },\n 'B': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [-1, -1],\n [4, 11],\n [13, 11],\n [16, 10],\n [17, 9],\n [18, 7],\n [18, 4],\n [17, 2],\n [16, 1],\n [13, 0],\n [4, 0]\n ]\n },\n 'C': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5]\n ]\n },\n 'D': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [11, 21],\n [14, 20],\n [16, 18],\n [17, 16],\n [18, 13],\n [18, 8],\n [17, 5],\n [16, 3],\n [14, 1],\n [11, 0],\n [4, 0]\n ]\n },\n 'E': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11],\n [-1, -1],\n [4, 0],\n [17, 0]\n ]\n },\n 'F': {\n width: 18, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11]\n ]\n },\n 'G': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [18, 8],\n [-1, -1],\n [13, 8],\n [18, 8]\n ]\n },\n 'H': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [18, 0],\n [-1, -1],\n [4, 11],\n [18, 11]\n ]\n },\n 'I': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'J': {\n width: 16, points: [\n [12, 21],\n [12, 5],\n [11, 2],\n [10, 1],\n [8, 0],\n [6, 0],\n [4, 1],\n [3, 2],\n [2, 5],\n [2, 7]\n ]\n },\n 'K': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [4, 7],\n [-1, -1],\n [9, 12],\n [18, 0]\n ]\n },\n 'L': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 0],\n [16, 0]\n ]\n },\n 'M': {\n width: 24, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [20, 0]\n ]\n },\n 'N': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [18, 0],\n [-1, -1],\n [18, 21],\n [18, 0]\n ]\n },\n 'O': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21]\n ]\n },\n 'P': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 14],\n [17, 12],\n [16, 11],\n [13, 10],\n [4, 10]\n ]\n },\n 'Q': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [-1, -1],\n [12, 4],\n [18, -2]\n ]\n },\n 'R': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [4, 11],\n [-1, -1],\n [11, 11],\n [18, 0]\n ]\n },\n 'S': {\n width: 20, points: [\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n 'T': {\n width: 16, points: [\n [8, 21],\n [8, 0],\n [-1, -1],\n [1, 21],\n [15, 21]\n ]\n },\n 'U': {\n width: 22, points: [\n [4, 21],\n [4, 6],\n [5, 3],\n [7, 1],\n [10, 0],\n [12, 0],\n [15, 1],\n [17, 3],\n [18, 6],\n [18, 21]\n ]\n },\n 'V': {\n width: 18, points: [\n [1, 21],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 0]\n ]\n },\n 'W': {\n width: 24, points: [\n [2, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [17, 0],\n [-1, -1],\n [22, 21],\n [17, 0]\n ]\n },\n 'X': {\n width: 20, points: [\n [3, 21],\n [17, 0],\n [-1, -1],\n [17, 21],\n [3, 0]\n ]\n },\n 'Y': {\n width: 18, points: [\n [1, 21],\n [9, 11],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 11]\n ]\n },\n 'Z': {\n width: 20, points: [\n [17, 21],\n [3, 0],\n [-1, -1],\n [3, 21],\n [17, 21],\n [-1, -1],\n [3, 0],\n [17, 0]\n ]\n },\n '[': {\n width: 14, points: [\n [4, 25],\n [4, -7],\n [-1, -1],\n [5, 25],\n [5, -7],\n [-1, -1],\n [4, 25],\n [11, 25],\n [-1, -1],\n [4, -7],\n [11, -7]\n ]\n },\n '\\\\': {\n width: 14, points: [\n [0, 21],\n [14, -3]\n ]\n },\n ']': {\n width: 14, points: [\n [9, 25],\n [9, -7],\n [-1, -1],\n [10, 25],\n [10, -7],\n [-1, -1],\n [3, 25],\n [10, 25],\n [-1, -1],\n [3, -7],\n [10, -7]\n ]\n },\n '^': {\n width: 16, points: [\n [6, 15],\n [8, 18],\n [10, 15],\n [-1, -1],\n [3, 12],\n [8, 17],\n [13, 12],\n [-1, -1],\n [8, 17],\n [8, 0]\n ]\n },\n '_': {\n width: 16, points: [\n [0, -2],\n [16, -2]\n ]\n },\n '`': {\n width: 10, points: [\n [6, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 15],\n [6, 16],\n [5, 17]\n ]\n },\n 'a': {\n width: 19, points: [\n [15, 14],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'b': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'c': {\n width: 18, points: [\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'd': {\n width: 19, points: [\n [15, 21],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'e': {\n width: 18, points: [\n [3, 8],\n [15, 8],\n [15, 10],\n [14, 12],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'f': {\n width: 12, points: [\n [10, 21],\n [8, 21],\n [6, 20],\n [5, 17],\n [5, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'g': {\n width: 19, points: [\n [15, 14],\n [15, -2],\n [14, -5],\n [13, -6],\n [11, -7],\n [8, -7],\n [6, -6],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'h': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'i': {\n width: 8, points: [\n [3, 21],\n [4, 20],\n [5, 21],\n [4, 22],\n [3, 21],\n [-1, -1],\n [4, 14],\n [4, 0]\n ]\n },\n 'j': {\n width: 10, points: [\n [5, 21],\n [6, 20],\n [7, 21],\n [6, 22],\n [5, 21],\n [-1, -1],\n [6, 14],\n [6, -3],\n [5, -6],\n [3, -7],\n [1, -7]\n ]\n },\n 'k': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [14, 14],\n [4, 4],\n [-1, -1],\n [8, 8],\n [15, 0]\n ]\n },\n 'l': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'm': {\n width: 30, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0],\n [-1, -1],\n [15, 10],\n [18, 13],\n [20, 14],\n [23, 14],\n [25, 13],\n [26, 10],\n [26, 0]\n ]\n },\n 'n': {\n width: 19, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'o': {\n width: 19, points: [\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3],\n [16, 6],\n [16, 8],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14]\n ]\n },\n 'p': {\n width: 19, points: [\n [4, 14],\n [4, -7],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'q': {\n width: 19, points: [\n [15, 14],\n [15, -7],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'r': {\n width: 13, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 8],\n [5, 11],\n [7, 13],\n [9, 14],\n [12, 14]\n ]\n },\n 's': {\n width: 17, points: [\n [14, 11],\n [13, 13],\n [10, 14],\n [7, 14],\n [4, 13],\n [3, 11],\n [4, 9],\n [6, 8],\n [11, 7],\n [13, 6],\n [14, 4],\n [14, 3],\n [13, 1],\n [10, 0],\n [7, 0],\n [4, 1],\n [3, 3]\n ]\n },\n 't': {\n width: 12, points: [\n [5, 21],\n [5, 4],\n [6, 1],\n [8, 0],\n [10, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'u': {\n width: 19, points: [\n [4, 14],\n [4, 4],\n [5, 1],\n [7, 0],\n [10, 0],\n [12, 1],\n [15, 4],\n [-1, -1],\n [15, 14],\n [15, 0]\n ]\n },\n 'v': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0]\n ]\n },\n 'w': {\n width: 22, points: [\n [3, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [15, 0],\n [-1, -1],\n [19, 14],\n [15, 0]\n ]\n },\n 'x': {\n width: 17, points: [\n [3, 14],\n [14, 0],\n [-1, -1],\n [14, 14],\n [3, 0]\n ]\n },\n 'y': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0],\n [6, -4],\n [4, -6],\n [2, -7],\n [1, -7]\n ]\n },\n 'z': {\n width: 17, points: [\n [14, 14],\n [3, 0],\n [-1, -1],\n [3, 14],\n [14, 14],\n [-1, -1],\n [3, 0],\n [14, 0]\n ]\n },\n '{': {\n width: 14, points: [\n [9, 25],\n [7, 24],\n [6, 23],\n [5, 21],\n [5, 19],\n [6, 17],\n [7, 16],\n [8, 14],\n [8, 12],\n [6, 10],\n [-1, -1],\n [7, 24],\n [6, 22],\n [6, 20],\n [7, 18],\n [8, 17],\n [9, 15],\n [9, 13],\n [8, 11],\n [4, 9],\n [8, 7],\n [9, 5],\n [9, 3],\n [8, 1],\n [7, 0],\n [6, -2],\n [6, -4],\n [7, -6],\n [-1, -1],\n [6, 8],\n [8, 6],\n [8, 4],\n [7, 2],\n [6, 1],\n [5, -1],\n [5, -3],\n [6, -5],\n [7, -6],\n [9, -7]\n ]\n },\n '|': {\n width: 8, points: [\n [4, 25],\n [4, -7]\n ]\n },\n '}': {\n width: 14, points: [\n [5, 25],\n [7, 24],\n [8, 23],\n [9, 21],\n [9, 19],\n [8, 17],\n [7, 16],\n [6, 14],\n [6, 12],\n [8, 10],\n [-1, -1],\n [7, 24],\n [8, 22],\n [8, 20],\n [7, 18],\n [6, 17],\n [5, 15],\n [5, 13],\n [6, 11],\n [10, 9],\n [6, 7],\n [5, 5],\n [5, 3],\n [6, 1],\n [7, 0],\n [8, -2],\n [8, -4],\n [7, -6],\n [-1, -1],\n [8, 8],\n [6, 6],\n [6, 4],\n [7, 2],\n [8, 1],\n [9, -1],\n [9, -3],\n [8, -5],\n [7, -6],\n [5, -7]\n ]\n },\n '~': {\n width: 24, points: [\n [3, 6],\n [3, 8],\n [4, 11],\n [6, 12],\n [8, 12],\n [10, 11],\n [14, 8],\n [16, 7],\n [18, 7],\n [20, 8],\n [21, 10],\n [-1, -1],\n [3, 8],\n [4, 10],\n [6, 11],\n [8, 11],\n [10, 10],\n [14, 7],\n [16, 6],\n [18, 6],\n [20, 7],\n [21, 10],\n [21, 12]\n ]\n }\n};\n\n/**\n * @desc Creates wireframe text-shaped geometry arrays.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then create an {@link XKTMesh} with a text-shaped {@link XKTGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n * const xktModel = new XKTModel();\n *\n * const text = buildVectorTextGeometry({\n * origin: [0,0,0],\n * text: \"On the other side of the screen, it all looked so easy\"\n * });\n *\n * const xktGeometry = xktModel.createGeometry({\n * geometryId: \"textGeometry\",\n * primitiveType: text.primitiveType, // Will be \"lines\"\n * positions: text.positions,\n * indices: text.indices\n * });\n *\n * const xktMesh = xktModel.createMesh({\n * meshId: \"redTextMesh\",\n * geometryId: \"textGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0, 0],\n * opacity: 1\n * });\n *\n * const xktEntity = xktModel.createEntity({\n * entityId: \"redText\",\n * meshIds: [\"redTextMesh\"]\n * });\n *\n * xktModel.finalize();\n * ````\n *\n * @function buildVectorTextGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number[]} [cfg.origin] 3D point indicating the top left corner.\n * @param {Number} [cfg.size=1] Size of each character.\n * @param {String} [cfg.text=\"\"] The text.\n * @returns {Object} Geometry arrays for {@link XKTModel#createGeometry} or {@link XKTModel#createMesh}.\n */\nfunction buildVectorTextGeometry(cfg = {}) {\n\n var origin = cfg.origin || [0, 0, 0];\n var xOrigin = origin[0];\n var yOrigin = origin[1];\n var zOrigin = origin[2];\n var size = cfg.size || 1;\n\n var positions = [];\n var indices = [];\n var text = (\"\" + cfg.text).trim();\n var lines = (text || \"\").split(\"\\n\");\n var countVerts = 0;\n var y = 0;\n var x;\n var str;\n var len;\n var c;\n var mag = 1.0 / 25.0;\n var penUp;\n var p1;\n var p2;\n var needLine;\n var pointsLen;\n var a;\n\n for (var iLine = 0; iLine < lines.length; iLine++) {\n\n x = 0;\n str = lines[iLine];\n len = str.length;\n\n for (var i = 0; i < len; i++) {\n\n c = letters[str.charAt(i)];\n\n if (c === '\\n') {\n //alert(\"newline\");\n }\n\n if (!c) {\n continue;\n }\n\n penUp = 1;\n p1 = -1;\n p2 = -1;\n needLine = false;\n\n pointsLen = c.points.length;\n\n for (var j = 0; j < pointsLen; j++) {\n a = c.points[j];\n\n if (a[0] === -1 && a[1] === -1) {\n penUp = 1;\n needLine = false;\n continue;\n }\n\n positions.push((x + (a[0] * size) * mag) + xOrigin);\n positions.push((y + (a[1] * size) * mag) + yOrigin);\n positions.push(0 + zOrigin);\n\n if (p1 === -1) {\n p1 = countVerts;\n } else if (p2 === -1) {\n p2 = countVerts;\n } else {\n p1 = p2;\n p2 = countVerts;\n }\n countVerts++;\n\n if (penUp) {\n penUp = false;\n\n } else {\n indices.push(p1);\n indices.push(p2);\n }\n\n needLine = true;\n }\n x += c.width * mag * size;\n\n }\n y -= 35 * mag * size;\n }\n\n return {\n primitiveType: \"lines\",\n positions: positions,\n indices: indices\n };\n}\n\n\nexport {buildVectorTextGeometry}\n","export {XKT_INFO} from \"./XKT_INFO.js\";\nexport * from \"./constants.js\";\nexport {XKTModel} from \"./XKTModel/XKTModel.js\";\nexport {writeXKTModelToArrayBuffer} from \"./XKTModel/writeXKTModelToArrayBuffer.js\";\n\nexport {parseCityJSONIntoXKTModel} from \"./parsers/parseCityJSONIntoXKTModel.js\";\nexport {parseGLTFIntoXKTModel} from \"./parsers/parseGLTFIntoXKTModel.js\";\nexport {parseGLTFJSONIntoXKTModel} from \"./parsers/parseGLTFJSONIntoXKTModel.js\";\nexport {parseIFCIntoXKTModel} from \"./parsers/parseIFCIntoXKTModel.js\";\nexport {parseLASIntoXKTModel} from \"./parsers/parseLASIntoXKTModel.js\";\nexport {parseMetaModelIntoXKTModel} from \"./parsers/parseMetaModelIntoXKTModel.js\";\nexport {parsePCDIntoXKTModel} from \"./parsers/parsePCDIntoXKTModel.js\";\nexport {parsePLYIntoXKTModel} from \"./parsers/parsePLYIntoXKTModel.js\";\nexport {parseSTLIntoXKTModel} from \"./parsers/parseSTLIntoXKTModel.js\";\n\nexport {buildBoxGeometry} from \"./geometryBuilders/buildBoxGeometry.js\";\nexport {buildBoxLinesGeometry} from \"./geometryBuilders/buildBoxLinesGeometry.js\";\nexport {buildCylinderGeometry} from \"./geometryBuilders/buildCylinderGeometry.js\";\nexport {buildGridGeometry} from \"./geometryBuilders/buildGridGeometry.js\";\nexport {buildPlaneGeometry} from \"./geometryBuilders/buildPlaneGeometry.js\";\nexport {buildSphereGeometry} from \"./geometryBuilders/buildSphereGeometry.js\";\nexport {buildTorusGeometry} from \"./geometryBuilders/buildTorusGeometry.js\";\nexport {buildVectorTextGeometry} from \"./geometryBuilders/buildVectorTextGeometry.js\";\n\n","/** @private */\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n\n // filter collinear points around the cuts\n filterPoints(outerNode, outerNode.next);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n\nexport {earcut};","import {math} from \"./math.js\";\n\n/**\n * Converts surface-perpendicular face normals to vertex normals. Assumes that the mesh contains disjoint triangles\n * that don't share vertex array elements. Works by finding groups of vertices that have the same location and\n * averaging their normal vectors.\n *\n * @returns {{positions: Array, normals: *}}\n * @private\n */\nfunction faceToVertexNormals(positions, normals, options = {}) {\n const smoothNormalsAngleThreshold = options.smoothNormalsAngleThreshold || 20;\n const vertexMap = {};\n const vertexNormals = [];\n const vertexNormalAccum = {};\n let acc;\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let posi;\n let i;\n let j;\n let len;\n let a;\n let b;\n let c;\n\n for (i = 0, len = positions.length; i < len; i += 3) {\n\n posi = i / 3;\n\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n\n key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n\n if (vertexMap[key] === undefined) {\n vertexMap[key] = [posi];\n } else {\n vertexMap[key].push(posi);\n }\n\n const normal = math.normalizeVec3([normals[i], normals[i + 1], normals[i + 2]]);\n\n vertexNormals[posi] = normal;\n\n acc = math.vec4([normal[0], normal[1], normal[2], 1]);\n\n vertexNormalAccum[posi] = acc;\n }\n\n for (key in vertexMap) {\n\n if (vertexMap.hasOwnProperty(key)) {\n\n const vertices = vertexMap[key];\n const numVerts = vertices.length;\n\n for (i = 0; i < numVerts; i++) {\n\n const ii = vertices[i];\n\n acc = vertexNormalAccum[ii];\n\n for (j = 0; j < numVerts; j++) {\n\n if (i === j) {\n continue;\n }\n\n const jj = vertices[j];\n\n a = vertexNormals[ii];\n b = vertexNormals[jj];\n\n const angle = Math.abs(math.angleVec3(a, b) / math.DEGTORAD);\n\n if (angle < smoothNormalsAngleThreshold) {\n\n acc[0] += b[0];\n acc[1] += b[1];\n acc[2] += b[2];\n acc[3] += 1.0;\n }\n }\n }\n }\n }\n\n for (i = 0, len = normals.length; i < len; i += 3) {\n\n acc = vertexNormalAccum[i / 3];\n\n normals[i + 0] = acc[0] / acc[3];\n normals[i + 1] = acc[1] / acc[3];\n normals[i + 2] = acc[2] / acc[3];\n\n }\n}\n\nexport {faceToVertexNormals};","// Some temporary vars to help avoid garbage collection\n\nconst doublePrecision = true;\nconst FloatArrayType = doublePrecision ? Float64Array : Float32Array;\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4 = new FloatArrayType(4);\n\n/**\n * @private\n */\nconst math = {\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n /**\n * The number of radiians in a degree (0.0174532925).\n * @property DEGTORAD\n * @type {Number}\n */\n DEGTORAD: 0.0174532925,\n\n /**\n * The number of degrees in a radian.\n * @property RADTODEG\n * @type {Number}\n */\n RADTODEG: 57.295779513,\n\n /**\n * Returns a new, uninitialized two-element vector.\n * @method vec2\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec2(values) {\n return new FloatArrayType(values || 2);\n },\n\n /**\n * Returns a new, uninitialized three-element vector.\n * @method vec3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec3(values) {\n return new FloatArrayType(values || 3);\n },\n\n /**\n * Returns a new, uninitialized four-element vector.\n * @method vec4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec4(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3x3 matrix.\n * @method mat3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat3(values) {\n return new FloatArrayType(values || 9);\n },\n\n /**\n * Converts a 3x3 matrix to 4x4\n * @method mat3ToMat4\n * @param mat3 3x3 matrix.\n * @param mat4 4x4 matrix\n * @static\n * @returns {Number[]}\n */\n mat3ToMat4(mat3, mat4 = new FloatArrayType(16)) {\n mat4[0] = mat3[0];\n mat4[1] = mat3[1];\n mat4[2] = mat3[2];\n mat4[3] = 0;\n mat4[4] = mat3[3];\n mat4[5] = mat3[4];\n mat4[6] = mat3[5];\n mat4[7] = 0;\n mat4[8] = mat3[6];\n mat4[9] = mat3[7];\n mat4[10] = mat3[8];\n mat4[11] = 0;\n mat4[12] = 0;\n mat4[13] = 0;\n mat4[14] = 0;\n mat4[15] = 1;\n return mat4;\n },\n\n /**\n * Returns a new, uninitialized 4x4 matrix.\n * @method mat4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat4(values) {\n return new FloatArrayType(values || 16);\n },\n\n /**\n * Converts a 4x4 matrix to 3x3\n * @method mat4ToMat3\n * @param mat4 4x4 matrix.\n * @param mat3 3x3 matrix\n * @static\n * @returns {Number[]}\n */\n mat4ToMat3(mat4, mat3) { // TODO\n //return new FloatArrayType(values || 9);\n },\n\n /**\n * Returns a new UUID.\n * @method createUUID\n * @static\n * @return string The new UUID\n */\n createUUID: ((() => {\n const self = {};\n const lut = [];\n for (let i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n }\n return () => {\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n return `${lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff]}-${lut[d1 & 0xff]}${lut[d1 >> 8 & 0xff]}-${lut[d1 >> 16 & 0x0f | 0x40]}${lut[d1 >> 24 & 0xff]}-${lut[d2 & 0x3f | 0x80]}${lut[d2 >> 8 & 0xff]}-${lut[d2 >> 16 & 0xff]}${lut[d2 >> 24 & 0xff]}${lut[d3 & 0xff]}${lut[d3 >> 8 & 0xff]}${lut[d3 >> 16 & 0xff]}${lut[d3 >> 24 & 0xff]}`;\n };\n }))(),\n\n /**\n * Clamps a value to the given range.\n * @param {Number} value Value to clamp.\n * @param {Number} min Lower bound.\n * @param {Number} max Upper bound.\n * @returns {Number} Clamped result.\n */\n clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n\n /**\n * Floating-point modulus\n * @method fmod\n * @static\n * @param {Number} a\n * @param {Number} b\n * @returns {*}\n */\n fmod(a, b) {\n if (a < b) {\n console.error(\"math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring\");\n return a;\n }\n while (b <= a) {\n a -= b;\n }\n return a;\n },\n\n /**\n * Negates a four-element vector.\n * @method negateVec4\n * @static\n * @param {Array(Number)} v Vector to negate\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n negateVec4(v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = -v[0];\n dest[1] = -v[1];\n dest[2] = -v[2];\n dest[3] = -v[3];\n return dest;\n },\n\n /**\n * Adds one four-element vector to another.\n * @method addVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n dest[3] = u[3] + v[3];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a four-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n dest[3] = v[3] + s;\n return dest;\n },\n\n /**\n * Adds one three-element vector to another.\n * @method addVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a three-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n return dest;\n },\n\n /**\n * Subtracts one four-element vector from another.\n * @method subVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n dest[3] = u[3] - v[3];\n return dest;\n },\n\n /**\n * Subtracts one three-element vector from another.\n * @method subVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n return dest;\n },\n\n /**\n * Subtracts one two-element vector from another.\n * @method subVec2\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec2(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n return dest;\n },\n\n /**\n * Subtracts a scalar value from each element of a four-element vector.\n * @method subVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] - s;\n dest[1] = v[1] - s;\n dest[2] = v[2] - s;\n dest[3] = v[3] - s;\n return dest;\n },\n\n /**\n * Sets each element of a 4-element vector to a scalar value minus the value of that element.\n * @method subScalarVec4\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subScalarVec4(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s - v[0];\n dest[1] = s - v[1];\n dest[2] = s - v[2];\n dest[3] = s - v[3];\n return dest;\n },\n\n /**\n * Multiplies one three-element vector by another.\n * @method mulVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n mulVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] * v[0];\n dest[1] = u[1] * v[1];\n dest[2] = u[2] * v[2];\n dest[3] = u[3] * v[3];\n return dest;\n },\n\n /**\n * Multiplies each element of a four-element vector by a scalar.\n * @method mulVec34calar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n dest[3] = v[3] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a three-element vector by a scalar.\n * @method mulVec3Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a two-element vector by a scalar.\n * @method mulVec2Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec2Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n return dest;\n },\n\n /**\n * Divides one three-element vector by another.\n * @method divVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n return dest;\n },\n\n /**\n * Divides one four-element vector by another.\n * @method divVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n dest[3] = u[3] / v[3];\n return dest;\n },\n\n /**\n * Divides a scalar by a three-element vector, returning a new vector.\n * @method divScalarVec3\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec3(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n return dest;\n },\n\n /**\n * Divides a three-element vector by a scalar.\n * @method divVec3Scalar\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n return dest;\n },\n\n /**\n * Divides a four-element vector by a scalar.\n * @method divVec4Scalar\n * @static\n * @param v vec4\n * @param s scalar\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n dest[3] = v[3] / s;\n return dest;\n },\n\n\n /**\n * Divides a scalar by a four-element vector, returning a new vector.\n * @method divScalarVec4\n * @static\n * @param s scalar\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec4(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n dest[3] = s / v[3];\n return dest;\n },\n\n /**\n * Returns the dot product of two four-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec4(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2] + u[3] * v[3]);\n },\n\n /**\n * Returns the cross product of two four-element vectors.\n * @method cross3Vec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec4(u, v) {\n const u0 = u[0];\n const u1 = u[1];\n const u2 = u[2];\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n return [\n u1 * v2 - u2 * v1,\n u2 * v0 - u0 * v2,\n u0 * v1 - u1 * v0,\n 0.0];\n },\n\n /**\n * Returns the cross product of two three-element vectors.\n * @method cross3Vec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n const x = u[0];\n const y = u[1];\n const z = u[2];\n const x2 = v[0];\n const y2 = v[1];\n const z2 = v[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n },\n\n\n sqLenVec4(v) { // TODO\n return math.dotVec4(v, v);\n },\n\n /**\n * Returns the length of a four-element vector.\n * @method lenVec4\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec4(v) {\n return Math.sqrt(math.sqLenVec4(v));\n },\n\n /**\n * Returns the dot product of two three-element vectors.\n * @method dotVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec3(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);\n },\n\n /**\n * Returns the dot product of two two-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec2(u, v) {\n return (u[0] * v[0] + u[1] * v[1]);\n },\n\n\n sqLenVec3(v) {\n return math.dotVec3(v, v);\n },\n\n\n sqLenVec2(v) {\n return math.dotVec2(v, v);\n },\n\n /**\n * Returns the length of a three-element vector.\n * @method lenVec3\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec3(v) {\n return Math.sqrt(math.sqLenVec3(v));\n },\n\n distVec3: ((() => {\n const vec = new FloatArrayType(3);\n return (v, w) => math.lenVec3(math.subVec3(v, w, vec));\n }))(),\n\n /**\n * Returns the length of a two-element vector.\n * @method lenVec2\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec2(v) {\n return Math.sqrt(math.sqLenVec2(v));\n },\n\n distVec2: ((() => {\n const vec = new FloatArrayType(2);\n return (v, w) => math.lenVec2(math.subVec2(v, w, vec));\n }))(),\n\n /**\n * @method rcpVec3\n * @static\n * @param v vec3\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n rcpVec3(v, dest) {\n return math.divScalarVec3(1.0, v, dest);\n },\n\n /**\n * Normalizes a four-element vector\n * @method normalizeVec4\n * @static\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n normalizeVec4(v, dest) {\n const f = 1.0 / math.lenVec4(v);\n return math.mulVec4Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a three-element vector\n * @method normalizeVec4\n * @static\n */\n normalizeVec3(v, dest) {\n const f = 1.0 / math.lenVec3(v);\n return math.mulVec3Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a two-element vector\n * @method normalizeVec2\n * @static\n */\n normalizeVec2(v, dest) {\n const f = 1.0 / math.lenVec2(v);\n return math.mulVec2Scalar(v, f, dest);\n },\n\n /**\n * Gets the angle between two vectors\n * @method angleVec3\n * @param v\n * @param w\n * @returns {number}\n */\n angleVec3(v, w) {\n let theta = math.dotVec3(v, w) / (Math.sqrt(math.sqLenVec3(v) * math.sqLenVec3(w)));\n theta = theta < -1 ? -1 : (theta > 1 ? 1 : theta); // Clamp to handle numerical problems\n return Math.acos(theta);\n },\n\n /**\n * Creates a three-element vector from the rotation part of a sixteen-element matrix.\n * @param m\n * @param dest\n */\n vec3FromMat4Scale: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (m, dest) => {\n\n tempVec3[0] = m[0];\n tempVec3[1] = m[1];\n tempVec3[2] = m[2];\n\n dest[0] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[4];\n tempVec3[1] = m[5];\n tempVec3[2] = m[6];\n\n dest[1] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[8];\n tempVec3[1] = m[9];\n tempVec3[2] = m[10];\n\n dest[2] = math.lenVec3(tempVec3);\n\n return dest;\n };\n }))(),\n\n /**\n * Converts an n-element vector to a JSON-serializable\n * array with values rounded to two decimal places.\n */\n vecToArray: ((() => {\n function trunc(v) {\n return Math.round(v * 100000) / 100000\n }\n\n return v => {\n v = Array.prototype.slice.call(v);\n for (let i = 0, len = v.length; i < len; i++) {\n v[i] = trunc(v[i]);\n }\n return v;\n };\n }))(),\n\n /**\n * Converts a 3-element vector from an array to an object of the form ````{x:999, y:999, z:999}````.\n * @param arr\n * @returns {{x: *, y: *, z: *}}\n */\n xyzArrayToObject(arr) {\n return {\"x\": arr[0], \"y\": arr[1], \"z\": arr[2]};\n },\n\n /**\n * Converts a 3-element vector object of the form ````{x:999, y:999, z:999}```` to an array.\n * @param xyz\n * @param [arry]\n * @returns {*[]}\n */\n xyzObjectToArray(xyz, arry) {\n arry = arry || new FloatArrayType(3);\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n },\n\n /**\n * Duplicates a 4x4 identity matrix.\n * @method dupMat4\n * @static\n */\n dupMat4(m) {\n return m.slice(0, 16);\n },\n\n /**\n * Extracts a 3x3 matrix from a 4x4 matrix.\n * @method mat4To3\n * @static\n */\n mat4To3(m) {\n return [\n m[0], m[1], m[2],\n m[4], m[5], m[6],\n m[8], m[9], m[10]\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to the given scalar value.\n * @method m4s\n * @static\n */\n m4s(s) {\n return [\n s, s, s, s,\n s, s, s, s,\n s, s, s, s,\n s, s, s, s\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to zero.\n * @method setMat4ToZeroes\n * @static\n */\n setMat4ToZeroes() {\n return math.m4s(0.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n setMat4ToOnes() {\n return math.m4s(1.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n diagonalMat4v(v) {\n return new FloatArrayType([\n v[0], 0.0, 0.0, 0.0,\n 0.0, v[1], 0.0, 0.0,\n 0.0, 0.0, v[2], 0.0,\n 0.0, 0.0, 0.0, v[3]\n ]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given vector.\n * @method diagonalMat4c\n * @static\n */\n diagonalMat4c(x, y, z, w) {\n return math.diagonalMat4v([x, y, z, w]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given scalar.\n * @method diagonalMat4s\n * @static\n */\n diagonalMat4s(s) {\n return math.diagonalMat4c(s, s, s, s);\n },\n\n /**\n * Returns a 4x4 identity matrix.\n * @method identityMat4\n * @static\n */\n identityMat4(mat = new FloatArrayType(16)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n mat[3] = 0.0;\n\n mat[4] = 0.0;\n mat[5] = 1.0;\n mat[6] = 0.0;\n mat[7] = 0.0;\n\n mat[8] = 0.0;\n mat[9] = 0.0;\n mat[10] = 1.0;\n mat[11] = 0.0;\n\n mat[12] = 0.0;\n mat[13] = 0.0;\n mat[14] = 0.0;\n mat[15] = 1.0;\n\n return mat;\n },\n\n /**\n * Returns a 3x3 identity matrix.\n * @method identityMat3\n * @static\n */\n identityMat3(mat = new FloatArrayType(9)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n\n mat[3] = 0.0;\n mat[4] = 1.0;\n mat[5] = 0.0;\n\n mat[6] = 0.0;\n mat[7] = 0.0;\n mat[8] = 1.0;\n\n return mat;\n },\n\n /**\n * Tests if the given 4x4 matrix is the identity matrix.\n * @method isIdentityMat4\n * @static\n */\n isIdentityMat4(m) {\n if (m[0] !== 1.0 || m[1] !== 0.0 || m[2] !== 0.0 || m[3] !== 0.0 ||\n m[4] !== 0.0 || m[5] !== 1.0 || m[6] !== 0.0 || m[7] !== 0.0 ||\n m[8] !== 0.0 || m[9] !== 0.0 || m[10] !== 1.0 || m[11] !== 0.0 ||\n m[12] !== 0.0 || m[13] !== 0.0 || m[14] !== 0.0 || m[15] !== 1.0) {\n return false;\n }\n return true;\n },\n\n /**\n * Negates the given 4x4 matrix.\n * @method negateMat4\n * @static\n */\n negateMat4(m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = -m[0];\n dest[1] = -m[1];\n dest[2] = -m[2];\n dest[3] = -m[3];\n dest[4] = -m[4];\n dest[5] = -m[5];\n dest[6] = -m[6];\n dest[7] = -m[7];\n dest[8] = -m[8];\n dest[9] = -m[9];\n dest[10] = -m[10];\n dest[11] = -m[11];\n dest[12] = -m[12];\n dest[13] = -m[13];\n dest[14] = -m[14];\n dest[15] = -m[15];\n return dest;\n },\n\n /**\n * Adds the given 4x4 matrices together.\n * @method addMat4\n * @static\n */\n addMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] + b[0];\n dest[1] = a[1] + b[1];\n dest[2] = a[2] + b[2];\n dest[3] = a[3] + b[3];\n dest[4] = a[4] + b[4];\n dest[5] = a[5] + b[5];\n dest[6] = a[6] + b[6];\n dest[7] = a[7] + b[7];\n dest[8] = a[8] + b[8];\n dest[9] = a[9] + b[9];\n dest[10] = a[10] + b[10];\n dest[11] = a[11] + b[11];\n dest[12] = a[12] + b[12];\n dest[13] = a[13] + b[13];\n dest[14] = a[14] + b[14];\n dest[15] = a[15] + b[15];\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addMat4Scalar\n * @static\n */\n addMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] + s;\n dest[1] = m[1] + s;\n dest[2] = m[2] + s;\n dest[3] = m[3] + s;\n dest[4] = m[4] + s;\n dest[5] = m[5] + s;\n dest[6] = m[6] + s;\n dest[7] = m[7] + s;\n dest[8] = m[8] + s;\n dest[9] = m[9] + s;\n dest[10] = m[10] + s;\n dest[11] = m[11] + s;\n dest[12] = m[12] + s;\n dest[13] = m[13] + s;\n dest[14] = m[14] + s;\n dest[15] = m[15] + s;\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addScalarMat4\n * @static\n */\n addScalarMat4(s, m, dest) {\n return math.addMat4Scalar(m, s, dest);\n },\n\n /**\n * Subtracts the second 4x4 matrix from the first.\n * @method subMat4\n * @static\n */\n subMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] - b[0];\n dest[1] = a[1] - b[1];\n dest[2] = a[2] - b[2];\n dest[3] = a[3] - b[3];\n dest[4] = a[4] - b[4];\n dest[5] = a[5] - b[5];\n dest[6] = a[6] - b[6];\n dest[7] = a[7] - b[7];\n dest[8] = a[8] - b[8];\n dest[9] = a[9] - b[9];\n dest[10] = a[10] - b[10];\n dest[11] = a[11] - b[11];\n dest[12] = a[12] - b[12];\n dest[13] = a[13] - b[13];\n dest[14] = a[14] - b[14];\n dest[15] = a[15] - b[15];\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subMat4Scalar\n * @static\n */\n subMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] - s;\n dest[1] = m[1] - s;\n dest[2] = m[2] - s;\n dest[3] = m[3] - s;\n dest[4] = m[4] - s;\n dest[5] = m[5] - s;\n dest[6] = m[6] - s;\n dest[7] = m[7] - s;\n dest[8] = m[8] - s;\n dest[9] = m[9] - s;\n dest[10] = m[10] - s;\n dest[11] = m[11] - s;\n dest[12] = m[12] - s;\n dest[13] = m[13] - s;\n dest[14] = m[14] - s;\n dest[15] = m[15] - s;\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subScalarMat4\n * @static\n */\n subScalarMat4(s, m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = s - m[0];\n dest[1] = s - m[1];\n dest[2] = s - m[2];\n dest[3] = s - m[3];\n dest[4] = s - m[4];\n dest[5] = s - m[5];\n dest[6] = s - m[6];\n dest[7] = s - m[7];\n dest[8] = s - m[8];\n dest[9] = s - m[9];\n dest[10] = s - m[10];\n dest[11] = s - m[11];\n dest[12] = s - m[12];\n dest[13] = s - m[13];\n dest[14] = s - m[14];\n dest[15] = s - m[15];\n return dest;\n },\n\n /**\n * Multiplies the two given 4x4 matrix by each other.\n * @method mulMat4\n * @static\n */\n mulMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = a[0];\n\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b03 = b[3];\n const b10 = b[4];\n const b11 = b[5];\n const b12 = b[6];\n const b13 = b[7];\n const b20 = b[8];\n const b21 = b[9];\n const b22 = b[10];\n const b23 = b[11];\n const b30 = b[12];\n const b31 = b[13];\n const b32 = b[14];\n const b33 = b[15];\n\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n\n return dest;\n },\n\n /**\n * Multiplies the two given 3x3 matrices by each other.\n * @method mulMat4\n * @static\n */\n mulMat3(a, b, dest) {\n if (!dest) {\n dest = new FloatArrayType(9);\n }\n\n const a11 = a[0];\n const a12 = a[3];\n const a13 = a[6];\n const a21 = a[1];\n const a22 = a[4];\n const a23 = a[7];\n const a31 = a[2];\n const a32 = a[5];\n const a33 = a[8];\n const b11 = b[0];\n const b12 = b[3];\n const b13 = b[6];\n const b21 = b[1];\n const b22 = b[4];\n const b23 = b[7];\n const b31 = b[2];\n const b32 = b[5];\n const b33 = b[8];\n\n dest[0] = a11 * b11 + a12 * b21 + a13 * b31;\n dest[3] = a11 * b12 + a12 * b22 + a13 * b32;\n dest[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n dest[1] = a21 * b11 + a22 * b21 + a23 * b31;\n dest[4] = a21 * b12 + a22 * b22 + a23 * b32;\n dest[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n dest[2] = a31 * b11 + a32 * b21 + a33 * b31;\n dest[5] = a31 * b12 + a32 * b22 + a33 * b32;\n dest[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return dest;\n },\n\n /**\n * Multiplies each element of the given 4x4 matrix by the given scalar.\n * @method mulMat4Scalar\n * @static\n */\n mulMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] * s;\n dest[1] = m[1] * s;\n dest[2] = m[2] * s;\n dest[3] = m[3] * s;\n dest[4] = m[4] * s;\n dest[5] = m[5] * s;\n dest[6] = m[6] * s;\n dest[7] = m[7] * s;\n dest[8] = m[8] * s;\n dest[9] = m[9] * s;\n dest[10] = m[10] * s;\n dest[11] = m[11] * s;\n dest[12] = m[12] * s;\n dest[13] = m[13] * s;\n dest[14] = m[14] * s;\n dest[15] = m[15] * s;\n return dest;\n },\n\n /**\n * Multiplies the given 4x4 matrix by the given four-element vector.\n * @method mulMat4v4\n * @static\n */\n mulMat4v4(m, v, dest = math.vec4()) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Transposes the given 4x4 matrix.\n * @method transposeMat4\n * @static\n */\n transposeMat4(mat, dest) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n const m4 = mat[4];\n\n const m14 = mat[14];\n const m8 = mat[8];\n const m13 = mat[13];\n const m12 = mat[12];\n const m9 = mat[9];\n if (!dest || mat === dest) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a12 = mat[6];\n const a13 = mat[7];\n const a23 = mat[11];\n mat[1] = m4;\n mat[2] = m8;\n mat[3] = m12;\n mat[4] = a01;\n mat[6] = m9;\n mat[7] = m13;\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = m14;\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = m4;\n dest[2] = m8;\n dest[3] = m12;\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = m9;\n dest[7] = m13;\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = m14;\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n },\n\n /**\n * Transposes the given 3x3 matrix.\n *\n * @method transposeMat3\n * @static\n */\n transposeMat3(mat, dest) {\n if (dest === mat) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a12 = mat[5];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = a01;\n dest[5] = mat[7];\n dest[6] = a02;\n dest[7] = a12;\n } else {\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n }\n return dest;\n },\n\n /**\n * Returns the determinant of the given 4x4 matrix.\n * @method determinantMat4\n * @static\n */\n determinantMat4(mat) {\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n return a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33;\n },\n\n /**\n * Returns the inverse of the given 4x4 matrix.\n * @method inverseMat4\n * @static\n */\n inverseMat4(mat, dest) {\n if (!dest) {\n dest = mat;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant (inlined to avoid double-caching)\n const invDet = 1 / (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06);\n\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\n return dest;\n },\n\n /**\n * Returns the trace of the given 4x4 matrix.\n * @method traceMat4\n * @static\n */\n traceMat4(m) {\n return (m[0] + m[5] + m[10] + m[15]);\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4\n * @static\n */\n translationMat4v(v, dest) {\n const m = dest || math.identityMat4();\n m[12] = v[0];\n m[13] = v[1];\n m[14] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 translation matrix.\n * @method translationMat3\n * @static\n */\n translationMat3v(v, dest) {\n const m = dest || math.identityMat3();\n m[6] = v[0];\n m[7] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4c\n * @static\n */\n translationMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.translationMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4s\n * @static\n */\n translationMat4s(s, dest) {\n return math.translationMat4c(s, s, s, dest);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param v\n * @param m\n */\n translateMat4v(xyz, m) {\n return math.translateMat4c(xyz[0], xyz[1], xyz[2], m);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param x\n * @param y\n * @param z\n * @param m\n */\n OLDtranslateMat4c(x, y, z, m) {\n\n const m12 = m[12];\n m[0] += m12 * x;\n m[4] += m12 * y;\n m[8] += m12 * z;\n\n const m13 = m[13];\n m[1] += m13 * x;\n m[5] += m13 * y;\n m[9] += m13 * z;\n\n const m14 = m[14];\n m[2] += m14 * x;\n m[6] += m14 * y;\n m[10] += m14 * z;\n\n const m15 = m[15];\n m[3] += m15 * x;\n m[7] += m15 * y;\n m[11] += m15 * z;\n\n return m;\n },\n\n translateMat4c(x, y, z, m) {\n\n const m3 = m[3];\n m[0] += m3 * x;\n m[1] += m3 * y;\n m[2] += m3 * z;\n\n const m7 = m[7];\n m[4] += m7 * x;\n m[5] += m7 * y;\n m[6] += m7 * z;\n\n const m11 = m[11];\n m[8] += m11 * x;\n m[9] += m11 * y;\n m[10] += m11 * z;\n\n const m15 = m[15];\n m[12] += m15 * x;\n m[13] += m15 * y;\n m[14] += m15 * z;\n\n return m;\n },\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4v\n * @static\n */\n rotationMat4v(anglerad, axis, m) {\n const ax = math.normalizeVec4([axis[0], axis[1], axis[2], 0.0], []);\n const s = Math.sin(anglerad);\n const c = Math.cos(anglerad);\n const q = 1.0 - c;\n\n const x = ax[0];\n const y = ax[1];\n const z = ax[2];\n\n let xy;\n let yz;\n let zx;\n let xs;\n let ys;\n let zs;\n\n //xx = x * x; used once\n //yy = y * y; used once\n //zz = z * z; used once\n xy = x * y;\n yz = y * z;\n zx = z * x;\n xs = x * s;\n ys = y * s;\n zs = z * s;\n\n m = m || math.mat4();\n\n m[0] = (q * x * x) + c;\n m[1] = (q * xy) + zs;\n m[2] = (q * zx) - ys;\n m[3] = 0.0;\n\n m[4] = (q * xy) - zs;\n m[5] = (q * y * y) + c;\n m[6] = (q * yz) + xs;\n m[7] = 0.0;\n\n m[8] = (q * zx) + ys;\n m[9] = (q * yz) - xs;\n m[10] = (q * z * z) + c;\n m[11] = 0.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = 0.0;\n m[15] = 1.0;\n\n return m;\n },\n\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4c\n * @static\n */\n rotationMat4c(anglerad, x, y, z, mat) {\n return math.rotationMat4v(anglerad, [x, y, z], mat);\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4v\n * @static\n */\n scalingMat4v(v, m = math.identityMat4()) {\n m[0] = v[0];\n m[5] = v[1];\n m[10] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 scale matrix.\n * @method scalingMat3v\n * @static\n */\n scalingMat3v(v, m = math.identityMat3()) {\n m[0] = v[0];\n m[4] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4c\n * @static\n */\n scalingMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.scalingMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param x\n * @param y\n * @param z\n * @param m\n */\n scaleMat4c(x, y, z, m) {\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n return m;\n },\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param xyz\n * @param m\n */\n scaleMat4v(xyz, m) {\n\n const x = xyz[0];\n const y = xyz[1];\n const z = xyz[2];\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4s\n * @static\n */\n scalingMat4s(s) {\n return math.scalingMat4c(s, s, s);\n },\n\n /**\n * Creates a matrix from a quaternion rotation and vector translation\n *\n * @param {Number[]} q Rotation quaternion\n * @param {Number[]} v Translation vector\n * @param {Number[]} dest Destination matrix\n * @returns {Number[]} dest\n */\n rotationTranslationMat4(q, v, dest = math.mat4()) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = v[0];\n dest[13] = v[1];\n dest[14] = v[2];\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Gets Euler angles from a 4x4 matrix.\n *\n * @param {Number[]} mat The 4x4 matrix.\n * @param {String} order Desired Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination Euler angles, created by default.\n * @returns {Number[]} The Euler angles.\n */\n mat4ToEuler(mat, order, dest = math.vec4()) {\n const clamp = math.clamp;\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = mat[0];\n\n const m12 = mat[4];\n const m13 = mat[8];\n const m21 = mat[1];\n const m22 = mat[5];\n const m23 = mat[9];\n const m31 = mat[2];\n const m32 = mat[6];\n const m33 = mat[10];\n\n if (order === 'XYZ') {\n\n dest[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.99999) {\n dest[0] = Math.atan2(-m23, m33);\n dest[2] = Math.atan2(-m12, m11);\n } else {\n dest[0] = Math.atan2(m32, m22);\n dest[2] = 0;\n\n }\n\n } else if (order === 'YXZ') {\n\n dest[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < 0.99999) {\n dest[1] = Math.atan2(m13, m33);\n dest[2] = Math.atan2(m21, m22);\n } else {\n dest[1] = Math.atan2(-m31, m11);\n dest[2] = 0;\n }\n\n } else if (order === 'ZXY') {\n\n dest[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < 0.99999) {\n dest[1] = Math.atan2(-m31, m33);\n dest[2] = Math.atan2(-m12, m22);\n } else {\n dest[1] = 0;\n dest[2] = Math.atan2(m21, m11);\n }\n\n } else if (order === 'ZYX') {\n\n dest[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < 0.99999) {\n dest[0] = Math.atan2(m32, m33);\n dest[2] = Math.atan2(m21, m11);\n } else {\n dest[0] = 0;\n dest[2] = Math.atan2(-m12, m22);\n }\n\n } else if (order === 'YZX') {\n\n dest[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < 0.99999) {\n dest[0] = Math.atan2(-m23, m22);\n dest[1] = Math.atan2(-m31, m11);\n } else {\n dest[0] = 0;\n dest[1] = Math.atan2(m13, m33);\n }\n\n } else if (order === 'XZY') {\n\n dest[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < 0.99999) {\n dest[0] = Math.atan2(m32, m22);\n dest[1] = Math.atan2(m13, m11);\n } else {\n dest[0] = Math.atan2(-m23, m33);\n dest[1] = 0;\n }\n }\n\n return dest;\n },\n\n composeMat4(position, quaternion, scale, mat = math.mat4()) {\n math.quaternionToRotationMat4(quaternion, mat);\n math.scaleMat4v(scale, mat);\n math.translateMat4v(position, mat);\n\n return mat;\n },\n\n decomposeMat4: (() => {\n\n const vec = new FloatArrayType(3);\n const matrix = new FloatArrayType(16);\n\n return function decompose(mat, position, quaternion, scale) {\n\n vec[0] = mat[0];\n vec[1] = mat[1];\n vec[2] = mat[2];\n\n let sx = math.lenVec3(vec);\n\n vec[0] = mat[4];\n vec[1] = mat[5];\n vec[2] = mat[6];\n\n const sy = math.lenVec3(vec);\n\n vec[8] = mat[8];\n vec[9] = mat[9];\n vec[10] = mat[10];\n\n const sz = math.lenVec3(vec);\n\n // if determine is negative, we need to invert one scale\n const det = math.determinantMat4(mat);\n\n if (det < 0) {\n sx = -sx;\n }\n\n position[0] = mat[12];\n position[1] = mat[13];\n position[2] = mat[14];\n\n // scale the rotation part\n matrix.set(mat);\n\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n\n matrix[0] *= invSX;\n matrix[1] *= invSX;\n matrix[2] *= invSX;\n\n matrix[4] *= invSY;\n matrix[5] *= invSY;\n matrix[6] *= invSY;\n\n matrix[8] *= invSZ;\n matrix[9] *= invSZ;\n matrix[10] *= invSZ;\n\n math.mat4ToQuaternion(matrix, quaternion);\n\n scale[0] = sx;\n scale[1] = sy;\n scale[2] = sz;\n\n return this;\n\n };\n\n })(),\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4v\n * @param pos vec3 position of the viewer\n * @param target vec3 point the viewer is looking at\n * @param up vec3 pointing \"up\"\n * @param dest mat4 Optional, mat4 matrix will be written into\n *\n * @return {mat4} dest if specified, a new mat4 otherwise\n */\n lookAtMat4v(pos, target, up, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n\n const posx = pos[0];\n const posy = pos[1];\n const posz = pos[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n const targetx = target[0];\n const targety = target[1];\n const targetz = target[2];\n\n if (posx === targetx && posy === targety && posz === targetz) {\n return math.identityMat4();\n }\n\n let z0;\n let z1;\n let z2;\n let x0;\n let x1;\n let x2;\n let y0;\n let y1;\n let y2;\n let len;\n\n //vec3.direction(eye, center, z);\n z0 = posx - targetx;\n z1 = posy - targety;\n z2 = posz - targetz;\n\n // normalize (no check needed for 0 because of early return)\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n //vec3.normalize(vec3.cross(up, z, x));\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n //vec3.normalize(vec3.cross(z, x, y));\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * posx + x1 * posy + x2 * posz);\n dest[13] = -(y0 * posx + y1 * posy + y2 * posz);\n dest[14] = -(z0 * posx + z1 * posy + z2 * posz);\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4c\n * @static\n */\n lookAtMat4c(posx, posy, posz, targetx, targety, targetz, upx, upy, upz) {\n return math.lookAtMat4v([posx, posy, posz], [targetx, targety, targetz], [upx, upy, upz], []);\n },\n\n /**\n * Returns a 4x4 orthographic projection matrix.\n * @method orthoMat4c\n * @static\n */\n orthoMat4c(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n\n dest[0] = 2.0 / rl;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 0.0;\n\n dest[4] = 0.0;\n dest[5] = 2.0 / tb;\n dest[6] = 0.0;\n dest[7] = 0.0;\n\n dest[8] = 0.0;\n dest[9] = 0.0;\n dest[10] = -2.0 / fn;\n dest[11] = 0.0;\n\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1.0;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4v(fmin, fmax, m) {\n if (!m) {\n m = math.mat4();\n }\n\n const fmin4 = [fmin[0], fmin[1], fmin[2], 0.0];\n const fmax4 = [fmax[0], fmax[1], fmax[2], 0.0];\n\n math.addVec4(fmax4, fmin4, tempMat1);\n math.subVec4(fmax4, fmin4, tempMat2);\n\n const t = 2.0 * fmin4[2];\n\n const tempMat20 = tempMat2[0];\n const tempMat21 = tempMat2[1];\n const tempMat22 = tempMat2[2];\n\n m[0] = t / tempMat20;\n m[1] = 0.0;\n m[2] = 0.0;\n m[3] = 0.0;\n\n m[4] = 0.0;\n m[5] = t / tempMat21;\n m[6] = 0.0;\n m[7] = 0.0;\n\n m[8] = tempMat1[0] / tempMat20;\n m[9] = tempMat1[1] / tempMat21;\n m[10] = -tempMat1[2] / tempMat22;\n m[11] = -1.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = -t * fmax4[2] / tempMat22;\n m[15] = 0.0;\n\n return m;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method perspectiveMat4v\n * @static\n */\n perspectiveMat4(fovyrad, aspectratio, znear, zfar, m) {\n const pmin = [];\n const pmax = [];\n\n pmin[2] = znear;\n pmax[2] = zfar;\n\n pmax[1] = pmin[2] * Math.tan(fovyrad / 2.0);\n pmin[1] = -pmax[1];\n\n pmax[0] = pmax[1] * aspectratio;\n pmin[0] = -pmax[0];\n\n return math.frustumMat4v(pmin, pmax, m);\n },\n\n /**\n * Transforms a three-element position by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint3(m, p, dest = math.vec3()) {\n\n const x = p[0];\n const y = p[1];\n const z = p[2];\n\n dest[0] = (m[0] * x) + (m[4] * y) + (m[8] * z) + m[12];\n dest[1] = (m[1] * x) + (m[5] * y) + (m[9] * z) + m[13];\n dest[2] = (m[2] * x) + (m[6] * y) + (m[10] * z) + m[14];\n\n return dest;\n },\n\n /**\n * Transforms a homogeneous coordinate by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint4(m, v, dest = math.vec4()) {\n dest[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12] * v[3];\n dest[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13] * v[3];\n dest[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14] * v[3];\n dest[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];\n\n return dest;\n },\n\n\n /**\n * Transforms an array of three-element positions by a 4x4 matrix.\n * @method transformPoints3\n * @static\n */\n transformPoints3(m, points, points2) {\n const result = points2 || [];\n const len = points.length;\n let p0;\n let p1;\n let p2;\n let pi;\n\n // cache values\n const m0 = m[0];\n\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n let r;\n\n for (let i = 0; i < len; ++i) {\n\n // cache values\n pi = points[i];\n\n p0 = pi[0];\n p1 = pi[1];\n p2 = pi[2];\n\n r = result[i] || (result[i] = [0, 0, 0]);\n\n r[0] = (m0 * p0) + (m4 * p1) + (m8 * p2) + m12;\n r[1] = (m1 * p0) + (m5 * p1) + (m9 * p2) + m13;\n r[2] = (m2 * p0) + (m6 * p1) + (m10 * p2) + m14;\n r[3] = (m3 * p0) + (m7 * p1) + (m11 * p2) + m15;\n }\n\n result.length = len;\n\n return result;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions3\n * @static\n */\n transformPositions3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 3) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions4\n * @static\n */\n transformPositions4(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms a three-element vector by a 4x4 matrix.\n * @method transformVec3\n * @static\n */\n transformVec3(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n dest = dest || this.vec3();\n dest[0] = (m[0] * v0) + (m[4] * v1) + (m[8] * v2);\n dest[1] = (m[1] * v0) + (m[5] * v1) + (m[9] * v2);\n dest[2] = (m[2] * v0) + (m[6] * v1) + (m[10] * v2);\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 matrix.\n * @method transformVec4\n * @static\n */\n transformVec4(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest = dest || math.vec4();\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the x-axis\n *\n * @method rotateVec3X\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3X(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the y-axis\n *\n * @method rotateVec3Y\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Y(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the z-axis\n *\n * @method rotateVec3Z\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Z(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2];\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 projection matrix.\n *\n * @method projectVec4\n * @param {Number[]} p 3D View-space coordinate\n * @param {Number[]} q 2D Projected coordinate\n * @returns {Number[]} 2D Projected coordinate\n * @static\n */\n projectVec4(p, q) {\n const f = 1.0 / p[3];\n q = q || math.vec2();\n q[0] = v[0] * f;\n q[1] = v[1] * f;\n return q;\n },\n\n /**\n * Unprojects a three-element vector.\n *\n * @method unprojectVec3\n * @param {Number[]} p 3D Projected coordinate\n * @param {Number[]} viewMat View matrix\n * @returns {Number[]} projMat Projection matrix\n * @static\n */\n unprojectVec3: ((() => {\n const mat = new FloatArrayType(16);\n const mat2 = new FloatArrayType(16);\n const mat3 = new FloatArrayType(16);\n return function (p, viewMat, projMat, q) {\n return this.transformVec3(this.mulMat4(this.inverseMat4(viewMat, mat), this.inverseMat4(projMat, mat2), mat3), p, q)\n };\n }))(),\n\n /**\n * Linearly interpolates between two 3D vectors.\n * @method lerpVec3\n * @static\n */\n lerpVec3(t, t1, t2, p1, p2, dest) {\n const result = dest || math.vec3();\n const f = (t - t1) / (t2 - t1);\n result[0] = p1[0] + (f * (p2[0] - p1[0]));\n result[1] = p1[1] + (f * (p2[1] - p1[1]));\n result[2] = p1[2] + (f * (p2[2] - p1[2]));\n return result;\n },\n\n\n /**\n * Flattens a two-dimensional array into a one-dimensional array.\n *\n * @method flatten\n * @static\n * @param {Array of Arrays} a A 2D array\n * @returns Flattened 1D array\n */\n flatten(a) {\n\n const result = [];\n\n let i;\n let leni;\n let j;\n let lenj;\n let item;\n\n for (i = 0, leni = a.length; i < leni; i++) {\n item = a[i];\n for (j = 0, lenj = item.length; j < lenj; j++) {\n result.push(item[j]);\n }\n }\n\n return result;\n },\n\n\n identityQuaternion(dest = math.vec4()) {\n dest[0] = 0.0;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 1.0;\n return dest;\n },\n\n /**\n * Initializes a quaternion from Euler angles.\n *\n * @param {Number[]} euler The Euler angles.\n * @param {String} order Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination quaternion, created by default.\n * @returns {Number[]} The quaternion.\n */\n eulerToQuaternion(euler, order, dest = math.vec4()) {\n // http://www.mathworks.com/matlabcentral/fileexchange/\n // \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n //\tcontent/SpinCalc.m\n\n const a = (euler[0] * math.DEGTORAD) / 2;\n const b = (euler[1] * math.DEGTORAD) / 2;\n const c = (euler[2] * math.DEGTORAD) / 2;\n\n const c1 = Math.cos(a);\n const c2 = Math.cos(b);\n const c3 = Math.cos(c);\n const s1 = Math.sin(a);\n const s2 = Math.sin(b);\n const s3 = Math.sin(c);\n\n if (order === 'XYZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'YXZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'ZXY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'ZYX') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'YZX') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'XZY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n }\n\n return dest;\n },\n\n mat4ToQuaternion(m, dest = math.vec4()) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = m[0];\n const m12 = m[4];\n const m13 = m[8];\n const m21 = m[1];\n const m22 = m[5];\n const m23 = m[9];\n const m31 = m[2];\n const m32 = m[6];\n const m33 = m[10];\n let s;\n\n const trace = m11 + m22 + m33;\n\n if (trace > 0) {\n\n s = 0.5 / Math.sqrt(trace + 1.0);\n\n dest[3] = 0.25 / s;\n dest[0] = (m32 - m23) * s;\n dest[1] = (m13 - m31) * s;\n dest[2] = (m21 - m12) * s;\n\n } else if (m11 > m22 && m11 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n dest[3] = (m32 - m23) / s;\n dest[0] = 0.25 * s;\n dest[1] = (m12 + m21) / s;\n dest[2] = (m13 + m31) / s;\n\n } else if (m22 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n dest[3] = (m13 - m31) / s;\n dest[0] = (m12 + m21) / s;\n dest[1] = 0.25 * s;\n dest[2] = (m23 + m32) / s;\n\n } else {\n\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n dest[3] = (m21 - m12) / s;\n dest[0] = (m13 + m31) / s;\n dest[1] = (m23 + m32) / s;\n dest[2] = 0.25 * s;\n }\n\n return dest;\n },\n\n vec3PairToQuaternion(u, v, dest = math.vec4()) {\n const norm_u_norm_v = Math.sqrt(math.dotVec3(u, u) * math.dotVec3(v, v));\n let real_part = norm_u_norm_v + math.dotVec3(u, v);\n\n if (real_part < 0.00000001 * norm_u_norm_v) {\n\n // If u and v are exactly opposite, rotate 180 degrees\n // around an arbitrary orthogonal axis. Axis normalisation\n // can happen later, when we normalise the quaternion.\n\n real_part = 0.0;\n\n if (Math.abs(u[0]) > Math.abs(u[2])) {\n\n dest[0] = -u[1];\n dest[1] = u[0];\n dest[2] = 0;\n\n } else {\n dest[0] = 0;\n dest[1] = -u[2];\n dest[2] = u[1]\n }\n\n } else {\n\n // Otherwise, build quaternion the standard way.\n math.cross3Vec3(u, v, dest);\n }\n\n dest[3] = real_part;\n\n return math.normalizeQuaternion(dest);\n },\n\n angleAxisToQuaternion(angleAxis, dest = math.vec4()) {\n const halfAngle = angleAxis[3] / 2.0;\n const fsin = Math.sin(halfAngle);\n dest[0] = fsin * angleAxis[0];\n dest[1] = fsin * angleAxis[1];\n dest[2] = fsin * angleAxis[2];\n dest[3] = Math.cos(halfAngle);\n return dest;\n },\n\n quaternionToEuler: ((() => {\n const mat = new FloatArrayType(16);\n return (q, order, dest) => {\n dest = dest || math.vec3();\n math.quaternionToRotationMat4(q, mat);\n math.mat4ToEuler(mat, order, dest);\n return dest;\n };\n }))(),\n\n mulQuaternions(p, q, dest = math.vec4()) {\n const p0 = p[0];\n const p1 = p[1];\n const p2 = p[2];\n const p3 = p[3];\n const q0 = q[0];\n const q1 = q[1];\n const q2 = q[2];\n const q3 = q[3];\n dest[0] = p3 * q0 + p0 * q3 + p1 * q2 - p2 * q1;\n dest[1] = p3 * q1 + p1 * q3 + p2 * q0 - p0 * q2;\n dest[2] = p3 * q2 + p2 * q3 + p0 * q1 - p1 * q0;\n dest[3] = p3 * q3 - p0 * q0 - p1 * q1 - p2 * q2;\n return dest;\n },\n\n vec3ApplyQuaternion(q, vec, dest = math.vec3()) {\n const x = vec[0];\n const y = vec[1];\n const z = vec[2];\n\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n\n // calculate quat * vector\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\n return dest;\n },\n\n quaternionToMat4(q, dest) {\n\n dest = math.identityMat4(dest);\n\n const q0 = q[0]; //x\n const q1 = q[1]; //y\n const q2 = q[2]; //z\n const q3 = q[3]; //w\n\n const tx = 2.0 * q0;\n const ty = 2.0 * q1;\n const tz = 2.0 * q2;\n\n const twx = tx * q3;\n const twy = ty * q3;\n const twz = tz * q3;\n\n const txx = tx * q0;\n const txy = ty * q0;\n const txz = tz * q0;\n\n const tyy = ty * q1;\n const tyz = tz * q1;\n const tzz = tz * q2;\n\n dest[0] = 1.0 - (tyy + tzz);\n dest[1] = txy + twz;\n dest[2] = txz - twy;\n\n dest[4] = txy - twz;\n dest[5] = 1.0 - (txx + tzz);\n dest[6] = tyz + twx;\n\n dest[8] = txz + twy;\n dest[9] = tyz - twx;\n\n dest[10] = 1.0 - (txx + tyy);\n\n return dest;\n },\n\n quaternionToRotationMat4(q, m) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n m[0] = 1 - (yy + zz);\n m[4] = xy - wz;\n m[8] = xz + wy;\n\n m[1] = xy + wz;\n m[5] = 1 - (xx + zz);\n m[9] = yz - wx;\n\n m[2] = xz - wy;\n m[6] = yz + wx;\n m[10] = 1 - (xx + yy);\n\n // last column\n m[3] = 0;\n m[7] = 0;\n m[11] = 0;\n\n // bottom row\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n\n return m;\n },\n\n normalizeQuaternion(q, dest = q) {\n const len = math.lenVec4([q[0], q[1], q[2], q[3]]);\n dest[0] = q[0] / len;\n dest[1] = q[1] / len;\n dest[2] = q[2] / len;\n dest[3] = q[3] / len;\n return dest;\n },\n\n conjugateQuaternion(q, dest = q) {\n dest[0] = -q[0];\n dest[1] = -q[1];\n dest[2] = -q[2];\n dest[3] = q[3];\n return dest;\n },\n\n inverseQuaternion(q, dest) {\n return math.normalizeQuaternion(math.conjugateQuaternion(q, dest));\n },\n\n quaternionToAngleAxis(q, angleAxis = math.vec4()) {\n q = math.normalizeQuaternion(q, tempVec4);\n const q3 = q[3];\n const angle = 2 * Math.acos(q3);\n const s = Math.sqrt(1 - q3 * q3);\n if (s < 0.001) { // test to avoid divide by zero, s is always positive due to sqrt\n angleAxis[0] = q[0];\n angleAxis[1] = q[1];\n angleAxis[2] = q[2];\n } else {\n angleAxis[0] = q[0] / s;\n angleAxis[1] = q[1] / s;\n angleAxis[2] = q[2] / s;\n }\n angleAxis[3] = angle; // * 57.295779579;\n return angleAxis;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Boundaries\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns a new, uninitialized 3D axis-aligned bounding box.\n *\n * @private\n */\n AABB3(values) {\n return new FloatArrayType(values || 6);\n },\n\n /**\n * Returns a new, uninitialized 2D axis-aligned bounding box.\n *\n * @private\n */\n AABB2(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3D oriented bounding box (OBB).\n *\n * @private\n */\n OBB3(values) {\n return new FloatArrayType(values || 32);\n },\n\n /**\n * Returns a new, uninitialized 2D oriented bounding box (OBB).\n *\n * @private\n */\n OBB2(values) {\n return new FloatArrayType(values || 16);\n },\n\n /** Returns a new 3D bounding sphere */\n Sphere3(x, y, z, r) {\n return new FloatArrayType([x, y, z, r]);\n },\n\n /**\n * Transforms an OBB3 by a 4x4 matrix.\n *\n * @private\n */\n transformOBB3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /** Returns true if the first AABB contains the second AABB.\n * @param aabb1\n * @param aabb2\n * @returns {boolean}\n */\n containsAABB3: function (aabb1, aabb2) {\n const result = (\n aabb1[0] <= aabb2[0] && aabb2[3] <= aabb1[3] &&\n aabb1[1] <= aabb2[1] && aabb2[4] <= aabb1[4] &&\n aabb1[2] <= aabb2[2] && aabb2[5] <= aabb1[5]);\n return result;\n },\n\n /**\n * Gets the diagonal size of an AABB3 given as minima and maxima.\n *\n * @private\n */\n getAABB3Diag: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return aabb => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n math.subVec3(max, min, tempVec3);\n\n return Math.abs(math.lenVec3(tempVec3));\n };\n }))(),\n\n /**\n * Get a diagonal boundary size that is symmetrical about the given point.\n *\n * @private\n */\n getAABB3DiagPoint: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (aabb, p) => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const diagVec = math.subVec3(max, min, tempVec3);\n\n const xneg = p[0] - aabb[0];\n const xpos = aabb[3] - p[0];\n const yneg = p[1] - aabb[1];\n const ypos = aabb[4] - p[1];\n const zneg = p[2] - aabb[2];\n const zpos = aabb[5] - p[2];\n\n diagVec[0] += (xneg > xpos) ? xneg : xpos;\n diagVec[1] += (yneg > ypos) ? yneg : ypos;\n diagVec[2] += (zneg > zpos) ? zneg : zpos;\n\n return Math.abs(math.lenVec3(diagVec));\n };\n }))(),\n\n /**\n * Gets the center of an AABB.\n *\n * @private\n */\n getAABB3Center(aabb, dest) {\n const r = dest || math.vec3();\n\n r[0] = (aabb[0] + aabb[3]) / 2;\n r[1] = (aabb[1] + aabb[4]) / 2;\n r[2] = (aabb[2] + aabb[5]) / 2;\n\n return r;\n },\n\n /**\n * Gets the center of a 2D AABB.\n *\n * @private\n */\n getAABB2Center(aabb, dest) {\n const r = dest || math.vec2();\n\n r[0] = (aabb[2] + aabb[0]) / 2;\n r[1] = (aabb[3] + aabb[1]) / 2;\n\n return r;\n },\n\n /**\n * Collapses a 3D axis-aligned boundary, ready to expand to fit 3D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB3(aabb = math.AABB3()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MAX_DOUBLE;\n aabb[3] = -math.MAX_DOUBLE;\n aabb[4] = -math.MAX_DOUBLE;\n aabb[5] = -math.MAX_DOUBLE;\n\n return aabb;\n },\n\n /**\n * Converts an axis-aligned 3D boundary into an oriented boundary consisting of\n * an array of eight 3D positions, one for each corner of the boundary.\n *\n * @private\n */\n AABB3ToOBB3(aabb, obb = math.OBB3()) {\n obb[0] = aabb[0];\n obb[1] = aabb[1];\n obb[2] = aabb[2];\n obb[3] = 1;\n\n obb[4] = aabb[3];\n obb[5] = aabb[1];\n obb[6] = aabb[2];\n obb[7] = 1;\n\n obb[8] = aabb[3];\n obb[9] = aabb[4];\n obb[10] = aabb[2];\n obb[11] = 1;\n\n obb[12] = aabb[0];\n obb[13] = aabb[4];\n obb[14] = aabb[2];\n obb[15] = 1;\n\n obb[16] = aabb[0];\n obb[17] = aabb[1];\n obb[18] = aabb[5];\n obb[19] = 1;\n\n obb[20] = aabb[3];\n obb[21] = aabb[1];\n obb[22] = aabb[5];\n obb[23] = 1;\n\n obb[24] = aabb[3];\n obb[25] = aabb[4];\n obb[26] = aabb[5];\n obb[27] = 1;\n\n obb[28] = aabb[0];\n obb[29] = aabb[4];\n obb[30] = aabb[5];\n obb[31] = 1;\n\n return obb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n positions3ToAABB3: ((() => {\n\n const p = new FloatArrayType(3);\n\n return (positions, aabb, positionsDecodeMatrix) => {\n aabb = aabb || math.AABB3();\n\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n if (positionsDecodeMatrix) {\n\n p[0] = positions[i + 0];\n p[1] = positions[i + 1];\n p[2] = positions[i + 2];\n\n math.decompressPosition(p, positionsDecodeMatrix, p);\n\n x = p[0];\n y = p[1];\n z = p[2];\n\n } else {\n x = positions[i + 0];\n y = positions[i + 1];\n z = positions[i + 2];\n }\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n };\n }))(),\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n OBB3ToAABB3(obb, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = obb.length; i < len; i += 4) {\n\n x = obb[i + 0];\n y = obb[i + 1];\n z = obb[i + 2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the given 3D points.\n *\n * @private\n */\n points3ToAABB3(points, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = -math.MAX_DOUBLE;\n let ymax = -math.MAX_DOUBLE;\n let zmax = -math.MAX_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = points.length; i < len; i++) {\n\n x = points[i][0];\n y = points[i][1];\n z = points[i][2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n points3ToSphere3: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const numPoints = points.length;\n\n for (i = 0; i < numPoints; i++) {\n x += points[i][0];\n y += points[i][1];\n z += points[i][2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < numPoints; i++) {\n\n dist = Math.abs(math.lenVec3(math.subVec3(points[i], sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D positions.\n *\n * @private\n */\n positions3ToSphere3: ((() => {\n\n const tempVec3a = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n\n return (positions, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPositions = positions.length;\n let radius = 0;\n\n for (i = 0; i < lenPositions; i += 3) {\n x += positions[i];\n y += positions[i + 1];\n z += positions[i + 2];\n }\n\n const numPositions = lenPositions / 3;\n\n sphere[0] = x / numPositions;\n sphere[1] = y / numPositions;\n sphere[2] = z / numPositions;\n\n let dist;\n\n for (i = 0; i < lenPositions; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(tempVec3a, sphere, tempVec3b)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToSphere3: ((() => {\n\n const point = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPoints = points.length;\n const numPoints = lenPoints / 4;\n\n for (i = 0; i < lenPoints; i += 4) {\n x += points[i + 0];\n y += points[i + 1];\n z += points[i + 2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < lenPoints; i += 4) {\n\n point[0] = points[i + 0];\n point[1] = points[i + 1];\n point[2] = points[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(point, sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Gets the center of a bounding sphere.\n *\n * @private\n */\n getSphere3Center(sphere, dest = math.vec3()) {\n dest[0] = sphere[0];\n dest[1] = sphere[1];\n dest[2] = sphere[2];\n\n return dest;\n },\n\n /**\n * Expands the first axis-aligned 3D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB3(aabb1, aabb2) {\n\n if (aabb1[0] > aabb2[0]) {\n aabb1[0] = aabb2[0];\n }\n\n if (aabb1[1] > aabb2[1]) {\n aabb1[1] = aabb2[1];\n }\n\n if (aabb1[2] > aabb2[2]) {\n aabb1[2] = aabb2[2];\n }\n\n if (aabb1[3] < aabb2[3]) {\n aabb1[3] = aabb2[3];\n }\n\n if (aabb1[4] < aabb2[4]) {\n aabb1[4] = aabb2[4];\n }\n\n if (aabb1[5] < aabb2[5]) {\n aabb1[5] = aabb2[5];\n }\n\n return aabb1;\n },\n\n /**\n * Expands an axis-aligned 3D boundary to enclose the given point, if needed.\n *\n * @private\n */\n expandAABB3Point3(aabb, p) {\n\n if (aabb[0] > p[0]) {\n aabb[0] = p[0];\n }\n\n if (aabb[1] > p[1]) {\n aabb[1] = p[1];\n }\n\n if (aabb[2] > p[2]) {\n aabb[2] = p[2];\n }\n\n if (aabb[3] < p[0]) {\n aabb[3] = p[0];\n }\n\n if (aabb[4] < p[1]) {\n aabb[4] = p[1];\n }\n\n if (aabb[5] < p[2]) {\n aabb[5] = p[2];\n }\n\n return aabb;\n },\n\n /**\n * Calculates the normal vector of a triangle.\n *\n * @private\n */\n triangleNormal(a, b, c, normal = math.vec3()) {\n const p1x = b[0] - a[0];\n const p1y = b[1] - a[1];\n const p1z = b[2] - a[2];\n\n const p2x = c[0] - a[0];\n const p2y = c[1] - a[1];\n const p2z = c[2] - a[2];\n\n const p3x = p1y * p2z - p1z * p2y;\n const p3y = p1z * p2x - p1x * p2z;\n const p3z = p1x * p2y - p1y * p2x;\n\n const mag = Math.sqrt(p3x * p3x + p3y * p3y + p3z * p3z);\n if (mag === 0) {\n normal[0] = 0;\n normal[1] = 0;\n normal[2] = 0;\n } else {\n normal[0] = p3x / mag;\n normal[1] = p3y / mag;\n normal[2] = p3z / mag;\n }\n\n return normal\n }\n};\n\nexport {math};","/**\n * Given geometry defined as an array of positions, optional normals, option uv and an array of indices, returns\n * modified arrays that have duplicate vertices removed.\n *\n * @private\n */\nfunction mergeVertices(positions, indices, mergedPositions, mergedIndices) {\n const positionsMap = {};\n const indicesLookup = [];\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let uvi = 0;\n for (let i = 0, len = positions.length; i < len; i += 3) {\n const vx = positions[i];\n const vy = positions[i + 1];\n const vz = positions[i + 2];\n const key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n if (positionsMap[key] === undefined) {\n positionsMap[key] = mergedPositions.length / 3;\n mergedPositions.push(vx);\n mergedPositions.push(vy);\n mergedPositions.push(vz);\n }\n indicesLookup[i / 3] = positionsMap[key];\n uvi += 2;\n }\n for (let i = 0, len = indices.length; i < len; i++) {\n mergedIndices[i] = indicesLookup[indices[i]];\n }\n}\n\nexport {mergeVertices};","import {earcut} from './../lib/earcut';\nimport {math} from \"./../lib/math.js\";\n\nconst tempVec2a = math.vec2();\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\n\n/**\n * @desc Parses a CityJSON model into an {@link XKTModel}.\n *\n * [CityJSON](https://www.cityjson.org) is a JSON-based encoding for a subset of the CityGML data model (version 2.0.0),\n * which is an open standardised data model and exchange format to store digital 3D models of cities and\n * landscapes. CityGML is an official standard of the [Open Geospatial Consortium](https://www.ogc.org/).\n *\n * This converter function supports most of the [CityJSON 1.0.2 Specification](https://www.cityjson.org/specs/1.0.2),\n * with the following limitations:\n *\n * * Does not (yet) support CityJSON semantics for geometry primitives.\n * * Does not (yet) support textured geometries.\n * * Does not (yet) support geometry templates.\n * * When the CityJSON file provides multiple *themes* for a geometry, then we parse only the first of the provided themes for that geometry.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a CityJSON model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/cityjson/DenHaag.json\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseCityJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.data CityJSON data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {boolean} [params.center=false] Set true to center the CityJSON vertex positions to [0,0,0]. This is applied before the transformation matrix, if specified.\n * @param {Boolean} [params.transform] 4x4 transformation matrix to transform CityJSON vertex positions. Use this to rotate, translate and scale them if neccessary.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when CityJSON has been parsed.\n */\nfunction parseCityJSONIntoXKTModel({\n data,\n xktModel,\n center = false,\n transform = null,\n stats = {}, log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (data.type !== \"CityJSON\") {\n reject(\"Invalid argument: data is not a CityJSON file\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n let vertices;\n\n log(\"Using parser: parseCityJSONIntoXKTModel\");\n\n log(`center: ${center}`);\n if (transform) {\n log(`transform: [${transform}]`);\n }\n\n if (data.transform || center || transform) {\n vertices = copyVertices(data.vertices);\n if (data.transform) {\n transformVertices(vertices, data.transform)\n }\n if (center) {\n centerVertices(vertices);\n }\n if (transform) {\n customTransformVertices(vertices, transform);\n }\n } else {\n vertices = data.vertices;\n }\n\n stats.sourceFormat = data.type || \"\";\n stats.schemaVersion = data.version || \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n stats.numMetaObjects++;\n\n const modelMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: modelMetaObjectId,\n metaObjectType: \"CityJSON\",\n metaObjectName: \"CityJSON\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n stats.numMetaObjects++;\n\n const ctx = {\n data,\n vertices,\n xktModel,\n rootMetaObjectId: modelMetaObjectId,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n ctx.xktModel.schema = data.type + \" \" + data.version;\n\n ctx.log(\"Converting \" + ctx.xktModel.schema);\n\n parseCityJSON(ctx);\n\n resolve();\n });\n}\n\nfunction copyVertices(vertices) {\n const vertices2 = [];\n for (let i = 0, j = 0; i < vertices.length; i++, j += 3) {\n const x = vertices[i][0];\n const y = vertices[i][1];\n const z = vertices[i][2];\n vertices2.push([x, y, z]);\n }\n return vertices2;\n}\n\nfunction transformVertices(vertices, cityJSONTransform) {\n const scale = cityJSONTransform.scale || math.vec3([1, 1, 1]);\n const translate = cityJSONTransform.translate || math.vec3([0, 0, 0]);\n for (let i = 0; i < vertices.length; i++) {\n const vertex = vertices[i];\n vertex[0] = (vertex[0] * scale[0]) + translate[0];\n vertex[1] = (vertex[1] * scale[1]) + translate[1];\n vertex[2] = (vertex[2] * scale[2]) + translate[2];\n }\n}\n\nfunction centerVertices(vertices) {\n if (center) {\n const centerPos = math.vec3();\n const numPoints = vertices.length;\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n centerPos[0] += vertex[0];\n centerPos[1] += vertex[1];\n centerPos[2] += vertex[2];\n }\n centerPos[0] /= numPoints;\n centerPos[1] /= numPoints;\n centerPos[2] /= numPoints;\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n vertex[0] -= centerPos[0];\n vertex[1] -= centerPos[1];\n vertex[2] -= centerPos[2];\n }\n }\n}\n\nfunction customTransformVertices(vertices, transform) {\n if (transform) {\n const mat = math.mat4(transform);\n for (let i = 0, len = vertices.length; i < len; i++) {\n const vertex = vertices[i];\n math.transformPoint3(mat, vertex, vertex);\n }\n }\n}\n\nfunction parseCityJSON(ctx) {\n\n const data = ctx.data;\n const cityObjects = data.CityObjects;\n\n for (const objectId in cityObjects) {\n if (cityObjects.hasOwnProperty(objectId)) {\n const cityObject = cityObjects[objectId];\n parseCityObject(ctx, cityObject, objectId);\n }\n }\n}\n\nfunction parseCityObject(ctx, cityObject, objectId) {\n\n const xktModel = ctx.xktModel;\n const data = ctx.data;\n const metaObjectId = objectId;\n const metaObjectType = cityObject.type;\n const metaObjectName = metaObjectType + \" : \" + objectId;\n\n const parentMetaObjectId = cityObject.parents ? cityObject.parents[0] : ctx.rootMetaObjectId;\n\n xktModel.createMetaObject({\n metaObjectId,\n metaObjectName,\n metaObjectType,\n parentMetaObjectId\n });\n\n ctx.stats.numMetaObjects++;\n\n if (!(cityObject.geometry && cityObject.geometry.length > 0)) {\n return;\n }\n\n const meshIds = [];\n\n for (let i = 0, len = cityObject.geometry.length; i < len; i++) {\n\n const geometry = cityObject.geometry[i];\n\n let objectMaterial;\n let surfaceMaterials;\n\n const appearance = data.appearance;\n if (appearance) {\n const materials = appearance.materials;\n if (materials) {\n const geometryMaterial = geometry.material;\n if (geometryMaterial) {\n const themeIds = Object.keys(geometryMaterial);\n if (themeIds.length > 0) {\n const themeId = themeIds[0];\n const theme = geometryMaterial[themeId];\n if (theme.value !== undefined) {\n objectMaterial = materials[theme.value];\n } else {\n const values = theme.values;\n if (values) {\n surfaceMaterials = [];\n for (let j = 0, lenj = values.length; j < lenj; j++) {\n const value = values[i];\n const surfaceMaterial = materials[value];\n surfaceMaterials.push(surfaceMaterial);\n }\n }\n }\n }\n }\n }\n }\n\n if (surfaceMaterials) {\n parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds);\n\n } else {\n parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds);\n }\n }\n\n if (meshIds.length > 0) {\n xktModel.createEntity({\n entityId: objectId,\n meshIds: meshIds\n });\n\n ctx.stats.numObjects++;\n }\n}\n\nfunction parseGeometrySurfacesWithOwnMaterials(ctx, geometry, surfaceMaterials, meshIds) {\n\n const geomType = geometry.type;\n\n switch (geomType) {\n\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n break;\n\n case \"MultiSolid\":\n\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n}\n\nfunction parseSurfacesWithOwnMaterials(ctx, surfaceMaterials, surfaces, meshIds) {\n\n const vertices = ctx.vertices;\n const xktModel = ctx.xktModel;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n const surface = surfaces[i];\n const surfaceMaterial = surfaceMaterials[i] || {diffuseColor: [0.8, 0.8, 0.8], transparency: 1.0};\n\n const face = [];\n const holes = [];\n\n const sharedIndices = [];\n\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n for (let j = 0; j < surface.length; j++) {\n\n if (face.length > 0) {\n holes.push(face.length);\n }\n\n const newFace = extractLocalIndices(ctx, surface[j], sharedIndices, geometryCfg);\n\n face.push(...newFace);\n }\n\n if (face.length === 3) { // Triangle\n\n geometryCfg.indices.push(face[0]);\n geometryCfg.indices.push(face[1]);\n geometryCfg.indices.push(face[2]);\n\n } else if (face.length > 3) { // Polygon\n\n // Prepare to triangulate\n\n const pList = [];\n\n for (let k = 0; k < face.length; k++) {\n pList.push({\n x: vertices[sharedIndices[face[k]]][0],\n y: vertices[sharedIndices[face[k]]][1],\n z: vertices[sharedIndices[face[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n\n // Convert to 2D\n\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n\n to2D(pList[k], normal, tempVec2a);\n\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n // Triangulate\n\n const tr = earcut(pv, holes, 2);\n\n // Create triangles\n\n for (let k = 0; k < tr.length; k += 3) {\n geometryCfg.indices.unshift(face[tr[k]]);\n geometryCfg.indices.unshift(face[tr[k + 1]]);\n geometryCfg.indices.unshift(face[tr[k + 2]]);\n }\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (surfaceMaterial && surfaceMaterial.diffuseColor) ? surfaceMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (surfaceMaterial && surfaceMaterial.transparency !== undefined) ? (1.0 - surfaceMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n}\n\nfunction parseGeometrySurfacesWithSharedMaterial(ctx, geometry, objectMaterial, meshIds) {\n\n const xktModel = ctx.xktModel;\n const sharedIndices = [];\n const geometryCfg = {\n positions: [],\n indices: []\n };\n\n const geomType = geometry.type;\n\n switch (geomType) {\n case \"MultiPoint\":\n break;\n\n case \"MultiLineString\":\n break;\n\n case \"MultiSurface\":\n case \"CompositeSurface\":\n const surfaces = geometry.boundaries;\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n break;\n\n case \"Solid\":\n const shells = geometry.boundaries;\n for (let j = 0; j < shells.length; j++) {\n const surfaces = shells[j];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n break;\n\n case \"MultiSolid\":\n case \"CompositeSolid\":\n const solids = geometry.boundaries;\n for (let j = 0; j < solids.length; j++) {\n for (let k = 0; k < solids[j].length; k++) {\n const surfaces = solids[j][k];\n parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, geometryCfg);\n }\n }\n break;\n\n case \"GeometryInstance\":\n break;\n }\n\n const geometryId = \"\" + ctx.nextId++;\n const meshId = \"\" + ctx.nextId++;\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: geometryCfg.positions,\n indices: geometryCfg.indices\n });\n\n xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: (objectMaterial && objectMaterial.diffuseColor) ? objectMaterial.diffuseColor : [0.8, 0.8, 0.8],\n opacity: 1.0\n //opacity: (objectMaterial && objectMaterial.transparency !== undefined) ? (1.0 - objectMaterial.transparency) : 1.0\n });\n\n meshIds.push(meshId);\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n}\n\nfunction parseSurfacesWithSharedMaterial(ctx, surfaces, sharedIndices, primitiveCfg) {\n\n const vertices = ctx.vertices;\n\n for (let i = 0; i < surfaces.length; i++) {\n\n let boundary = [];\n let holes = [];\n\n for (let j = 0; j < surfaces[i].length; j++) {\n if (boundary.length > 0) {\n holes.push(boundary.length);\n }\n const newBoundary = extractLocalIndices(ctx, surfaces[i][j], sharedIndices, primitiveCfg);\n boundary.push(...newBoundary);\n }\n\n if (boundary.length === 3) { // Triangle\n\n primitiveCfg.indices.push(boundary[0]);\n primitiveCfg.indices.push(boundary[1]);\n primitiveCfg.indices.push(boundary[2]);\n\n } else if (boundary.length > 3) { // Polygon\n\n let pList = [];\n\n for (let k = 0; k < boundary.length; k++) {\n pList.push({\n x: vertices[sharedIndices[boundary[k]]][0],\n y: vertices[sharedIndices[boundary[k]]][1],\n z: vertices[sharedIndices[boundary[k]]][2]\n });\n }\n\n const normal = getNormalOfPositions(pList, math.vec3());\n let pv = [];\n\n for (let k = 0; k < pList.length; k++) {\n to2D(pList[k], normal, tempVec2a);\n pv.unshift(tempVec2a[0]);\n pv.unshift(tempVec2a[1]);\n }\n\n const tr = earcut(pv, holes, 2);\n\n for (let k = 0; k < tr.length; k += 3) {\n primitiveCfg.indices.unshift(boundary[tr[k]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 1]]);\n primitiveCfg.indices.unshift(boundary[tr[k + 2]]);\n }\n }\n }\n}\n\nfunction extractLocalIndices(ctx, boundary, sharedIndices, geometryCfg) {\n\n const vertices = ctx.vertices;\n const newBoundary = []\n\n for (let i = 0, len = boundary.length; i < len; i++) {\n\n const index = boundary[i];\n\n if (sharedIndices.includes(index)) {\n const vertexIndex = sharedIndices.indexOf(index);\n newBoundary.push(vertexIndex);\n\n } else {\n geometryCfg.positions.push(vertices[index][0]);\n geometryCfg.positions.push(vertices[index][1]);\n geometryCfg.positions.push(vertices[index][2]);\n\n newBoundary.push(sharedIndices.length);\n\n sharedIndices.push(index);\n }\n }\n\n return newBoundary\n}\n\nfunction getNormalOfPositions(positions, normal) {\n\n for (let i = 0; i < positions.length; i++) {\n\n let nexti = i + 1;\n if (nexti === positions.length) {\n nexti = 0;\n }\n\n normal[0] += ((positions[i].y - positions[nexti].y) * (positions[i].z + positions[nexti].z));\n normal[1] += ((positions[i].z - positions[nexti].z) * (positions[i].x + positions[nexti].x));\n normal[2] += ((positions[i].x - positions[nexti].x) * (positions[i].y + positions[nexti].y));\n }\n\n return math.normalizeVec3(normal);\n}\n\nfunction to2D(_p, _n, re) {\n\n const p = tempVec3a;\n const n = tempVec3b;\n const x3 = tempVec3c;\n\n p[0] = _p.x;\n p[1] = _p.y;\n p[2] = _p.z;\n\n n[0] = _n.x;\n n[1] = _n.y;\n n[2] = _n.z;\n\n x3[0] = 1.1;\n x3[1] = 1.1;\n x3[2] = 1.1;\n\n const dist = math.lenVec3(math.subVec3(x3, n));\n\n if (dist < 0.01) {\n x3[0] += 1.0;\n x3[1] += 2.0;\n x3[2] += 3.0;\n }\n\n const dot = math.dotVec3(x3, n);\n const tmp2 = math.mulVec3Scalar(n, dot, math.vec3());\n\n x3[0] -= tmp2[0];\n x3[1] -= tmp2[1];\n x3[2] -= tmp2[2];\n\n math.normalizeVec3(x3);\n\n const y3 = math.cross3Vec3(n, x3, math.vec3());\n const x = math.dotVec3(p, x3);\n const y = math.dotVec3(p, y3);\n\n re[0] = x;\n re[1] = y;\n}\n\nexport {parseCityJSONIntoXKTModel};","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../constants.js\";\n\n/**\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n */\nfunction parseGLTFIntoXKTModel({\n data,\n baseUri,\n xktModel,\n metaModelData,\n includeTextures = true,\n includeNormals = true,\n getAttachment,\n stats = {},\n log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n parse(data, GLTFLoader, {\n baseUri\n }).then((gltfData) => {\n\n const ctx = {\n gltfData,\n nodesHaveNames: false, // determined in testIfNodesHaveNames()\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n error: function (msg) {\n console.error(msg);\n },\n xktModel,\n includeNormals: (includeNormals !== false),\n includeTextures: (includeTextures !== false),\n geometryCreated: {},\n nextId: 0,\n geometriesCreated : {},\n stats\n };\n\n ctx.log(\"Using parser: parseGLTFIntoXKTModel\");\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n ctx.log(`Parsing textures: ${ctx.includeTextures ? \"enabled\" : \"disabled\"}`);\n\n if (ctx.includeTextures) {\n parseTextures(ctx);\n }\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(`[parseGLTFIntoXKTModel] ${errMsg}`);\n });\n });\n}\n\nfunction parseTextures(ctx) {\n const gltfData = ctx.gltfData;\n const textures = gltfData.textures;\n if (textures) {\n for (let i = 0, len = textures.length; i < len; i++) {\n parseTexture(ctx, textures[i]);\n ctx.stats.numTextures++;\n }\n }\n}\n\nfunction parseTexture(ctx, texture) {\n if (!texture.source || !texture.source.image) {\n return;\n }\n const textureId = `texture-${ctx.nextId++}`;\n\n let minFilter = NearestMipMapLinearFilter;\n switch (texture.sampler.minFilter) {\n case 9728:\n minFilter = NearestFilter;\n break;\n case 9729:\n minFilter = LinearFilter;\n break;\n case 9984:\n minFilter = NearestMipMapNearestFilter;\n break;\n case 9985:\n minFilter = LinearMipMapNearestFilter;\n break;\n case 9986:\n minFilter = NearestMipMapLinearFilter;\n break;\n case 9987:\n minFilter = LinearMipMapLinearFilter;\n break;\n }\n\n let magFilter = LinearFilter;\n switch (texture.sampler.magFilter) {\n case 9728:\n magFilter = NearestFilter;\n break;\n case 9729:\n magFilter = LinearFilter;\n break;\n }\n\n let wrapS = RepeatWrapping;\n switch (texture.sampler.wrapS) {\n case 33071:\n wrapS = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapS = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapS = RepeatWrapping;\n break;\n }\n\n let wrapT = RepeatWrapping;\n switch (texture.sampler.wrapT) {\n case 33071:\n wrapT = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapT = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapT = RepeatWrapping;\n break;\n }\n\n let wrapR = RepeatWrapping;\n switch (texture.sampler.wrapR) {\n case 33071:\n wrapR = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapR = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapR = RepeatWrapping;\n break;\n }\n\n ctx.xktModel.createTexture({\n textureId: textureId,\n imageData: texture.source.image,\n mediaType: texture.source.mediaType,\n compressed: true,\n width: texture.source.image.width,\n height: texture.source.image.height,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: !!texture.flipY,\n // encoding: \"sRGB\"\n });\n texture._textureId = textureId;\n}\n\nfunction parseMaterials(ctx) {\n const gltfData = ctx.gltfData;\n const materials = gltfData.materials;\n if (materials) {\n for (let i = 0, len = materials.length; i < len; i++) {\n const material = materials[i];\n material._textureSetId = ctx.includeTextures ? parseTextureSet(ctx, material) : null;\n material._attributes = parseMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction parseTextureSet(ctx, material) {\n const textureSetCfg = {};\n if (material.normalTexture) {\n textureSetCfg.normalTextureId = material.normalTexture.texture._textureId;\n }\n if (material.occlusionTexture) {\n textureSetCfg.occlusionTextureId = material.occlusionTexture.texture._textureId;\n }\n if (material.emissiveTexture) {\n textureSetCfg.emissiveTextureId = material.emissiveTexture.texture._textureId;\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (material.pbrMetallicRoughness) {\n const pbrMetallicRoughness = material.pbrMetallicRoughness;\n const baseColorTexture = pbrMetallicRoughness.baseColorTexture || pbrMetallicRoughness.colorTexture;\n if (baseColorTexture) {\n if (baseColorTexture.texture) {\n textureSetCfg.colorTextureId = baseColorTexture.texture._textureId;\n } else {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[baseColorTexture.index]._textureId;\n }\n }\n if (metallicPBR.metallicRoughnessTexture) {\n textureSetCfg.metallicRoughnessTextureId = metallicPBR.metallicRoughnessTexture.texture._textureId;\n }\n }\n const extensions = material.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const specularTexture = specularPBR.specularTexture;\n if (specularTexture !== null && specularTexture !== undefined) {\n // textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n const specularColorTexture = specularPBR.specularColorTexture;\n if (specularColorTexture !== null && specularColorTexture !== undefined) {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n }\n }\n if (textureSetCfg.normalTextureId !== undefined ||\n textureSetCfg.occlusionTextureId !== undefined ||\n textureSetCfg.emissiveTextureId !== undefined ||\n textureSetCfg.colorTextureId !== undefined ||\n textureSetCfg.metallicRoughnessTextureId !== undefined) {\n textureSetCfg.textureSetId = `textureSet-${ctx.nextId++};`\n ctx.xktModel.createTextureSet(textureSetCfg);\n ctx.stats.numTextureSets++;\n return textureSetCfg.textureSetId;\n }\n return null;\n}\n\nfunction parseMaterialAttributes(ctx, material) { // Substitute RGBA for material, to use fast flat shading instead\n const extensions = material.extensions;\n const materialAttributes = {\n color: new Float32Array([1, 1, 1, 1]),\n opacity: 1,\n metallic: 0,\n roughness: 1\n };\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n materialAttributes.color.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n materialAttributes.color.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n materialAttributes.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n materialAttributes.opacity = transparent;\n }\n }\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n materialAttributes.color[0] = baseColorFactor[0];\n materialAttributes.color[1] = baseColorFactor[1];\n materialAttributes.color[2] = baseColorFactor[2];\n materialAttributes.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n materialAttributes.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n materialAttributes.roughness = roughnessFactor;\n }\n }\n return materialAttributes;\n}\n\nfunction parseDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n ctx.error(\"glTF has no default scene\");\n return;\n }\n parseScene(ctx, scene);\n}\n\nfunction parseScene(ctx, scene) {\n const nodes = scene.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n countMeshUsage(ctx, node);\n }\n for (let i = 0, len = nodes.length; i < len && !ctx.nodesHaveNames; i++) {\n const node = nodes[i];\n if (testIfNodesHaveNames(node)) {\n ctx.nodesHaveNames = true;\n }\n }\n if (!ctx.nodesHaveNames) {\n ctx.log(`Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect`);\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithoutNames(ctx, node, 0, null);\n }\n } else {\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithNames(ctx, node, 0, null);\n }\n }\n}\n\nfunction countMeshUsage(ctx, node, level = 0) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (mesh) {\n mesh.instances = mesh.instances ? mesh.instances + 1 : 1;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (!childNode) {\n ctx.error(\"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode, level + 1);\n }\n }\n}\n\nfunction testIfNodesHaveNames(node, level = 0) {\n if (!node) {\n return;\n }\n if (node.name) {\n return true;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (testIfNodesHaveNames(childNode, level + 1)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n */\nconst parseNodesWithoutNames = (function () {\n\n const meshIds = [];\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithoutNames(ctx, childNode, depth + 1, matrix);\n }\n }\n if (depth === 0) {\n let entityId = \"entity-\" + ctx.nextId++;\n if (meshIds && meshIds.length > 0) {\n ctx.log(\"Creating XKTEntity with default ID: \" + entityId);\n ctx.xktModel.createEntity({\n entityId,\n meshIds\n });\n meshIds.length = 0;\n }\n ctx.stats.numObjects++;\n }\n }\n})();\n\n\n/**\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n */\nconst parseNodesWithNames = (function () {\n\n const objectIdStack = [];\n const meshIdsStack = [];\n let meshIds = null;\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.name) {\n meshIds = [];\n let xktEntityId = node.name;\n if (!!xktEntityId && ctx.xktModel.entities[xktEntityId]) {\n ctx.log(`Warning: Two or more glTF nodes found with same 'name' attribute: '${xktEntityId} - will randomly-generating an object ID in XKT`);\n }\n while (!xktEntityId || ctx.xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n objectIdStack.push(xktEntityId);\n meshIdsStack.push(meshIds);\n }\n if (meshIds && node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithNames(ctx, childNode, depth + 1, matrix);\n }\n }\n const nodeName = node.name;\n if ((nodeName !== undefined && nodeName !== null) || depth === 0) {\n let xktEntityId = objectIdStack.pop();\n if (!xktEntityId) { // For when there are no nodes with names\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n let entityMeshIds = meshIdsStack.pop();\n if (meshIds && meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: entityMeshIds\n });\n }\n ctx.stats.numObjects++;\n meshIds = meshIdsStack.length > 0 ? meshIdsStack[meshIdsStack.length - 1] : null;\n }\n }\n})();\n\n/**\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n */\nfunction parseNodeMatrix(node, matrix) {\n if (!node) {\n return;\n }\n let localMatrix;\n if (node.matrix) {\n localMatrix = node.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.translation) {\n localMatrix = math.translationMat4v(node.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.rotation) {\n localMatrix = math.quaternionToMat4(node.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.scale) {\n localMatrix = math.scalingMat4v(node.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n return matrix;\n}\n\nfunction createPrimitiveHash(primitive) {\n const hash = [];\n const attributes = primitive.attributes;\n if (attributes) {\n for (let key in attributes) {\n hash.push(attributes[key].id);\n }\n }\n return hash.join(\".\");\n}\n\n/**\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n */\nfunction parseNodeMesh(node, ctx, matrix, meshIds) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (!mesh) {\n return;\n }\n const numPrimitives = mesh.primitives.length;\n if (numPrimitives > 0) {\n for (let i = 0; i < numPrimitives; i++) {\n try {\n const primitive = mesh.primitives[i];\n const geometryId = createPrimitiveHash(primitive);\n if (!ctx.geometriesCreated[geometryId]) {\n const geometryCfg = {\n geometryId\n };\n switch (primitive.mode) {\n case 0: // POINTS\n geometryCfg.primitiveType = \"points\";\n break;\n case 1: // LINES\n geometryCfg.primitiveType = \"lines\";\n break;\n case 2: // LINE_LOOP\n geometryCfg.primitiveType = \"line-loop\";\n break;\n case 3: // LINE_STRIP\n geometryCfg.primitiveType = \"line-strip\";\n break;\n case 4: // TRIANGLES\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n geometryCfg.primitiveType = \"triangle-strip\";\n break;\n case 6: // TRIANGLE_FAN\n geometryCfg.primitiveType = \"triangle-fan\";\n break;\n default:\n geometryCfg.primitiveType = \"triangles\";\n }\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n geometryCfg.positions = primitive.attributes.POSITION.value;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n if (ctx.includeNormals) {\n if (primitive.attributes.NORMAL) {\n geometryCfg.normals = primitive.attributes.NORMAL.value;\n ctx.stats.numNormals += geometryCfg.normals.length / 3;\n }\n }\n if (primitive.attributes.COLOR_0) {\n geometryCfg.colorsCompressed = primitive.attributes.COLOR_0.value;\n }\n if (ctx.includeTextures) {\n if (primitive.attributes.TEXCOORD_0) {\n geometryCfg.uvs = primitive.attributes.TEXCOORD_0.value;\n ctx.stats.numUVs += geometryCfg.uvs.length / 2;\n }\n }\n if (primitive.indices) {\n geometryCfg.indices = primitive.indices.value;\n if (primitive.mode === 4) {\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n }\n ctx.xktModel.createGeometry(geometryCfg);\n ctx.geometriesCreated[geometryId] = true;\n ctx.stats.numGeometries++;\n }\n const xktMeshId = ctx.nextId++;\n const meshCfg = {\n meshId: xktMeshId,\n geometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4()\n };\n const material = primitive.material;\n if (material) {\n meshCfg.textureSetId = material._textureSetId;\n meshCfg.color = material._attributes.color;\n meshCfg.opacity = material._attributes.opacity;\n meshCfg.metallic = material._attributes.metallic;\n meshCfg.roughness = material._attributes.roughness;\n } else {\n meshCfg.color = [1.0, 1.0, 1.0];\n meshCfg.opacity = 1.0;\n }\n ctx.xktModel.createMesh(meshCfg);\n meshIds.push(xktMeshId);\n } catch (e) {\n console.log(e);\n }\n }\n }\n}\n\nexport {parseGLTFIntoXKTModel};","import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nconst atob2 = (typeof atob !== 'undefined') ? atob : a => Buffer.from(a, 'base64').toString('binary');\n\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nconst WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n};\n\n/**\n * @desc Parses glTF JSON into an {@link XKTModel}, without ````.glb```` and textures.\n *\n * * Lightweight JSON-based glTF parser which ignores textures\n * * For texture and ````.glb```` support, see {@link parseGLTFIntoXKTModel}\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a glTF model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/gltf/duplex/scene.gltf\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {Object} params.data The glTF JSON.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeNormals=false] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded representation of the glTF.\n * @param {Boolean} [params.reuseGeometries=true] When true, the parser will enable geometry reuse within the XKTModel. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be if we have 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {function} [params.getAttachment] Callback through which to fetch attachments, if the glTF has them.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise}\n */\nfunction parseGLTFJSONIntoXKTModel({\n data,\n xktModel,\n metaModelData,\n includeNormals,\n reuseGeometries,\n getAttachment,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseGLTFJSONIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const ctx = {\n gltf: data,\n metaModelCorrections: metaModelData ? getMetaModelCorrections(metaModelData) : null,\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n xktModel,\n includeNormals,\n createXKTGeometryIds: {},\n nextMeshId: 0,\n reuseGeometries: (reuseGeometries !== false),\n stats\n };\n\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n\n parseBuffers(ctx).then(() => {\n\n parseBufferViews(ctx);\n freeBuffers(ctx);\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction getMetaModelCorrections(metaModelData) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelData.metaObjects || [];\n const metaObjectsMap = {};\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n metaObjectsMap[metaObject.id] = metaObject;\n }\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) {\n let rootMetaObject = metaObjectParent;\n while (rootMetaObject.parent && metaObjectsMap[rootMetaObject.parent].type === rootMetaObject.type) {\n rootMetaObject = metaObjectsMap[rootMetaObject.parent];\n }\n const rootStats = eachRootStats[rootMetaObject.id] || (eachRootStats[rootMetaObject.id] = {\n numChildren: 0,\n countChildren: 0\n });\n rootStats.numChildren++;\n eachChildRoot[metaObject.id] = rootMetaObject;\n } else {\n\n }\n }\n }\n const metaModelCorrections = {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n return metaModelCorrections;\n}\n\nfunction parseBuffers(ctx) { // Parses geometry buffers into temporary \"_buffer\" Unit8Array properties on the glTF \"buffer\" elements\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n return Promise.all(buffers.map(buffer => parseBuffer(ctx, buffer)));\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n}\n\nfunction parseBuffer(ctx, bufferInfo) {\n return new Promise(function (resolve, reject) {\n // Allow a shortcut where the glTF buffer is \"enrichened\" with direct\n // access to the data-arrayBuffer, w/out needing to either:\n // - read the file indicated by the \".uri\" component of the buffer\n // - base64-decode the encoded data in the \".uri\" component\n if (bufferInfo._arrayBuffer) {\n bufferInfo._buffer = bufferInfo._arrayBuffer;\n resolve(bufferInfo);\n return;\n }\n // Otherwise, proceed with \"standard-glTF\" .uri component.\n const uri = bufferInfo.uri;\n if (!uri) {\n reject('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n return;\n }\n parseArrayBuffer(ctx, uri).then((arrayBuffer) => {\n bufferInfo._buffer = arrayBuffer;\n resolve(arrayBuffer);\n }, (errMsg) => {\n reject(errMsg);\n })\n });\n}\n\nfunction parseArrayBuffer(ctx, uri) {\n return new Promise(function (resolve, reject) {\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; // Check for data: URI\n const dataUriRegexResult = uri.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n let data = dataUriRegexResult[3];\n data = decodeURIComponent(data);\n if (isBase64) {\n data = atob2(data);\n }\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n resolve(buffer);\n } else { // Uri is a path to a file\n ctx.getAttachment(uri).then(\n (arrayBuffer) => {\n resolve(arrayBuffer);\n },\n (errMsg) => {\n reject(errMsg);\n });\n }\n });\n}\n\nfunction parseBufferViews(ctx) { // Parses our temporary \"_buffer\" properties into \"_buffer\" properties on glTF \"bufferView\" elements\n const bufferViewsInfo = ctx.gltf.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n parseBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n}\n\nfunction parseBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.gltf.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n}\n\nfunction freeBuffers(ctx) { // Deletes the \"_buffer\" properties from the glTF \"buffer\" elements, to save memory\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n}\n\nfunction parseMaterials(ctx) {\n const materialsInfo = ctx.gltf.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = parseMaterial(ctx, materialInfo);\n materialInfo._materialData = material;\n }\n }\n}\n\nfunction parseMaterial(ctx, materialInfo) { // Attempts to extract an RGBA color for a glTF material\n const material = {\n color: new Float32Array([1, 1, 1]),\n opacity: 1.0,\n metallic: 0,\n roughness: 1\n };\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n material.color[0] = diffuseFactor[0];\n material.color[1] = diffuseFactor[1];\n material.color[2] = diffuseFactor[2];\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n material.color[0] = diffuse[0];\n material.color[1] = diffuse[1];\n material.color[2] = diffuse[2];\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n material.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n material.opacity = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n material.color[0] = baseColorFactor[0];\n material.color[1] = baseColorFactor[1];\n material.color[2] = baseColorFactor[2];\n material.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n material.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n material.roughness = roughnessFactor;\n }\n }\n return material;\n}\n\nfunction parseDefaultScene(ctx) {\n const scene = ctx.gltf.scene || 0;\n const defaultSceneInfo = ctx.gltf.scenes[scene];\n if (!defaultSceneInfo) {\n throw new Error(\"glTF has no default scene\");\n }\n parseScene(ctx, defaultSceneInfo);\n}\n\n\nfunction parseScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = ctx.gltf.nodes[nodes[i]];\n if (glTFNode) {\n parseNode(ctx, glTFNode, 0, null);\n }\n }\n}\n\nlet deferredMeshIds = [];\n\nfunction parseNode(ctx, glTFNode, depth, matrix) {\n\n const gltf = ctx.gltf;\n const xktModel = ctx.xktModel;\n\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n const gltfMeshId = glTFNode.mesh;\n\n if (gltfMeshId !== undefined) {\n\n const meshInfo = gltf.meshes[gltfMeshId];\n\n if (meshInfo) {\n\n const numPrimitivesInMesh = meshInfo.primitives.length;\n\n if (numPrimitivesInMesh > 0) {\n\n for (let i = 0; i < numPrimitivesInMesh; i++) {\n\n const primitiveInfo = meshInfo.primitives[i];\n\n const geometryHash = createPrimitiveGeometryHash(primitiveInfo);\n\n let xktGeometryId = ctx.createXKTGeometryIds[geometryHash];\n\n if ((!ctx.reuseGeometries) || !xktGeometryId) {\n\n xktGeometryId = \"geometry-\" + ctx.nextMeshId++\n\n const geometryArrays = {};\n\n parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays);\n\n const colors = geometryArrays.colors;\n\n let colorsCompressed;\n\n if (geometryArrays.colors) {\n colorsCompressed = [];\n for (let j = 0, lenj = colors.length; j < lenj; j += 4) {\n colorsCompressed.push(colors[j + 0]);\n colorsCompressed.push(colors[j + 1]);\n colorsCompressed.push(colors[j + 2]);\n colorsCompressed.push(255);\n }\n }\n\n xktModel.createGeometry({\n geometryId: xktGeometryId,\n primitiveType: geometryArrays.primitive,\n positions: geometryArrays.positions,\n normals: ctx.includeNormals ? geometryArrays.normals : null,\n colorsCompressed: colorsCompressed,\n indices: geometryArrays.indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryArrays.positions ? geometryArrays.positions.length / 3 : 0;\n ctx.stats.numNormals += (ctx.includeNormals && geometryArrays.normals) ? geometryArrays.normals.length / 3 : 0;\n ctx.stats.numTriangles += geometryArrays.indices ? geometryArrays.indices.length / 3 : 0;\n\n ctx.createXKTGeometryIds[geometryHash] = xktGeometryId;\n } else {\n// Geometry reused\n }\n\n const materialIndex = primitiveInfo.material;\n const materialInfo = (materialIndex !== null && materialIndex !== undefined) ? gltf.materials[materialIndex] : null;\n const color = materialInfo ? materialInfo._materialData.color : new Float32Array([1.0, 1.0, 1.0, 1.0]);\n const opacity = materialInfo ? materialInfo._materialData.opacity : 1.0;\n const metallic = materialInfo ? materialInfo._materialData.metallic : 0.0;\n const roughness = materialInfo ? materialInfo._materialData.roughness : 1.0;\n\n const xktMeshId = \"mesh-\" + ctx.nextMeshId++;\n\n xktModel.createMesh({\n meshId: xktMeshId,\n geometryId: xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4(),\n color: color,\n opacity: opacity,\n metallic: metallic,\n roughness: roughness\n });\n\n deferredMeshIds.push(xktMeshId);\n }\n }\n }\n }\n\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childGLTFNode = gltf.nodes[childNodeIdx];\n if (!childGLTFNode) {\n console.warn('Node not found: ' + i);\n continue;\n }\n parseNode(ctx, childGLTFNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n const nodeName = glTFNode.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n if (nodeName === undefined || nodeName === null) {\n ctx.log(`[parseGLTFJSONIntoXKTModel] Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT`);\n }\n let xktEntityId = nodeName; // Fall back on generated ID when `name` not found on glTF scene node(s)\n if (xktEntityId === undefined || xktEntityId === null) {\n if (xktModel.entities[xktEntityId]) {\n ctx.error(\"Two or more glTF nodes found with same 'name' attribute: '\" + nodeName + \"'\");\n }\n while (!xktEntityId || xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n }\n if (ctx.metaModelCorrections) { // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[xktEntityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n xktModel.createEntity({\n entityId: rootMetaObject.id,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[xktEntityId];\n if (metaObject) {\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n } else { // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n}\n\nfunction createPrimitiveGeometryHash(primitiveInfo) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return \"empty\";\n }\n const mode = primitiveInfo.mode;\n const material = primitiveInfo.material;\n const indices = primitiveInfo.indices;\n const positions = primitiveInfo.attributes.POSITION;\n const normals = primitiveInfo.attributes.NORMAL;\n const colors = primitiveInfo.attributes.COLOR_0;\n const uv = primitiveInfo.attributes.TEXCOORD_0;\n return [\n mode,\n // material,\n (indices !== null && indices !== undefined) ? indices : \"-\",\n (positions !== null && positions !== undefined) ? positions : \"-\",\n (normals !== null && normals !== undefined) ? normals : \"-\",\n (colors !== null && colors !== undefined) ? colors : \"-\",\n (uv !== null && uv !== undefined) ? uv : \"-\"\n ].join(\";\");\n}\n\nfunction parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n switch (primitiveInfo.mode) {\n case 0: // POINTS\n geometryArrays.primitive = \"points\";\n break;\n case 1: // LINES\n geometryArrays.primitive = \"lines\";\n break;\n case 2: // LINE_LOOP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 3: // LINE_STRIP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 4: // TRIANGLES\n geometryArrays.primitive = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n // TODO: convert\n console.log(\"TRIANGLE_STRIP\");\n geometryArrays.primitive = \"triangles\";\n break;\n case 6: // TRIANGLE_FAN\n // TODO: convert\n console.log(\"TRIANGLE_FAN\");\n geometryArrays.primitive = \"triangles\";\n break;\n default:\n geometryArrays.primitive = \"triangles\";\n }\n const accessors = ctx.gltf.accessors;\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = accessors[indicesIndex];\n geometryArrays.indices = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = accessors[positionsIndex];\n geometryArrays.positions = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = accessors[normalsIndex];\n geometryArrays.normals = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const colorsIndex = attributes.COLOR_0;\n if (colorsIndex !== null && colorsIndex !== undefined) {\n const accessorInfo = accessors[colorsIndex];\n geometryArrays.colors = parseAccessorTypedArray(ctx, accessorInfo);\n }\n}\n\nfunction parseAccessorTypedArray(ctx, accessorInfo) {\n const bufferView = ctx.gltf.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n throw new Error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferView._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n}\n\nexport {parseGLTFJSONIntoXKTModel};\n","/**\n * @desc Parses IFC STEP file data into an {@link XKTModel}.\n *\n * This function uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse the IFC, which relies on a\n * WASM file to do the parsing.\n *\n * Depending on how we use this function, we may need to provide it with a path to the directory where that WASM file is stored.\n *\n * This function is tested with web-ifc version 0.0.34.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an IFC model into it.\n *\n * ````javascript\n * import {XKTModel, parseIFCIntoXKTModel, writeXKTModelToArrayBuffer} from \"xeokit-convert.es.js\";\n *\n * import * as WebIFC from \"web-ifc-api.js\";\n *\n * utils.loadArraybuffer(\"rac_advanced_sample_project.ifc\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseIFCIntoXKTModel({\n * WebIFC,\n * data,\n * xktModel,\n * wasmPath: \"../dist/\",\n * autoNormals: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {ArrayBuffer} [params.data] IFC file data.\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Boolean} [params.autoNormals=true] When true, the parser will ignore the IFC geometry normals, and the IFC\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the IFC model. This is ````true```` by default, because IFC models tend to look acceptable with flat-shading,\n * and we always want to minimize IFC model size wherever possible.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {String} params.wasmPath Path to ````web-ifc.wasm````, required by this function.\n * @param {Object} [params.stats={}] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when IFC has been parsed.\n */\nfunction parseIFCIntoXKTModel({\n WebIFC,\n data,\n xktModel,\n autoNormals = true,\n includeTypes,\n excludeTypes,\n wasmPath,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseIFCIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n if (!wasmPath) {\n reject(\"Argument expected: wasmPath\");\n return;\n }\n\n const ifcAPI = new WebIFC.IfcAPI();\n\n if (wasmPath) {\n ifcAPI.SetWasmPath(wasmPath);\n }\n\n ifcAPI.Init().then(() => {\n\n const dataArray = new Uint8Array(data);\n\n const modelID = ifcAPI.OpenModel(dataArray);\n\n stats.sourceFormat = \"IFC\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n\n const ctx = {\n WebIFC,\n modelID,\n ifcAPI,\n xktModel,\n autoNormals,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n if (includeTypes) {\n ctx.includeTypes = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n ctx.includeTypes[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n ctx.excludeTypes = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n ctx.excludeTypes[excludeTypes[i]] = true;\n }\n }\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(modelID, WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(modelID, ifcProjectId);\n\n ctx.xktModel.schema = \"\";\n ctx.xktModel.modelId = \"\" + modelID;\n ctx.xktModel.projectId = \"\" + ifcProjectId;\n\n parseMetadata(ctx);\n parseGeometry(ctx);\n parsePropertySets(ctx);\n\n resolve();\n\n }).catch((e) => {\n\n reject(e);\n })\n });\n}\n\nfunction parsePropertySets(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCRELDEFINESBYPROPERTIES);\n\n for (let i = 0; i < lines.size(); i++) {\n\n let relID = lines.get(i);\n\n let rel = ctx.ifcAPI.GetLine(ctx.modelID, relID, true);\n\n if (rel) {\n\n const relatingPropertyDefinition = rel.RelatingPropertyDefinition;\n if (!relatingPropertyDefinition) {\n continue;\n }\n\n const propertySetId = relatingPropertyDefinition.GlobalId.value;\n\n const relatedObjects = rel.RelatedObjects;\n if (relatedObjects) {\n for (let i = 0, len = relatedObjects.length; i < len; i++) {\n const relatedObject = relatedObjects[i];\n const metaObjectId = relatedObject.GlobalId.value;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n if (metaObject) {\n if (!metaObject.propertySetIds) {\n metaObject.propertySetIds = [];\n }\n metaObject.propertySetIds.push(propertySetId);\n }\n }\n }\n\n const props = relatingPropertyDefinition.HasProperties;\n if (props && props.length > 0) {\n const propertySetType = \"Default\";\n const propertySetName = relatingPropertyDefinition.Name.value;\n const properties = [];\n for (let i = 0, len = props.length; i < len; i++) {\n const prop = props[i];\n const name = prop.Name;\n const nominalValue = prop.NominalValue;\n if (name && nominalValue) {\n const property = {\n name: name.value,\n type: nominalValue.type,\n value: nominalValue.value,\n valueType: nominalValue.valueType\n };\n if (prop.Description) {\n property.description = prop.Description.value;\n } else if (nominalValue.description) {\n property.description = nominalValue.description;\n }\n properties.push(property);\n }\n }\n ctx.xktModel.createPropertySet({propertySetId, propertySetType, propertySetName, properties});\n ctx.stats.numPropertySets++;\n }\n }\n }\n}\n\nfunction parseMetadata(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(ctx.modelID, ifcProjectId);\n\n parseSpatialChildren(ctx, ifcProject);\n}\n\nfunction parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectType = ifcElement.__proto__.constructor.name;\n\n if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {\n return;\n }\n\n if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {\n return;\n }\n\n createMetaObject(ctx, ifcElement, parentMetaObjectId);\n\n const metaObjectId = ifcElement.GlobalId.value;\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingObject',\n 'RelatedObjects',\n ctx.WebIFC.IFCRELAGGREGATES,\n metaObjectId);\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingStructure',\n 'RelatedElements',\n ctx.WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n metaObjectId);\n}\n\nfunction createMetaObject(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectId = ifcElement.GlobalId.value;\n const propertySetIds = null;\n const metaObjectType = ifcElement.__proto__.constructor.name;\n const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== \"\") ? ifcElement.Name.value : metaObjectType;\n\n ctx.xktModel.createMetaObject({metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId});\n ctx.stats.numMetaObjects++;\n}\n\nfunction parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, type);\n\n for (let i = 0; i < lines.size(); i++) {\n\n const relID = lines.get(i);\n const rel = ctx.ifcAPI.GetLine(ctx.modelID, relID);\n const relatedItems = rel[relation];\n\n let foundElement = false;\n\n if (Array.isArray(relatedItems)) {\n const values = relatedItems.map((item) => item.value);\n foundElement = values.includes(id);\n\n } else {\n foundElement = (relatedItems.value === id);\n }\n\n if (foundElement) {\n\n const element = rel[related];\n\n if (!Array.isArray(element)) {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n\n } else {\n\n element.forEach((element2) => {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element2.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n });\n }\n }\n }\n}\n\nfunction parseGeometry(ctx) {\n\n // Parses the geometry and materials in the IFC, creates\n // XKTEntity, XKTMesh and XKTGeometry components within the XKTModel.\n\n const flatMeshes = ctx.ifcAPI.LoadAllGeometry(ctx.modelID);\n\n for (let i = 0, len = flatMeshes.size(); i < len; i++) {\n const flatMesh = flatMeshes.get(i);\n createObject(ctx, flatMesh);\n }\n\n // LoadAllGeometry does not return IFCSpace meshes\n // here is a workaround\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCSPACE);\n for (let j = 0, len = lines.size(); j < len; j++) {\n const ifcSpaceId = lines.get(j);\n const flatMesh = ctx.ifcAPI.GetFlatMesh(ctx.modelID, ifcSpaceId);\n createObject(ctx, flatMesh);\n }\n}\n\nfunction createObject(ctx, flatMesh) {\n\n const flatMeshExpressID = flatMesh.expressID;\n const placedGeometries = flatMesh.geometries;\n\n const meshIds = [];\n\n const properties = ctx.ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);\n const entityId = properties.GlobalId.value;\n\n const metaObjectId = entityId;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n\n if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.metaObjectType]))) {\n return;\n }\n\n if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.metaObjectType])) {\n console.log(\"excluding: \" + metaObjectId)\n return;\n }\n\n for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {\n\n const placedGeometry = placedGeometries.get(j);\n const geometryId = \"\" + placedGeometry.geometryExpressID;\n\n if (!ctx.xktModel.geometries[geometryId]) {\n\n const geometry = ctx.ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);\n const vertexData = ctx.ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());\n const indices = ctx.ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());\n\n // De-interleave vertex arrays\n\n const positions = [];\n const normals = [];\n\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n positions.push(vertexData[k * 6 + 0]);\n positions.push(vertexData[k * 6 + 1]);\n positions.push(vertexData[k * 6 + 2]);\n }\n\n if (!ctx.autoNormals) {\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n normals.push(vertexData[k * 6 + 3]);\n normals.push(vertexData[k * 6 + 4]);\n normals.push(vertexData[k * 6 + 5]);\n }\n }\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: ctx.autoNormals ? null : normals,\n indices: indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += (positions.length / 3);\n ctx.stats.numTriangles += (indices.length / 3);\n }\n\n const meshId = (\"mesh\" + ctx.nextId++);\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n matrix: placedGeometry.flatTransformation,\n color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],\n opacity: placedGeometry.color.w\n });\n\n meshIds.push(meshId);\n }\n\n if (meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: meshIds\n });\n ctx.stats.numObjects++;\n }\n}\n\nexport {parseIFCIntoXKTModel};\n","import {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las';\n\nimport {math} from \"../lib/math.js\";\n\nconst MAX_VERTICES = 500000; // TODO: Rough estimate\n\n/**\n * @desc Parses LAS and LAZ point cloud data into an {@link XKTModel}.\n *\n * This parser handles both the LASER file format (LAS) and its compressed version (LAZ),\n * a public format for the interchange of 3-dimensional point cloud data data, developed\n * for LIDAR mapping purposes.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/laz/autzen.laz\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parseLASIntoXKTModel({\n * data,\n * xktModel,\n * rotateX: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data LAS/LAZ file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {boolean} [params.center=false] Set true to center the LAS point positions to [0,0,0]. This is applied before the transformation matrix, if specified.\n * @param {Boolean} [params.transform] 4x4 transformation matrix to transform point positions. Use this to rotate, translate and scale them if neccessary.\n * @param {Number|String} [params.colorDepth=8] Whether colors encoded using 8 or 16 bits. Can be set to 'auto'. LAS specification recommends 16 bits.\n * @param {Boolean} [params.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [params.skip=1] Read one from every n points.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when LAS has been parsed.\n */\nfunction parseLASIntoXKTModel({\n data,\n xktModel,\n center = false,\n transform = null,\n colorDepth = \"auto\",\n fp64 = false,\n skip = 1,\n stats,\n log = () => {\n }\n }) {\n\n if (log) {\n log(\"Using parser: parseLASIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n log(\"Converting LAZ/LAS\");\n\n log(`center: ${center}`);\n if (transform) {\n log(`transform: [${transform}]`);\n }\n log(`colorDepth: ${colorDepth}`);\n log(`fp64: ${fp64}`);\n log(`skip: ${skip}`);\n\n parse(data, LASLoader, {\n las: {\n colorDepth,\n fp64\n }\n }).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n log(\"No positions found in file (expected for all LAS point formats)\");\n return;\n }\n\n let readAttributes = {};\n\n switch (pointsFormatId) {\n case 0:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 0)\");\n return;\n }\n\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 1)\");\n return;\n }\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 2)\");\n return;\n }\n\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 3)\");\n return;\n }\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n const pointsChunks = chunkArray(readPositions(readAttributes.positions), MAX_VERTICES * 3);\n const colorsChunks = chunkArray(readAttributes.colors, MAX_VERTICES * 4);\n\n const meshIds = [];\n\n for (let j = 0, lenj = pointsChunks.length; j < lenj; j++) {\n\n const geometryId = `geometry-${j}`;\n const meshId = `mesh-${j}`;\n\n meshIds.push(meshId);\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"points\",\n positions: pointsChunks[j],\n colorsCompressed: colorsChunks[j]\n });\n\n xktModel.createMesh({\n meshId,\n geometryId\n });\n }\n\n const entityId = math.createUUID();\n\n xktModel.createEntity({\n entityId,\n meshIds\n });\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"PointCloud\",\n metaObjectName: \"PointCloud (LAZ)\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n if (stats) {\n stats.sourceFormat = \"LAS\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = readAttributes.positions.length / 3;\n }\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n\n function readPositions(positionsValue) {\n if (positionsValue) {\n if (center) {\n const centerPos = math.vec3();\n const numPoints = positionsValue.length;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n centerPos[0] += positionsValue[i + 0];\n centerPos[1] += positionsValue[i + 1];\n centerPos[2] += positionsValue[i + 2];\n }\n centerPos[0] /= numPoints;\n centerPos[1] /= numPoints;\n centerPos[2] /= numPoints;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n positionsValue[i + 0] -= centerPos[0];\n positionsValue[i + 1] -= centerPos[1];\n positionsValue[i + 2] -= centerPos[2];\n }\n }\n if (transform) {\n const mat = math.mat4(transform);\n const pos = math.vec3();\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n pos[0] = positionsValue[i + 0];\n pos[1] = positionsValue[i + 1];\n pos[2] = positionsValue[i + 2];\n math.transformPoint3(mat, pos, pos);\n positionsValue[i + 0] = pos[0];\n positionsValue[i + 1] = pos[1];\n positionsValue[i + 2] = pos[2];\n }\n }\n }\n return positionsValue;\n }\n\n function readColorsAndIntensities(attributesPosition, attributesColor, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n=0,len = intensities.length; i < len; i++, k += colorSize, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = colors[k + 0];\n colorsCompressed[m++] = colors[k + 1];\n colorsCompressed[m++] = colors[k + 2];\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function readIntensities(attributesPosition, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, len = intensities.length; i < len; i++, k += 3, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function chunkArray(array, chunkSize) {\n if (chunkSize >= array.length) {\n return [array]; // One chunk\n }\n let result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n }\n\n}\n\nexport {parseLASIntoXKTModel};","/**\n * @desc Parses JSON metamodel into an {@link XKTModel}.\n *\n * @param {Object} params Parsing parameters.\n * @param {JSON} params.metaModelData Metamodel data.\n * @param {String[]} [params.excludeTypes] Types to exclude from parsing.\n * @param {String[]} [params.includeTypes] Types to include in parsing.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when JSON has been parsed.\n */\nfunction parseMetaModelIntoXKTModel({metaModelData, xktModel, includeTypes, excludeTypes, log}) {\n\n if (log) {\n log(\"Using parser: parseMetaModelIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n const metaObjects = metaModelData.metaObjects || [];\n const propertySets = metaModelData.propertySets || [];\n\n xktModel.modelId = metaModelData.revisionId || \"\"; // HACK\n xktModel.projectId = metaModelData.projectId || \"\";\n xktModel.revisionId = metaModelData.revisionId || \"\";\n xktModel.author = metaModelData.author || \"\";\n xktModel.createdAt = metaModelData.createdAt || \"\";\n xktModel.creatingApplication = metaModelData.creatingApplication || \"\";\n xktModel.schema = metaModelData.schema || \"\";\n\n for (let i = 0, len = propertySets.length; i < len; i++) {\n\n const propertySet = propertySets[i];\n\n xktModel.createPropertySet({\n propertySetId: propertySet.id,\n propertySetName: propertySet.name,\n propertySetType: propertySet.type,\n properties: propertySet.properties\n });\n }\n\n let includeTypesMap;\n if (includeTypes) {\n includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n let excludeTypesMap;\n if (excludeTypes) {\n excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n const metaObjectsMap = {};\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const newObject = metaObjects[i];\n metaObjectsMap[newObject.id] = newObject;\n }\n\n let countMetaObjects = 0;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n\n const metaObject = metaObjects[i];\n const type = metaObject.type;\n\n if (excludeTypesMap && excludeTypesMap[type]) {\n continue;\n }\n\n if (includeTypesMap && !includeTypesMap[type]) {\n continue;\n }\n\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) { // Don't create redundant sub-objects\n continue\n }\n }\n\n const propertySetIds = [];\n if (metaObject.propertySetIds) {\n for (let j = 0, lenj = metaObject.propertySetIds.length; j < lenj; j++) {\n const propertySetId = metaObject.propertySetIds[j];\n if (propertySetId !== undefined && propertySetId !== null && propertySetId !== \"\") {\n propertySetIds.push(propertySetId);\n }\n }\n }\n if (metaObject.propertySetId !== undefined && metaObject.propertySetId !== null && metaObject.propertySetId !== \"\") {\n propertySetIds.push(metaObject.propertySetId);\n }\n\n xktModel.createMetaObject({\n metaObjectId: metaObject.id,\n metaObjectType: metaObject.type,\n metaObjectName: metaObject.name,\n parentMetaObjectId: metaObject.parent,\n propertySetIds: propertySetIds.length > 0 ? propertySetIds : null\n });\n\n countMetaObjects++;\n }\n\n if (log) {\n log(\"Converted meta objects: \" + countMetaObjects);\n }\n\n resolve();\n });\n}\n\nexport {parseMetaModelIntoXKTModel};\n","/**\n * @desc Parses PCD point cloud data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"\"./models/pcd/ism_test_cat.pcd\"\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parsePCDIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PCD file data.\n * @param {Boolean} [params.littleEndian=true] Whether PCD binary data is Little-Endian or Big-Endian.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PCD has been parsed.\n */\nfunction parsePCDIntoXKTModel({data, xktModel, littleEndian = true, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePCDIntoXKTModel\");\n }\n\n return new Promise(function(resolve, reject) {\n\n const textData = decodeText(new Uint8Array(data));\n\n const header = parseHeader(textData);\n\n const positions = [];\n const normals = [];\n const colors = [];\n\n if (header.data === 'ascii') {\n\n const offset = header.offset;\n const data = textData.substr(header.headerLen);\n const lines = data.split('\\n');\n\n for (let i = 0, l = lines.length; i < l; i++) {\n\n if (lines[i] === '') {\n continue;\n }\n\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n positions.push(parseFloat(line[offset.x]));\n positions.push(parseFloat(line[offset.y]));\n positions.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const rgb = parseFloat(line[offset.rgb]);\n const r = (rgb >> 16) & 0x0000ff;\n const g = (rgb >> 8) & 0x0000ff;\n const b = (rgb >> 0) & 0x0000ff;\n colors.push(r, g, b, 255);\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n if (header.data === 'binary_compressed') {\n\n const sizes = new Uint32Array(data.slice(header.headerLen, header.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(new Uint8Array(data, header.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = header.offset;\n\n for (let i = 0; i < header.points; i++) {\n\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32((header.points * offset.x) + header.size[0] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.y) + header.size[1] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.z) + header.size[2] * i, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 0));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 1));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 2));\n // colors.push(255);\n } else {\n colors.push(1);\n colors.push(1);\n colors.push(1);\n }\n }\n }\n\n if (header.data === 'binary') {\n\n const dataview = new DataView(data, header.headerLen);\n const offset = header.offset;\n\n for (let i = 0, row = 0; i < header.points; i++, row += header.rowSize) {\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32(row + offset.x, littleEndian));\n positions.push(dataview.getFloat32(row + offset.y, littleEndian));\n positions.push(dataview.getFloat32(row + offset.z, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8(row + offset.rgb + 2));\n colors.push(dataview.getUint8(row + offset.rgb + 1));\n colors.push(dataview.getUint8(row + offset.rgb + 0));\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n xktModel.createGeometry({\n geometryId: \"pointsGeometry\",\n primitiveType: \"points\",\n positions: positions,\n colors: colors && colors.length > 0 ? colors : null\n });\n\n xktModel.createMesh({\n meshId: \"pointsMesh\",\n geometryId: \"pointsGeometry\"\n });\n\n xktModel.createEntity({\n entityId: \"geometries\",\n meshIds: [\"pointsMesh\"]\n });\n\n if (log) {\n log(\"Converted drawable objects: 1\");\n log(\"Converted geometries: 1\");\n log(\"Converted vertices: \" + positions.length / 3);\n }\n\n if (stats) {\n stats.sourceFormat = \"PCD\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = positions.length / 3;\n }\n\n resolve();\n });\n}\n\nfunction parseHeader(data) {\n const header = {};\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n header.data = result2[1];\n header.headerLen = result2[0].length + result1;\n header.str = data.substr(0, header.headerLen);\n header.str = header.str.replace(/\\#.*/gi, ''); // Strip comments\n header.version = /VERSION (.*)/i.exec(header.str); // Parse\n header.fields = /FIELDS (.*)/i.exec(header.str);\n header.size = /SIZE (.*)/i.exec(header.str);\n header.type = /TYPE (.*)/i.exec(header.str);\n header.count = /COUNT (.*)/i.exec(header.str);\n header.width = /WIDTH (.*)/i.exec(header.str);\n header.height = /HEIGHT (.*)/i.exec(header.str);\n header.viewpoint = /VIEWPOINT (.*)/i.exec(header.str);\n header.points = /POINTS (.*)/i.exec(header.str);\n if (header.version !== null) {\n header.version = parseFloat(header.version[1]);\n }\n if (header.fields !== null) {\n header.fields = header.fields[1].split(' ');\n }\n if (header.type !== null) {\n header.type = header.type[1].split(' ');\n }\n if (header.width !== null) {\n header.width = parseInt(header.width[1]);\n }\n if (header.height !== null) {\n header.height = parseInt(header.height[1]);\n }\n if (header.viewpoint !== null) {\n header.viewpoint = header.viewpoint[1];\n }\n if (header.points !== null) {\n header.points = parseInt(header.points[1], 10);\n }\n if (header.points === null) {\n header.points = header.width * header.height;\n }\n if (header.size !== null) {\n header.size = header.size[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n }\n if (header.count !== null) {\n header.count = header.count[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n } else {\n header.count = [];\n for (let i = 0, l = header.fields.length; i < l; i++) {\n header.count.push(1);\n }\n }\n header.offset = {};\n let sizeSum = 0;\n for (let i = 0, l = header.fields.length; i < l; i++) {\n if (header.data === 'ascii') {\n header.offset[header.fields[i]] = i;\n } else {\n header.offset[header.fields[i]] = sizeSum;\n sizeSum += header.size[i] * header.count[i];\n }\n }\n header.rowSize = sizeSum; // For binary only\n return header;\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n}\n\nfunction decompressLZF(inData, outLength) { // https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n do {\n ctrl = inData[inPtr++];\n if (ctrl < (1 << 5)) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n\nexport {parsePCDIntoXKTModel};","import {parse} from '@loaders.gl/core';\nimport {PLYLoader} from '@loaders.gl/ply';\n\n/**\n * @desc Parses PLY file data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a PLY model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/ply/test.ply\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parsePLYIntoXKTModel({data, xktModel}).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PLY file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PLY has been parsed.\n */\nasync function parsePLYIntoXKTModel({data, xktModel, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePLYIntoXKTModel\");\n }\n\n if (!data) {\n throw \"Argument expected: data\";\n }\n\n if (!xktModel) {\n throw \"Argument expected: xktModel\";\n }\n\n let parsedData;\n try {\n parsedData = await parse(data, PLYLoader);\n } catch (e) {\n if (log) {\n log(\"Error: \" + e);\n }\n return;\n }\n\n const attributes = parsedData.attributes;\n const hasColors = !!attributes.COLOR_0;\n\n if (hasColors) {\n const colorsValue = hasColors ? attributes.COLOR_0.value : null;\n const colorsCompressed = [];\n for (let i = 0, len = colorsValue.length; i < len; i += 4) {\n colorsCompressed.push(colorsValue[i]);\n colorsCompressed.push(colorsValue[i + 1]);\n colorsCompressed.push(colorsValue[i + 2]);\n }\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : [],\n colorsCompressed: colorsCompressed\n });\n } else {\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : []\n });\n }\n\n xktModel.createMesh({\n meshId: \"plyMesh\",\n geometryId: \"plyGeometry\",\n color: (!hasColors) ? [1, 1, 1] : null\n });\n\n xktModel.createEntity({\n entityId: \"ply\",\n meshIds: [\"plyMesh\"]\n });\n\n if (stats) {\n stats.sourceFormat = \"PLY\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = attributes.POSITION.value.length / 3;\n }\n}\n\nexport {parsePLYIntoXKTModel};\n","import {faceToVertexNormals} from \"../lib/faceToVertexNormals.js\";\nimport {math} from \"../lib/math.js\";\n\n/**\n * @desc Parses STL file data into an {@link XKTModel}.\n *\n * * Supports binary and ASCII STL formats.\n * * Option to create a separate {@link XKTEntity} for each group of faces that share the same vertex colors.\n * * Option to smooth face-aligned normals loaded from STL.\n * * Option to reduce XKT file size by ignoring STL normals and relying on xeokit to auto-generate them.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an STL model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/stl/binary/spurGear.stl\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseSTLIntoXKTModel({data, xktModel});\n *\n * xktModel.finalize();\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer|String} [params.data] STL file data. Can be binary or string.\n * @param {Boolean} [params.autoNormals=false] When true, the parser will ignore the STL geometry normals, and the STL\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the STL.\n * Overrides ````smoothNormals```` when ````true````. This ignores the normals in the STL, and loads no\n * normals from the STL into the {@link XKTModel}, resulting in the XKT file storing no normals for the STL model. The\n * xeokit-sdk will then automatically generate the normals within its shaders. The disadvantages are that auto-normals\n * may slow rendering down a little bit, and that the normals can only be face-aligned (and thus rendered using flat\n * shading). The advantages, however, are a smaller XKT file size, and the ability to apply certain geometry optimizations\n * during parsing, such as removing duplicated STL vertex positions, that are not possible when normals are loaded\n * for the STL vertices.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented STL normals to vertex normals, for a smooth appearance. Ignored if ````autoNormals```` is ````true````.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] This is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.splitMeshes=true] When true, creates a separate {@link XKTEntity} for each group of faces that share the same vertex colors. Only works with binary STL (ie. when ````data```` is an ArrayBuffer).\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when STL has been parsed.\n */\nasync function parseSTLIntoXKTModel({\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n stats,\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseSTLIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n const rootMetaObjectId = math.createUUID();\n\n const rootMetaObject = xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n const ctx = {\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n rootMetaObject,\n nextId: 0,\n log: (log || function (msg) {\n }),\n stats: {\n numObjects: 0,\n numGeometries: 0,\n numTriangles: 0,\n numVertices: 0\n }\n };\n\n const binData = ensureBinary(data);\n\n if (isBinary(binData)) {\n parseBinary(ctx, binData);\n } else {\n parseASCII(ctx, ensureString(data));\n }\n\n if (stats) {\n stats.sourceFormat = \"STL\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numTriangles = ctx.stats.numTriangles;\n stats.numVertices = ctx.stats.numVertices;\n }\n\n resolve();\n });\n}\n\nfunction isBinary(data) {\n const reader = new DataView(data);\n const numFaces = reader.getUint32(80, true);\n const faceSize = (32 / 8 * 3) + ((32 / 8 * 3) * 3) + (16 / 8);\n const numExpectedBytes = 80 + (32 / 8) + (numFaces * faceSize);\n if (numExpectedBytes === reader.byteLength) {\n return true;\n }\n const solid = [115, 111, 108, 105, 100];\n for (let i = 0; i < 5; i++) {\n if (solid[i] !== reader.getUint8(i, false)) {\n return true;\n }\n }\n return false;\n}\n\nfunction parseBinary(ctx, data) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n let r;\n let g;\n let b;\n let hasColors = false;\n let colors;\n let defaultR;\n let defaultG;\n let defaultB;\n let lastR = null;\n let lastG = null;\n let lastB = null;\n let newMesh = false;\n let alpha;\n for (let index = 0; index < 80 - 10; index++) {\n if ((reader.getUint32(index, false) === 0x434F4C4F /*COLO*/) &&\n (reader.getUint8(index + 4) === 0x52 /*'R'*/) &&\n (reader.getUint8(index + 5) === 0x3D /*'='*/)) {\n hasColors = true;\n colors = [];\n defaultR = reader.getUint8(index + 6) / 255;\n defaultG = reader.getUint8(index + 7) / 255;\n defaultB = reader.getUint8(index + 8) / 255;\n alpha = reader.getUint8(index + 9) / 255;\n }\n }\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = ctx.splitMeshes;\n for (let face = 0; face < faces; face++) {\n let start = dataOffset + face * faceLength;\n let normalX = reader.getFloat32(start, true);\n let normalY = reader.getFloat32(start + 4, true);\n let normalZ = reader.getFloat32(start + 8, true);\n if (hasColors) {\n let packedColor = reader.getUint16(start + 48, true);\n if ((packedColor & 0x8000) === 0) {\n r = (packedColor & 0x1F) / 31;\n g = ((packedColor >> 5) & 0x1F) / 31;\n b = ((packedColor >> 10) & 0x1F) / 31;\n } else {\n r = defaultR;\n g = defaultG;\n b = defaultB;\n }\n if (splitMeshes && r !== lastR || g !== lastG || b !== lastB) {\n if (lastR !== null) {\n newMesh = true;\n }\n lastR = r;\n lastG = g;\n lastB = b;\n }\n }\n for (let i = 1; i <= 3; i++) {\n let vertexstart = start + i * 12;\n positions.push(reader.getFloat32(vertexstart, true));\n positions.push(reader.getFloat32(vertexstart + 4, true));\n positions.push(reader.getFloat32(vertexstart + 8, true));\n if (!ctx.autoNormals) {\n normals.push(normalX, normalY, normalZ);\n }\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(ctx, positions, normals, colors);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(ctx, positions, normals, colors);\n }\n}\n\nfunction parseASCII(ctx, data) {\n const faceRegex = /facet([\\s\\S]*?)endfacet/g;\n let faceCounter = 0;\n const floatRegex = /[\\s]+([+-]?(?:\\d+.\\d+|\\d+.|\\d+|.\\d+)(?:[eE][+-]?\\d+)?)/.source;\n const vertexRegex = new RegExp('vertex' + floatRegex + floatRegex + floatRegex, 'g');\n const normalRegex = new RegExp('normal' + floatRegex + floatRegex + floatRegex, 'g');\n const positions = [];\n const normals = [];\n const colors = null;\n let normalx;\n let normaly;\n let normalz;\n let result;\n let verticesPerFace;\n let normalsPerFace;\n let text;\n while ((result = faceRegex.exec(data)) !== null) {\n verticesPerFace = 0;\n normalsPerFace = 0;\n text = result[0];\n while ((result = normalRegex.exec(text)) !== null) {\n normalx = parseFloat(result[1]);\n normaly = parseFloat(result[2]);\n normalz = parseFloat(result[3]);\n normalsPerFace++;\n }\n while ((result = vertexRegex.exec(text)) !== null) {\n positions.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));\n normals.push(normalx, normaly, normalz);\n verticesPerFace++;\n }\n if (normalsPerFace !== 1) {\n ctx.log(\"Error in normal of face \" + faceCounter);\n return -1;\n }\n if (verticesPerFace !== 3) {\n ctx.log(\"Error in positions of face \" + faceCounter);\n return -1;\n }\n faceCounter++;\n }\n addMesh(ctx, positions, normals, colors);\n}\n\nlet nextGeometryId = 0;\n\nfunction addMesh(ctx, positions, normals, colors) {\n\n const indices = new Int32Array(positions.length / 3);\n for (let ni = 0, len = indices.length; ni < len; ni++) {\n indices[ni] = ni;\n }\n\n normals = normals && normals.length > 0 ? normals : null;\n colors = colors && colors.length > 0 ? colors : null;\n\n if (!ctx.autoNormals && ctx.smoothNormals) {\n faceToVertexNormals(positions, normals, {smoothNormalsAngleThreshold: ctx.smoothNormalsAngleThreshold});\n }\n\n const geometryId = \"\" + nextGeometryId++;\n const meshId = \"\" + nextGeometryId++;\n const entityId = \"\" + nextGeometryId++;\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: (!ctx.autoNormals) ? normals : null,\n colors: colors,\n indices: indices\n });\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: colors ? null : [1, 1, 1],\n metallic: 0.9,\n roughness: 0.1\n });\n\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: [meshId]\n });\n\n ctx.xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"Default\",\n metaObjectName: \"STL Mesh\",\n parentMetaObjectId: ctx.rootMetaObject.metaObjectId\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numObjects++;\n ctx.stats.numVertices += positions.length / 3;\n ctx.stats.numTriangles += indices.length / 3;\n}\n\nfunction ensureString(buffer) {\n if (typeof buffer !== 'string') {\n return decodeText(new Uint8Array(buffer));\n }\n return buffer;\n}\n\nfunction ensureBinary(buffer) {\n if (typeof buffer === 'string') {\n const arrayBuffer = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i++) {\n arrayBuffer[i] = buffer.charCodeAt(i) & 0xff; // implicitly assumes little-endian\n }\n return arrayBuffer.buffer || arrayBuffer;\n } else {\n return buffer;\n }\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]); // Implicitly assumes little-endian.\n }\n return decodeURIComponent(escape(s));\n}\n\nexport {parseSTLIntoXKTModel};\n","module.exports = require(\"@loaders.gl/core\");","module.exports = require(\"@loaders.gl/gltf\");","module.exports = require(\"@loaders.gl/images\");","module.exports = require(\"@loaders.gl/las\");","module.exports = require(\"@loaders.gl/ply\");","module.exports = require(\"@loaders.gl/polyfills\");","module.exports = require(\"@loaders.gl/textures\");","module.exports = require(\"fs\");","module.exports = require(\"pako\");","module.exports = require(\"path\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import '@loaders.gl/polyfills';\nimport {installFilePolyfills} from '@loaders.gl/polyfills';\n\ninstallFilePolyfills();\n\nexport * from \"./src/index.js\";\nexport {convert2xkt} from \"./src/convert2xkt.js\"; // convert2xkt is only bundled for Node.js\n"],"names":["KDNode","_createClass","aabb","_classCallCheck","entities","left","right","math","XKTEntity","entityId","meshes","entityIndex","AABB3","hasReusedGeometries","XKTGeometry","cfg","geometryId","primitiveType","geometryIndex","numInstances","positions","positionsQuantized","Uint16Array","length","normals","normalsOctEncoded","colorsCompressed","uvs","uvsCompressed","indices","edgeIndices","solid","key","get","XKTMesh","meshId","meshIndex","matrix","geometry","color","Float32Array","metallic","undefined","roughness","opacity","textureSet","entity","XKTMetaObject","metaObjectId","propertySetIds","metaObjectType","metaObjectName","parentMetaObjectId","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","protoProps","staticProps","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","geometryCompression","buildEdgeIndices","isTriangleMeshSolid","XKTTile","XKTPropertySet","mergeVertices","XKT_INFO","XKTTexture","XKTTextureSet","encode","load","KTX2BasisWriter","ImageLoader","tempVec4a","vec4","tempVec4b","tempMat4","mat4","tempMat4b","kdTreeDimLength","Float64Array","COLOR_TEXTURE","METALLIC_ROUGHNESS_TEXTURE","NORMALS_TEXTURE","EMISSIVE_TEXTURE","OCCLUSION_TEXTURE","TEXTURE_ENCODING_OPTIONS","useSRGB","qualityLevel","encodeUASTC","mipmaps","XKTModel","modelId","projectId","revisionId","author","createdAt","creatingApplication","schema","xktVersion","edgeThreshold","minTileSize","modelAABB","propertySets","propertySetsList","metaObjects","metaObjectsList","reusedGeometriesDecodeMatrix","geometries","geometriesList","textures","texturesList","textureSets","textureSetsList","meshesList","entitiesList","tilesList","finalized","createPropertySet","params","propertySetId","properties","console","propertySetType","propertySetName","propertySet","createMetaObject","metaObject","_rootMetaObject","createTexture","textureId","imageData","src","fileExt","split","concat","texture","mediaType","minFilter","magFilter","wrapS","wrapT","wrapR","width","height","compressed","createTextureSet","textureSetId","colorTexture","colorTextureId","channel","metallicRoughnessTexture","metallicRoughnessTextureId","normalsTexture","normalsTextureId","emissiveTexture","emissiveTextureId","occlusionTexture","occlusionTextureId","textureSetIndex","createGeometry","triangles","points","lines","line_strip","line_loop","triangle_strip","triangle_fan","_createDefaultIndices","colors","xktGeometryCfg","uv","Uint8Array","len","Math","floor","mergedPositions","mergedIndices","numIndices","createMesh","position","scale","rotation","identityMat4","quaternion","eulerToQuaternion","identityQuaternion","composeMat4","mesh","createEntity","meshIds","warn","createUUID","meshIdIdx","meshIdLen","createDefaultMetaObjects","_finalize","_callee","rootKDNode","_callee$","_context","log","_removeUnusedTextures","_compressTextures","_bakeSingleUseGeometryPositions","_bakeAndOctEncodeNormals","_createEntityAABBs","_createKDTree","_createTilesFromKDTree","_createReusedGeometriesDecodeMatrix","_flagSolidGeometries","set","finalize","leni","textureIndex","_this","countTextures","_loop","encodingOptions","image","encodedData","encodedImageData","j","lenj","isIdentityMat4","transformPoint4","Int8Array","octEncodeNormals","modelNormalMatrix","inverseMat4","transposeMat4","transformAndOctEncodeNormals","entityAABB","collapseAABB3","expandAABB3Point3","expandAABB3","_insertEntityIntoKDTree","kdNode","nodeAABB","nodeAABBDiag","getAABB3Diag","containsAABB3","dim","aabbLeft","aabbRight","_createTilesFromKDNode","_createTileFromEntities","tileAABB","tileCenter","getAABB3Center","tileCenterNeg","mulVec3Scalar","vec3","rtcAABB","reused","k","lenk","quantizePositions","translateMat4v","tile","tempVec3a","reusedGeometriesAABB","countReusedGeometries","numGeometries","createPositionsDecodeMatrix","maxNumPositions","maxNumIndices","vertexIndexMapping","Array","edges","RepeatWrapping","LinearMipMapNearestFilter","materialType","materialIndex","uniquePositions","indicesLookup","indicesReverseLookup","weldedIndices","faces","numFaces","compa","compb","compc","a","b","c","cb","ab","cross","normal","inverseNormal","weldVertices","positionsMap","vx","vy","vz","precisionPoints","precision","pow","lenUniquePositions","round","buildFaces","positionsDecodeMatrix","ia","ib","ic","decompressPosition","subVec3","cross3Vec3","normalizeVec3","face","thresholdDot","cos","DEGTORAD","edge1","edge2","index1","index2","largeIndex","edge","normal1","normal2","dot","faceIndex","min","max","face1","face2","abs","dotVec3","dot2","Uint32Array","lenPositions","quantizedPositions","xmin","ymin","zmin","xwid","ywid","zwid","maxInt","xMultiplier","yMultiplier","zMultiplier","verify","num","compressPosition","p","q","multiplier","translate","translationMat4v","scalingMat4v","mulMat4","lenNormals","compressedNormals","lenCompressedNormals","oct","dec","best","currentCos","bestCos","ei","localNormal","worldNormal","transformVec3","octEncodeVec3","octDecodeVec2","array","xfunc","yfunc","x","y","tempx","tempy","z","sqrt","compareIndexPositions","posA","posB","newIndices","sort","uniqueVertexIndex","a2","b2","c2","temp","compareEdges","e1","e2","sameEdgeCount","toArrayBuffer","buf","ArrayBuffer","view","isString","o","o2","utils","pako","XKT_VERSION","NUM_TEXTURE_ATTRIBUTES","NUM_MATERIAL_ATTRIBUTES","writeXKTModelToArrayBuffer","xktModel","metaModelJSON","stats","options","zip","writeXKTModelToArrayBufferUncompressed","data","getModelData","deflatedData","deflateData","texturesSize","textureData","byteLength","arrayBuffer","createArrayBuffer","object2Array","encoder","TextEncoder","JSON","stringify","arrays","metadata","eachTextureDataPortion","eachTextureAttributes","eachTextureSetTextures","matrices","eachGeometryPrimitiveType","eachGeometryPositionsPortion","eachGeometryNormalsPortion","eachGeometryColorsPortion","eachGeometryUVsPortion","eachGeometryIndicesPortion","eachGeometryEdgeIndicesPortion","eachMeshGeometriesPortion","eachMeshMatricesPortion","eachMeshTextureSet","eachMeshMaterialAttributes","eachEntityId","eachEntityMeshesPortion","eachTileAABB","eachTileEntitiesPortion","arraysCnt","dataView","DataView","setUint32","byteOffset","offsets","arr","BPE","BYTES_PER_ELEMENT","ceil","idx","dataArray","buffer","requiresSwapToLittleEndian","subarray","swaps","cnt","offset","i1","i2","tmp","metaModelDataStr","numPropertySets","numMetaObjects","numTextures","numTextureSets","numMeshes","numEntities","numTiles","lenColors","lenUVs","lenIndices","lenEdgeIndices","lenMatrices","lenTextures","xktTexture","numCompressedTextures","Int32Array","countPositions","countNormals","countColors","countUVs","countIndices","countEdgeIndices","id","propertySetsIndex","propertySetJSON","metaObjectsIndex","metaObjectJSON","parent","external","portionIdx","textureAttrIdx","eachTextureSetTexturesIndex","countEntityMeshesPortion","eachMeshMaterialAttributesIndex","matricesIndex","tileIndex","tileEntities","numTileEntities","entityMeshes","numEntityMeshes","tileAABBIndex","deflate","metaModelBytes","deflatedJSON","deflateJSON","replace","chr","charCodeAt","toString","substr","strings","elements","indexData","dataLen","element","elementsize","indexBuf","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipMapNearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","NearestMipMapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","LinearMipMapLinearFilter","GIFMediaType","JPEGMediaType","PNGMediaType","parseCityJSONIntoXKTModel","parseGLTFIntoXKTModel","parseIFCIntoXKTModel","parseLASIntoXKTModel","parsePCDIntoXKTModel","parsePLYIntoXKTModel","parseSTLIntoXKTModel","fs","require","path","convert2xkt","_ref","WebIFC","_ref$configs","configs","source","sourceData","sourceFormat","metaModelSource","output","outputXKTModel","outputXKT","includeTypes","excludeTypes","_ref$reuseGeometries","reuseGeometries","_ref$minTileSize","_ref$stats","outputStats","_ref$rotateX","rotateX","_ref$includeTextures","includeTextures","_ref$includeNormals","includeNormals","_ref$zip","_ref$log","msg","schemaVersion","title","created","numTriangles","numVertices","numNormals","numUVs","numObjects","sourceSize","xktSize","compressionRatio","conversionTime","getFileExtension","fileName","ext","extname","substring","_log","startTime","Date","sourceConfigs","fileTypeConfigs","overrideOption","option1","option2","readFileSync","sourceFileSizeBytes","toFixed","parse","e","convert","center","transform","metaModelData","gltfBasePath","dirname","baseUri","wasmPath","fp64","colorDepth","skip","parser","converterParams","xktArrayBuffer","xktContent","Buffer","from","targetFileSizeBytes","outputDir","existsSync","mkdirSync","recursive","writeFileSync","buildBoxGeometry","xSize","ySize","zSize","centerX","centerY","centerZ","xmax","ymax","zmax","buildBoxLinesGeometry","buildCylinderGeometry","radiusTop","radiusBottom","radialSegments","heightSegments","openEnded","heightHalf","heightLength","radialAngle","PI","radialLength","radiusChange","h","currentRadius","currentHeight","first","second","startIndex","tu","tv","normalY","atan","sin","buildGridGeometry","size","divisions","step","halfSize","l","buildPlaneGeometry","xSegments","zSegments","halfWidth","halfHeight","planeX","planeZ","planeX1","planeZ1","segmentWidth","segmentHeight","offset2","iz","ix","d","buildSphereGeometry","lod","radius","widthSegments","theta","sinTheta","cosTheta","phi","sinPhi","cosPhi","u","v","buildTorusGeometry","tube","tubeSegments","arc","vec","letters","buildVectorTextGeometry","origin","xOrigin","yOrigin","zOrigin","text","trim","countVerts","str","mag","penUp","p1","p2","needLine","pointsLen","iLine","parseGLTFJSONIntoXKTModel","parseMetaModelIntoXKTModel","earcut","holeIndices","hasHoles","outerLen","outerNode","linkedList","minX","minY","maxX","maxY","invSize","eliminateHoles","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","again","steiner","area","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","minZ","zOrder","maxZ","prevZ","n","nextZ","intersects","locallyInside","isValidDiagonal","splitPolygon","queue","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","qx","Infinity","m","mx","my","tanMin","tan","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","ax","ay","bx","by","cx","cy","px","py","intersectsPolygon","middleInside","r","q1","q2","o1","sign","o3","o4","onSegment","inside","Node","an","bp","deviation","polygonArea","trianglesArea","sum","flatten","vertices","holes","dimensions","holeIndex","faceToVertexNormals","smoothNormalsAngleThreshold","vertexMap","vertexNormals","vertexNormalAccum","acc","posi","numVerts","ii","jj","angle","angleVec3","doublePrecision","FloatArrayType","tempMat1","tempMat2","tempVec4","MIN_DOUBLE","MAX_SAFE_INTEGER","MAX_DOUBLE","RADTODEG","vec2","mat3","mat3ToMat4","mat4ToMat3","lut","d0","random","d1","d2","d3","clamp","fmod","negateVec4","dest","addVec4","addVec4Scalar","s","addVec3","addVec3Scalar","subVec4","subVec2","subVec4Scalar","subScalarVec4","mulVec4","mulVec4Scalar","mulVec2Scalar","divVec3","divVec4","divScalarVec3","divVec3Scalar","divVec4Scalar","divScalarVec4","dotVec4","cross3Vec4","u0","u1","u2","v0","v1","v2","x2","y2","z2","sqLenVec4","lenVec4","dotVec2","sqLenVec3","sqLenVec2","lenVec3","distVec3","w","lenVec2","distVec2","rcpVec3","normalizeVec4","f","normalizeVec2","acos","vec3FromMat4Scale","tempVec3","vecToArray","trunc","xyzArrayToObject","xyzObjectToArray","xyz","arry","dupMat4","mat4To3","m4s","setMat4ToZeroes","setMat4ToOnes","diagonalMat4v","diagonalMat4c","diagonalMat4s","mat","identityMat3","negateMat4","addMat4","addMat4Scalar","addScalarMat4","subMat4","subMat4Scalar","subScalarMat4","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","mulMat3","mulMat4Scalar","mulMat4v4","v3","m4","m14","m8","m13","m12","m9","transposeMat3","determinantMat4","b04","b05","b06","b07","b08","b09","invDet","traceMat4","translationMat3v","translationMat4c","translationMat4s","translateMat4c","OLDtranslateMat4c","m15","m3","m7","m11","rotationMat4v","anglerad","axis","xy","yz","zx","xs","ys","zs","rotationMat4c","scalingMat3v","scalingMat4c","scaleMat4c","scaleMat4v","scalingMat4s","rotationTranslationMat4","xx","xz","yy","zz","wx","wy","wz","mat4ToEuler","order","m21","m22","m23","m31","m32","m33","asin","atan2","quaternionToRotationMat4","decomposeMat4","decompose","sx","sy","sz","det","invSX","invSY","invSZ","mat4ToQuaternion","lookAtMat4v","pos","up","posx","posy","posz","upx","upy","upz","targetx","targety","targetz","z0","z1","x0","x1","y0","y1","lookAtMat4c","orthoMat4c","bottom","top","near","far","rl","tb","frustumMat4v","fmin","fmax","fmin4","fmax4","t","tempMat20","tempMat21","tempMat22","frustumMat4","perspectiveMat4","fovyrad","aspectratio","znear","zfar","pmin","pmax","transformPoint3","transformPoints3","points2","p0","pi","m0","m1","m2","m5","m6","m10","transformPositions3","transformPositions4","transformVec4","rotateVec3X","rotateVec3Y","rotateVec3Z","projectVec4","unprojectVec3","mat2","viewMat","projMat","lerpVec3","t1","t2","item","euler","c1","c3","s1","s2","s3","trace","vec3PairToQuaternion","norm_u_norm_v","real_part","normalizeQuaternion","angleAxisToQuaternion","angleAxis","halfAngle","fsin","quaternionToEuler","mulQuaternions","p3","q0","q3","vec3ApplyQuaternion","qy","qz","qw","iy","iw","quaternionToMat4","tx","ty","tz","twx","twy","twz","txx","txy","txz","tyy","tyz","tzz","conjugateQuaternion","inverseQuaternion","quaternionToAngleAxis","AABB2","OBB3","OBB2","Sphere3","transformOBB3","aabb1","aabb2","getAABB3DiagPoint","diagVec","xneg","xpos","yneg","ypos","zneg","zpos","getAABB2Center","AABB3ToOBB3","obb","positions3ToAABB3","OBB3ToAABB3","points3ToAABB3","points3ToSphere3","sphere","numPoints","dist","positions3ToSphere3","tempVec3b","numPositions","OBB3ToSphere3","point","lenPoints","getSphere3Center","triangleNormal","p1x","p1y","p1z","p2x","p2y","p2z","p3x","p3y","p3z","uvi","tempVec2a","tempVec3c","_ref$center","_ref$transform","copyVertices","transformVertices","centerVertices","customTransformVertices","version","rootMetaObjectId","modelMetaObjectId","ctx","nextId","parseCityJSON","vertices2","cityJSONTransform","vertex","centerPos","cityObjects","CityObjects","objectId","cityObject","parseCityObject","parents","objectMaterial","surfaceMaterials","appearance","materials","geometryMaterial","material","themeIds","themeId","theme","surfaceMaterial","parseGeometrySurfacesWithOwnMaterials","parseGeometrySurfacesWithSharedMaterial","geomType","surfaces","boundaries","parseSurfacesWithOwnMaterials","shells","solids","surface","diffuseColor","transparency","sharedIndices","geometryCfg","newFace","extractLocalIndices","_toConsumableArray","pList","getNormalOfPositions","pv","to2D","unshift","tr","parseSurfacesWithSharedMaterial","primitiveCfg","boundary","newBoundary","index","includes","vertexIndex","indexOf","nexti","_p","_n","re","x3","tmp2","y3","GLTFLoader","getAttachment","gltfData","nodesHaveNames","geometryCreated","geometriesCreated","parseTextures","parseMaterials","parseDefaultScene","errMsg","parseTexture","sampler","flipY","_textureId","_textureSetId","parseTextureSet","_attributes","parseMaterialAttributes","textureSetCfg","normalTexture","normalTextureId","metallicPBR","pbrMetallicRoughness","baseColorTexture","extensions","specularPBR","specularTexture","specularColorTexture","materialAttributes","diffuseFactor","common","technique","blinn","phong","lambert","diffuse","transparent","baseColorFactor","metallicFactor","roughnessFactor","scene","scenes","parseScene","nodes","node","countMeshUsage","testIfNodesHaveNames","parseNodesWithoutNames","parseNodesWithNames","level","instances","children","childNode","depth","parseNodeMatrix","parseNodeMesh","objectIdStack","meshIdsStack","xktEntityId","nodeName","entityMeshIds","localMatrix","translation","createPrimitiveHash","primitive","hash","attributes","join","numPrimitives","primitives","mode","POSITION","NORMAL","COLOR_0","TEXCOORD_0","xktMeshId","meshCfg","atob2","atob","WEBGL_COMPONENT_TYPES","Int16Array","WEBGL_TYPE_SIZES","gltf","metaModelCorrections","getMetaModelCorrections","createXKTGeometryIds","nextMeshId","parseBuffers","parseBufferViews","freeBuffers","eachRootStats","eachChildRoot","metaObjectsMap","metaObjectParent","rootMetaObject","rootStats","numChildren","countChildren","buffers","all","map","parseBuffer","bufferInfo","_arrayBuffer","_buffer","uri","parseArrayBuffer","dataUriRegex","dataUriRegexResult","match","isBase64","decodeURIComponent","bufferViewsInfo","bufferViews","parseBufferView","bufferViewInfo","_typedArray","materialsInfo","materialInfo","parseMaterial","_materialData","defaultSceneInfo","sceneInfo","glTFNode","parseNode","deferredMeshIds","gltfMeshId","meshInfo","numPrimitivesInMesh","primitiveInfo","geometryHash","createPrimitiveGeometryHash","xktGeometryId","geometryArrays","parsePrimitiveGeometry","childNodeIdx","childGLTFNode","rootMetaObjectStats","accessors","indicesIndex","accessorInfo","parseAccessorTypedArray","positionsIndex","normalsIndex","colorsIndex","bufferView","itemSize","TypedArray","componentType","elementBytes","itemBytes","byteStride","count","_ref$autoNormals","autoNormals","ifcAPI","IfcAPI","SetWasmPath","Init","modelID","OpenModel","GetLineIDsWithType","IFCPROJECT","ifcProjectId","ifcProject","GetLine","parseMetadata","parseGeometry","parsePropertySets","IFCRELDEFINESBYPROPERTIES","relID","rel","relatingPropertyDefinition","RelatingPropertyDefinition","GlobalId","relatedObjects","RelatedObjects","relatedObject","HasProperties","Name","prop","nominalValue","NominalValue","property","valueType","Description","description","parseSpatialChildren","ifcElement","parseRelatedItemsOfType","expressID","IFCRELAGGREGATES","IFCRELCONTAINEDINSPATIALSTRUCTURE","relation","related","relatedItems","foundElement","isArray","element2","flatMeshes","LoadAllGeometry","flatMesh","createObject","IFCSPACE","ifcSpaceId","GetFlatMesh","flatMeshExpressID","placedGeometries","placedGeometry","geometryExpressID","GetGeometry","vertexData","GetVertexArray","GetVertexData","GetVertexDataSize","GetIndexArray","GetIndexData","GetIndexDataSize","flatTransformation","LASLoader","MAX_VERTICES","_ref$colorDepth","_ref$fp","_ref$skip","las","parsedData","loaderData","pointsFormatId","readAttributes","intensity","readIntensities","readColorsAndIntensities","pointsChunks","chunkArray","readPositions","colorsChunks","positionsValue","attributesPosition","attributesColor","attributesIntensity","colorSize","intensities","colorsCompressedSize","chunkSize","includeTypesMap","excludeTypesMap","newObject","countMetaObjects","_ref$littleEndian","littleEndian","textData","decodeText","header","parseHeader","headerLen","line","parseFloat","rgb","g","sizes","compressedSize","decompressedSize","decompressed","decompressLZF","dataview","getFloat32","getUint8","row","rowSize","result1","search","result2","exec","fields","viewpoint","parseInt","sizeSum","TextDecoder","decode","il","fromCharCode","escape","inData","outLength","inLength","outData","inPtr","outPtr","ctrl","ref","PLYLoader","_x","_parsePLYIntoXKTModel","hasColors","colorsValue","t0","_parseSTLIntoXKTModel","splitMeshes","smoothNormals","binData","ensureBinary","isBinary","parseBinary","parseASCII","ensureString","reader","getUint32","faceSize","numExpectedBytes","defaultR","defaultG","defaultB","lastR","lastG","lastB","newMesh","alpha","dataOffset","faceLength","normalX","normalZ","packedColor","getUint16","vertexstart","addMesh","faceRegex","faceCounter","floatRegex","vertexRegex","RegExp","normalRegex","normalx","normaly","normalz","verticesPerFace","normalsPerFace","nextGeometryId","ni","installFilePolyfills"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/xeokit-convert.es.js b/dist/xeokit-convert.es.js index 3cae582..b9988eb 100644 --- a/dist/xeokit-convert.es.js +++ b/dist/xeokit-convert.es.js @@ -23492,6 +23492,7 @@ function parseGLTFIntoXKTModel({ includeTextures: (includeTextures !== false), geometryCreated: {}, nextId: 0, + geometriesCreated : {}, stats }; @@ -23780,7 +23781,7 @@ function parseScene$1(ctx, scene) { } } -function countMeshUsage(ctx, node, level=0) { +function countMeshUsage(ctx, node, level = 0) { if (!node) { return; } @@ -23796,12 +23797,12 @@ function countMeshUsage(ctx, node, level=0) { ctx.error("Node not found: " + i); continue; } - countMeshUsage(ctx, childNode, level+1); + countMeshUsage(ctx, childNode, level + 1); } } } -function testIfNodesHaveNames(node, level=0) { +function testIfNodesHaveNames(node, level = 0) { if (!node) { return; } @@ -23812,7 +23813,7 @@ function testIfNodesHaveNames(node, level=0) { const children = node.children; for (let i = 0, len = children.length; i < len; i++) { const childNode = children[i]; - if (testIfNodesHaveNames(childNode, level+1)) { + if (testIfNodesHaveNames(childNode, level + 1)) { return true; } } @@ -23966,6 +23967,17 @@ function parseNodeMatrix(node, matrix) { return matrix; } +function createPrimitiveHash(primitive) { + const hash = []; + const attributes = primitive.attributes; + if (attributes) { + for (let key in attributes) { + hash.push(attributes[key].id); + } + } + return hash.join("."); +} + /** * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel. * @@ -23987,10 +23999,10 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { for (let i = 0; i < numPrimitives; i++) { try { const primitive = mesh.primitives[i]; - if (!primitive._xktGeometryId) { - const xktGeometryId = "geometry-" + ctx.nextId++; + const geometryId = createPrimitiveHash(primitive); + if (!ctx.geometriesCreated[geometryId]) { const geometryCfg = { - geometryId: xktGeometryId + geometryId }; switch (primitive.mode) { case 0: // POINTS @@ -24045,13 +24057,13 @@ function parseNodeMesh(node, ctx, matrix, meshIds) { } } ctx.xktModel.createGeometry(geometryCfg); - primitive._xktGeometryId = xktGeometryId; + ctx.geometriesCreated[geometryId] = true; ctx.stats.numGeometries++; } const xktMeshId = ctx.nextId++; const meshCfg = { meshId: xktMeshId, - geometryId: primitive._xktGeometryId, + geometryId, matrix: matrix ? matrix.slice() : math.identityMat4() }; const material = primitive.material; diff --git a/docs/ast/source/parsers/parseGLTFIntoXKTModel.js.json b/docs/ast/source/parsers/parseGLTFIntoXKTModel.js.json index a83f442..383fb26 100644 --- a/docs/ast/source/parsers/parseGLTFIntoXKTModel.js.json +++ b/docs/ast/source/parsers/parseGLTFIntoXKTModel.js.json @@ -1,28 +1,28 @@ { "type": "File", "start": 0, - "end": 24603, + "end": 24873, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 702, + "line": 714, "column": 31 } }, "program": { "type": "Program", "start": 0, - "end": 24603, + "end": 24873, "loc": { "start": { "line": 1, "column": 0 }, "end": { - "line": 702, + "line": 714, "column": 31 } }, @@ -871,14 +871,14 @@ { "type": "Identifier", "start": 2328, - "end": 4812, + "end": 4852, "loc": { "start": { "line": 60, "column": 0 }, "end": { - "line": 136, + "line": 137, "column": 1 } }, @@ -1513,14 +1513,14 @@ "body": { "type": "BlockStatement", "start": 2828, - "end": 4812, + "end": 4852, "loc": { "start": { "line": 70, "column": 34 }, "end": { - "line": 136, + "line": 137, "column": 1 } }, @@ -1528,28 +1528,28 @@ { "type": "ReturnStatement", "start": 2835, - "end": 4810, + "end": 4850, "loc": { "start": { "line": 72, "column": 4 }, "end": { - "line": 135, + "line": 136, "column": 7 } }, "argument": { "type": "NewExpression", "start": 2842, - "end": 4809, + "end": 4849, "loc": { "start": { "line": 72, "column": 11 }, "end": { - "line": 135, + "line": 136, "column": 6 } }, @@ -1574,14 +1574,14 @@ { "type": "FunctionExpression", "start": 2854, - "end": 4808, + "end": 4848, "loc": { "start": { "line": 72, "column": 23 }, "end": { - "line": 135, + "line": 136, "column": 5 } }, @@ -1628,14 +1628,14 @@ "body": { "type": "BlockStatement", "start": 2881, - "end": 4808, + "end": 4848, "loc": { "start": { "line": 72, "column": 50 }, "end": { - "line": 135, + "line": 136, "column": 5 } }, @@ -3167,28 +3167,28 @@ { "type": "ExpressionStatement", "start": 3467, - "end": 4802, + "end": 4842, "loc": { "start": { "line": 97, "column": 8 }, "end": { - "line": 134, + "line": 135, "column": 11 } }, "expression": { "type": "CallExpression", "start": 3467, - "end": 4801, + "end": 4841, "loc": { "start": { "line": 97, "column": 8 }, "end": { - "line": 134, + "line": 135, "column": 10 } }, @@ -3369,14 +3369,14 @@ { "type": "ArrowFunctionExpression", "start": 3529, - "end": 4718, + "end": 4758, "loc": { "start": { "line": 99, "column": 16 }, "end": { - "line": 132, + "line": 133, "column": 9 } }, @@ -3406,14 +3406,14 @@ "body": { "type": "BlockStatement", "start": 3543, - "end": 4718, + "end": 4758, "loc": { "start": { "line": 99, "column": 30 }, "end": { - "line": 132, + "line": 133, "column": 9 } }, @@ -3421,14 +3421,14 @@ { "type": "VariableDeclaration", "start": 3558, - "end": 4285, + "end": 4325, "loc": { "start": { "line": 101, "column": 12 }, "end": { - "line": 118, + "line": 119, "column": 14 } }, @@ -3436,14 +3436,14 @@ { "type": "VariableDeclarator", "start": 3564, - "end": 4284, + "end": 4324, "loc": { "start": { "line": 101, "column": 18 }, "end": { - "line": 118, + "line": 119, "column": 13 } }, @@ -3467,14 +3467,14 @@ "init": { "type": "ObjectExpression", "start": 3570, - "end": 4284, + "end": 4324, "loc": { "start": { "line": 101, "column": 24 }, "end": { - "line": 118, + "line": 119, "column": 13 } }, @@ -4440,7 +4440,7 @@ { "type": "ObjectProperty", "start": 4265, - "end": 4270, + "end": 4287, "loc": { "start": { "line": 117, @@ -4448,16 +4448,16 @@ }, "end": { "line": 117, - "column": 21 + "column": 38 } }, "method": false, - "shorthand": true, + "shorthand": false, "computed": false, "key": { "type": "Identifier", "start": 4265, - "end": 4270, + "end": 4282, "loc": { "start": { "line": 117, @@ -4465,6 +4465,57 @@ }, "end": { "line": 117, + "column": 33 + }, + "identifierName": "geometriesCreated" + }, + "name": "geometriesCreated" + }, + "value": { + "type": "ObjectExpression", + "start": 4285, + "end": 4287, + "loc": { + "start": { + "line": 117, + "column": 36 + }, + "end": { + "line": 117, + "column": 38 + } + }, + "properties": [] + } + }, + { + "type": "ObjectProperty", + "start": 4305, + "end": 4310, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, + "column": 21 + } + }, + "method": false, + "shorthand": true, + "computed": false, + "key": { + "type": "Identifier", + "start": 4305, + "end": 4310, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, "column": 21 }, "identifierName": "stats" @@ -4473,15 +4524,15 @@ }, "value": { "type": "Identifier", - "start": 4265, - "end": 4270, + "start": 4305, + "end": 4310, "loc": { "start": { - "line": 117, + "line": 118, "column": 16 }, "end": { - "line": 117, + "line": 118, "column": 21 }, "identifierName": "stats" @@ -4500,57 +4551,57 @@ }, { "type": "ExpressionStatement", - "start": 4299, - "end": 4346, + "start": 4339, + "end": 4386, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 4299, - "end": 4345, + "start": 4339, + "end": 4385, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 4299, - "end": 4306, + "start": 4339, + "end": 4346, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 19 } }, "object": { "type": "Identifier", - "start": 4299, - "end": 4302, + "start": 4339, + "end": 4342, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 15 }, "identifierName": "ctx" @@ -4559,15 +4610,15 @@ }, "property": { "type": "Identifier", - "start": 4303, - "end": 4306, + "start": 4343, + "end": 4346, "loc": { "start": { - "line": 120, + "line": 121, "column": 16 }, "end": { - "line": 120, + "line": 121, "column": 19 }, "identifierName": "log" @@ -4579,15 +4630,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 4307, - "end": 4344, + "start": 4347, + "end": 4384, "loc": { "start": { - "line": 120, + "line": 121, "column": 20 }, "end": { - "line": 120, + "line": 121, "column": 57 } }, @@ -4602,57 +4653,57 @@ }, { "type": "ExpressionStatement", - "start": 4359, - "end": 4434, + "start": 4399, + "end": 4474, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 4359, - "end": 4433, + "start": 4399, + "end": 4473, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 4359, - "end": 4366, + "start": 4399, + "end": 4406, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 19 } }, "object": { "type": "Identifier", - "start": 4359, - "end": 4362, + "start": 4399, + "end": 4402, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 15 }, "identifierName": "ctx" @@ -4661,15 +4712,15 @@ }, "property": { "type": "Identifier", - "start": 4363, - "end": 4366, + "start": 4403, + "end": 4406, "loc": { "start": { - "line": 121, + "line": 122, "column": 16 }, "end": { - "line": 121, + "line": 122, "column": 19 }, "identifierName": "log" @@ -4681,58 +4732,58 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4367, - "end": 4432, + "start": 4407, + "end": 4472, "loc": { "start": { - "line": 121, + "line": 122, "column": 20 }, "end": { - "line": 121, + "line": 122, "column": 85 } }, "expressions": [ { "type": "ConditionalExpression", - "start": 4387, - "end": 4430, + "start": 4427, + "end": 4470, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 83 } }, "test": { "type": "MemberExpression", - "start": 4387, - "end": 4405, + "start": 4427, + "end": 4445, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 58 } }, "object": { "type": "Identifier", - "start": 4387, - "end": 4390, + "start": 4427, + "end": 4430, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 43 }, "identifierName": "ctx" @@ -4741,15 +4792,15 @@ }, "property": { "type": "Identifier", - "start": 4391, - "end": 4405, + "start": 4431, + "end": 4445, "loc": { "start": { - "line": 121, + "line": 122, "column": 44 }, "end": { - "line": 121, + "line": 122, "column": 58 }, "identifierName": "includeNormals" @@ -4760,15 +4811,15 @@ }, "consequent": { "type": "StringLiteral", - "start": 4408, - "end": 4417, + "start": 4448, + "end": 4457, "loc": { "start": { - "line": 121, + "line": 122, "column": 61 }, "end": { - "line": 121, + "line": 122, "column": 70 } }, @@ -4780,15 +4831,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 4420, - "end": 4430, + "start": 4460, + "end": 4470, "loc": { "start": { - "line": 121, + "line": 122, "column": 73 }, "end": { - "line": 121, + "line": 122, "column": 83 } }, @@ -4803,15 +4854,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4368, - "end": 4385, + "start": 4408, + "end": 4425, "loc": { "start": { - "line": 121, + "line": 122, "column": 21 }, "end": { - "line": 121, + "line": 122, "column": 38 } }, @@ -4823,15 +4874,15 @@ }, { "type": "TemplateElement", - "start": 4431, - "end": 4431, + "start": 4471, + "end": 4471, "loc": { "start": { - "line": 121, + "line": 122, "column": 84 }, "end": { - "line": 121, + "line": 122, "column": 84 } }, @@ -4848,57 +4899,57 @@ }, { "type": "ExpressionStatement", - "start": 4447, - "end": 4524, + "start": 4487, + "end": 4564, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 4447, - "end": 4523, + "start": 4487, + "end": 4563, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 4447, - "end": 4454, + "start": 4487, + "end": 4494, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 19 } }, "object": { "type": "Identifier", - "start": 4447, - "end": 4450, + "start": 4487, + "end": 4490, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 15 }, "identifierName": "ctx" @@ -4907,15 +4958,15 @@ }, "property": { "type": "Identifier", - "start": 4451, - "end": 4454, + "start": 4491, + "end": 4494, "loc": { "start": { - "line": 122, + "line": 123, "column": 16 }, "end": { - "line": 122, + "line": 123, "column": 19 }, "identifierName": "log" @@ -4927,58 +4978,58 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4455, - "end": 4522, + "start": 4495, + "end": 4562, "loc": { "start": { - "line": 122, + "line": 123, "column": 20 }, "end": { - "line": 122, + "line": 123, "column": 87 } }, "expressions": [ { "type": "ConditionalExpression", - "start": 4476, - "end": 4520, + "start": 4516, + "end": 4560, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 85 } }, "test": { "type": "MemberExpression", - "start": 4476, - "end": 4495, + "start": 4516, + "end": 4535, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 60 } }, "object": { "type": "Identifier", - "start": 4476, - "end": 4479, + "start": 4516, + "end": 4519, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 44 }, "identifierName": "ctx" @@ -4987,15 +5038,15 @@ }, "property": { "type": "Identifier", - "start": 4480, - "end": 4495, + "start": 4520, + "end": 4535, "loc": { "start": { - "line": 122, + "line": 123, "column": 45 }, "end": { - "line": 122, + "line": 123, "column": 60 }, "identifierName": "includeTextures" @@ -5006,15 +5057,15 @@ }, "consequent": { "type": "StringLiteral", - "start": 4498, - "end": 4507, + "start": 4538, + "end": 4547, "loc": { "start": { - "line": 122, + "line": 123, "column": 63 }, "end": { - "line": 122, + "line": 123, "column": 72 } }, @@ -5026,15 +5077,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 4510, - "end": 4520, + "start": 4550, + "end": 4560, "loc": { "start": { - "line": 122, + "line": 123, "column": 75 }, "end": { - "line": 122, + "line": 123, "column": 85 } }, @@ -5049,15 +5100,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4456, - "end": 4474, + "start": 4496, + "end": 4514, "loc": { "start": { - "line": 122, + "line": 123, "column": 21 }, "end": { - "line": 122, + "line": 123, "column": 39 } }, @@ -5069,15 +5120,15 @@ }, { "type": "TemplateElement", - "start": 4521, - "end": 4521, + "start": 4561, + "end": 4561, "loc": { "start": { - "line": 122, + "line": 123, "column": 86 }, "end": { - "line": 122, + "line": 123, "column": 86 } }, @@ -5094,43 +5145,43 @@ }, { "type": "IfStatement", - "start": 4538, - "end": 4614, + "start": 4578, + "end": 4654, "loc": { "start": { - "line": 124, + "line": 125, "column": 12 }, "end": { - "line": 126, + "line": 127, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 4542, - "end": 4561, + "start": 4582, + "end": 4601, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 35 } }, "object": { "type": "Identifier", - "start": 4542, - "end": 4545, + "start": 4582, + "end": 4585, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 19 }, "identifierName": "ctx" @@ -5139,15 +5190,15 @@ }, "property": { "type": "Identifier", - "start": 4546, - "end": 4561, + "start": 4586, + "end": 4601, "loc": { "start": { - "line": 124, + "line": 125, "column": 20 }, "end": { - "line": 124, + "line": 125, "column": 35 }, "identifierName": "includeTextures" @@ -5158,58 +5209,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 4563, - "end": 4614, + "start": 4603, + "end": 4654, "loc": { "start": { - "line": 124, + "line": 125, "column": 37 }, "end": { - "line": 126, + "line": 127, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 4581, - "end": 4600, + "start": 4621, + "end": 4640, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4581, - "end": 4599, + "start": 4621, + "end": 4639, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 34 } }, "callee": { "type": "Identifier", - "start": 4581, - "end": 4594, + "start": 4621, + "end": 4634, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 29 }, "identifierName": "parseTextures" @@ -5219,15 +5270,15 @@ "arguments": [ { "type": "Identifier", - "start": 4595, - "end": 4598, + "start": 4635, + "end": 4638, "loc": { "start": { - "line": 125, + "line": 126, "column": 30 }, "end": { - "line": 125, + "line": 126, "column": 33 }, "identifierName": "ctx" @@ -5244,43 +5295,43 @@ }, { "type": "ExpressionStatement", - "start": 4627, - "end": 4647, + "start": 4667, + "end": 4687, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 4627, - "end": 4646, + "start": 4667, + "end": 4686, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 31 } }, "callee": { "type": "Identifier", - "start": 4627, - "end": 4641, + "start": 4667, + "end": 4681, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 26 }, "identifierName": "parseMaterials" @@ -5290,15 +5341,15 @@ "arguments": [ { "type": "Identifier", - "start": 4642, - "end": 4645, + "start": 4682, + "end": 4685, "loc": { "start": { - "line": 127, + "line": 128, "column": 27 }, "end": { - "line": 127, + "line": 128, "column": 30 }, "identifierName": "ctx" @@ -5310,43 +5361,43 @@ }, { "type": "ExpressionStatement", - "start": 4660, - "end": 4683, + "start": 4700, + "end": 4723, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4660, - "end": 4682, + "start": 4700, + "end": 4722, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 34 } }, "callee": { "type": "Identifier", - "start": 4660, - "end": 4677, + "start": 4700, + "end": 4717, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 29 }, "identifierName": "parseDefaultScene" @@ -5356,15 +5407,15 @@ "arguments": [ { "type": "Identifier", - "start": 4678, - "end": 4681, + "start": 4718, + "end": 4721, "loc": { "start": { - "line": 128, + "line": 129, "column": 30 }, "end": { - "line": 128, + "line": 129, "column": 33 }, "identifierName": "ctx" @@ -5376,43 +5427,43 @@ }, { "type": "ExpressionStatement", - "start": 4697, - "end": 4707, + "start": 4737, + "end": 4747, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 22 } }, "expression": { "type": "CallExpression", - "start": 4697, - "end": 4706, + "start": 4737, + "end": 4746, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 21 } }, "callee": { "type": "Identifier", - "start": 4697, - "end": 4704, + "start": 4737, + "end": 4744, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 19 }, "identifierName": "resolve" @@ -5428,15 +5479,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 4720, - "end": 4800, + "start": 4760, + "end": 4840, "loc": { "start": { - "line": 132, + "line": 133, "column": 11 }, "end": { - "line": 134, + "line": 135, "column": 9 } }, @@ -5447,15 +5498,15 @@ "params": [ { "type": "Identifier", - "start": 4721, - "end": 4727, + "start": 4761, + "end": 4767, "loc": { "start": { - "line": 132, + "line": 133, "column": 12 }, "end": { - "line": 132, + "line": 133, "column": 18 }, "identifierName": "errMsg" @@ -5465,58 +5516,58 @@ ], "body": { "type": "BlockStatement", - "start": 4732, - "end": 4800, + "start": 4772, + "end": 4840, "loc": { "start": { - "line": 132, + "line": 133, "column": 23 }, "end": { - "line": 134, + "line": 135, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 4746, - "end": 4790, + "start": 4786, + "end": 4830, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 4746, - "end": 4789, + "start": 4786, + "end": 4829, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 55 } }, "callee": { "type": "Identifier", - "start": 4746, - "end": 4752, + "start": 4786, + "end": 4792, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 18 }, "identifierName": "reject" @@ -5526,30 +5577,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4753, - "end": 4788, + "start": 4793, + "end": 4828, "loc": { "start": { - "line": 133, + "line": 134, "column": 19 }, "end": { - "line": 133, + "line": 134, "column": 54 } }, "expressions": [ { "type": "Identifier", - "start": 4780, - "end": 4786, + "start": 4820, + "end": 4826, "loc": { "start": { - "line": 133, + "line": 134, "column": 46 }, "end": { - "line": 133, + "line": 134, "column": 52 }, "identifierName": "errMsg" @@ -5560,15 +5611,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4754, - "end": 4778, + "start": 4794, + "end": 4818, "loc": { "start": { - "line": 133, + "line": 134, "column": 20 }, "end": { - "line": 133, + "line": 134, "column": 44 } }, @@ -5580,15 +5631,15 @@ }, { "type": "TemplateElement", - "start": 4787, - "end": 4787, + "start": 4827, + "end": 4827, "loc": { "start": { - "line": 133, + "line": 134, "column": 53 }, "end": { - "line": 133, + "line": 134, "column": 53 } }, @@ -5626,29 +5677,29 @@ }, { "type": "FunctionDeclaration", - "start": 4814, - "end": 5100, + "start": 4854, + "end": 5140, "loc": { "start": { - "line": 138, + "line": 139, "column": 0 }, "end": { - "line": 147, + "line": 148, "column": 1 } }, "id": { "type": "Identifier", - "start": 4823, - "end": 4836, + "start": 4863, + "end": 4876, "loc": { "start": { - "line": 138, + "line": 139, "column": 9 }, "end": { - "line": 138, + "line": 139, "column": 22 }, "identifierName": "parseTextures" @@ -5661,15 +5712,15 @@ "params": [ { "type": "Identifier", - "start": 4837, - "end": 4840, + "start": 4877, + "end": 4880, "loc": { "start": { - "line": 138, + "line": 139, "column": 23 }, "end": { - "line": 138, + "line": 139, "column": 26 }, "identifierName": "ctx" @@ -5679,59 +5730,59 @@ ], "body": { "type": "BlockStatement", - "start": 4842, - "end": 5100, + "start": 4882, + "end": 5140, "loc": { "start": { - "line": 138, + "line": 139, "column": 28 }, "end": { - "line": 147, + "line": 148, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 4848, - "end": 4878, + "start": 4888, + "end": 4918, "loc": { "start": { - "line": 139, + "line": 140, "column": 4 }, "end": { - "line": 139, + "line": 140, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 4854, - "end": 4877, + "start": 4894, + "end": 4917, "loc": { "start": { - "line": 139, + "line": 140, "column": 10 }, "end": { - "line": 139, + "line": 140, "column": 33 } }, "id": { "type": "Identifier", - "start": 4854, - "end": 4862, + "start": 4894, + "end": 4902, "loc": { "start": { - "line": 139, + "line": 140, "column": 10 }, "end": { - "line": 139, + "line": 140, "column": 18 }, "identifierName": "gltfData" @@ -5740,29 +5791,29 @@ }, "init": { "type": "MemberExpression", - "start": 4865, - "end": 4877, + "start": 4905, + "end": 4917, "loc": { "start": { - "line": 139, + "line": 140, "column": 21 }, "end": { - "line": 139, + "line": 140, "column": 33 } }, "object": { "type": "Identifier", - "start": 4865, - "end": 4868, + "start": 4905, + "end": 4908, "loc": { "start": { - "line": 139, + "line": 140, "column": 21 }, "end": { - "line": 139, + "line": 140, "column": 24 }, "identifierName": "ctx" @@ -5771,15 +5822,15 @@ }, "property": { "type": "Identifier", - "start": 4869, - "end": 4877, + "start": 4909, + "end": 4917, "loc": { "start": { - "line": 139, + "line": 140, "column": 25 }, "end": { - "line": 139, + "line": 140, "column": 33 }, "identifierName": "gltfData" @@ -5794,44 +5845,44 @@ }, { "type": "VariableDeclaration", - "start": 4883, - "end": 4918, + "start": 4923, + "end": 4958, "loc": { "start": { - "line": 140, + "line": 141, "column": 4 }, "end": { - "line": 140, + "line": 141, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 4889, - "end": 4917, + "start": 4929, + "end": 4957, "loc": { "start": { - "line": 140, + "line": 141, "column": 10 }, "end": { - "line": 140, + "line": 141, "column": 38 } }, "id": { "type": "Identifier", - "start": 4889, - "end": 4897, + "start": 4929, + "end": 4937, "loc": { "start": { - "line": 140, + "line": 141, "column": 10 }, "end": { - "line": 140, + "line": 141, "column": 18 }, "identifierName": "textures" @@ -5840,29 +5891,29 @@ }, "init": { "type": "MemberExpression", - "start": 4900, - "end": 4917, + "start": 4940, + "end": 4957, "loc": { "start": { - "line": 140, + "line": 141, "column": 21 }, "end": { - "line": 140, + "line": 141, "column": 38 } }, "object": { "type": "Identifier", - "start": 4900, - "end": 4908, + "start": 4940, + "end": 4948, "loc": { "start": { - "line": 140, + "line": 141, "column": 21 }, "end": { - "line": 140, + "line": 141, "column": 29 }, "identifierName": "gltfData" @@ -5871,15 +5922,15 @@ }, "property": { "type": "Identifier", - "start": 4909, - "end": 4917, + "start": 4949, + "end": 4957, "loc": { "start": { - "line": 140, + "line": 141, "column": 30 }, "end": { - "line": 140, + "line": 141, "column": 38 }, "identifierName": "textures" @@ -5894,29 +5945,29 @@ }, { "type": "IfStatement", - "start": 4923, - "end": 5098, + "start": 4963, + "end": 5138, "loc": { "start": { - "line": 141, + "line": 142, "column": 4 }, "end": { - "line": 146, + "line": 147, "column": 5 } }, "test": { "type": "Identifier", - "start": 4927, - "end": 4935, + "start": 4967, + "end": 4975, "loc": { "start": { - "line": 141, + "line": 142, "column": 8 }, "end": { - "line": 141, + "line": 142, "column": 16 }, "identifierName": "textures" @@ -5925,73 +5976,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 4937, - "end": 5098, + "start": 4977, + "end": 5138, "loc": { "start": { - "line": 141, + "line": 142, "column": 18 }, "end": { - "line": 146, + "line": 147, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 4947, - "end": 5092, + "start": 4987, + "end": 5132, "loc": { "start": { - "line": 142, + "line": 143, "column": 8 }, "end": { - "line": 145, + "line": 146, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 4952, - "end": 4984, + "start": 4992, + "end": 5024, "loc": { "start": { - "line": 142, + "line": 143, "column": 13 }, "end": { - "line": 142, + "line": 143, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 4956, - "end": 4961, + "start": 4996, + "end": 5001, "loc": { "start": { - "line": 142, + "line": 143, "column": 17 }, "end": { - "line": 142, + "line": 143, "column": 22 } }, "id": { "type": "Identifier", - "start": 4956, - "end": 4957, + "start": 4996, + "end": 4997, "loc": { "start": { - "line": 142, + "line": 143, "column": 17 }, "end": { - "line": 142, + "line": 143, "column": 18 }, "identifierName": "i" @@ -6000,15 +6051,15 @@ }, "init": { "type": "NumericLiteral", - "start": 4960, - "end": 4961, + "start": 5000, + "end": 5001, "loc": { "start": { - "line": 142, + "line": 143, "column": 21 }, "end": { - "line": 142, + "line": 143, "column": 22 } }, @@ -6021,29 +6072,29 @@ }, { "type": "VariableDeclarator", - "start": 4963, - "end": 4984, + "start": 5003, + "end": 5024, "loc": { "start": { - "line": 142, + "line": 143, "column": 24 }, "end": { - "line": 142, + "line": 143, "column": 45 } }, "id": { "type": "Identifier", - "start": 4963, - "end": 4966, + "start": 5003, + "end": 5006, "loc": { "start": { - "line": 142, + "line": 143, "column": 24 }, "end": { - "line": 142, + "line": 143, "column": 27 }, "identifierName": "len" @@ -6052,29 +6103,29 @@ }, "init": { "type": "MemberExpression", - "start": 4969, - "end": 4984, + "start": 5009, + "end": 5024, "loc": { "start": { - "line": 142, + "line": 143, "column": 30 }, "end": { - "line": 142, + "line": 143, "column": 45 } }, "object": { "type": "Identifier", - "start": 4969, - "end": 4977, + "start": 5009, + "end": 5017, "loc": { "start": { - "line": 142, + "line": 143, "column": 30 }, "end": { - "line": 142, + "line": 143, "column": 38 }, "identifierName": "textures" @@ -6083,15 +6134,15 @@ }, "property": { "type": "Identifier", - "start": 4978, - "end": 4984, + "start": 5018, + "end": 5024, "loc": { "start": { - "line": 142, + "line": 143, "column": 39 }, "end": { - "line": 142, + "line": 143, "column": 45 }, "identifierName": "length" @@ -6106,29 +6157,29 @@ }, "test": { "type": "BinaryExpression", - "start": 4986, - "end": 4993, + "start": 5026, + "end": 5033, "loc": { "start": { - "line": 142, + "line": 143, "column": 47 }, "end": { - "line": 142, + "line": 143, "column": 54 } }, "left": { "type": "Identifier", - "start": 4986, - "end": 4987, + "start": 5026, + "end": 5027, "loc": { "start": { - "line": 142, + "line": 143, "column": 47 }, "end": { - "line": 142, + "line": 143, "column": 48 }, "identifierName": "i" @@ -6138,15 +6189,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 4990, - "end": 4993, + "start": 5030, + "end": 5033, "loc": { "start": { - "line": 142, + "line": 143, "column": 51 }, "end": { - "line": 142, + "line": 143, "column": 54 }, "identifierName": "len" @@ -6156,15 +6207,15 @@ }, "update": { "type": "UpdateExpression", - "start": 4995, - "end": 4998, + "start": 5035, + "end": 5038, "loc": { "start": { - "line": 142, + "line": 143, "column": 56 }, "end": { - "line": 142, + "line": 143, "column": 59 } }, @@ -6172,15 +6223,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 4995, - "end": 4996, + "start": 5035, + "end": 5036, "loc": { "start": { - "line": 142, + "line": 143, "column": 56 }, "end": { - "line": 142, + "line": 143, "column": 57 }, "identifierName": "i" @@ -6190,58 +6241,58 @@ }, "body": { "type": "BlockStatement", - "start": 5000, - "end": 5092, + "start": 5040, + "end": 5132, "loc": { "start": { - "line": 142, + "line": 143, "column": 61 }, "end": { - "line": 145, + "line": 146, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 5014, - "end": 5045, + "start": 5054, + "end": 5085, "loc": { "start": { - "line": 143, + "line": 144, "column": 12 }, "end": { - "line": 143, + "line": 144, "column": 43 } }, "expression": { "type": "CallExpression", - "start": 5014, - "end": 5044, + "start": 5054, + "end": 5084, "loc": { "start": { - "line": 143, + "line": 144, "column": 12 }, "end": { - "line": 143, + "line": 144, "column": 42 } }, "callee": { "type": "Identifier", - "start": 5014, - "end": 5026, + "start": 5054, + "end": 5066, "loc": { "start": { - "line": 143, + "line": 144, "column": 12 }, "end": { - "line": 143, + "line": 144, "column": 24 }, "identifierName": "parseTexture" @@ -6251,15 +6302,15 @@ "arguments": [ { "type": "Identifier", - "start": 5027, - "end": 5030, + "start": 5067, + "end": 5070, "loc": { "start": { - "line": 143, + "line": 144, "column": 25 }, "end": { - "line": 143, + "line": 144, "column": 28 }, "identifierName": "ctx" @@ -6268,29 +6319,29 @@ }, { "type": "MemberExpression", - "start": 5032, - "end": 5043, + "start": 5072, + "end": 5083, "loc": { "start": { - "line": 143, + "line": 144, "column": 30 }, "end": { - "line": 143, + "line": 144, "column": 41 } }, "object": { "type": "Identifier", - "start": 5032, - "end": 5040, + "start": 5072, + "end": 5080, "loc": { "start": { - "line": 143, + "line": 144, "column": 30 }, "end": { - "line": 143, + "line": 144, "column": 38 }, "identifierName": "textures" @@ -6299,15 +6350,15 @@ }, "property": { "type": "Identifier", - "start": 5041, - "end": 5042, + "start": 5081, + "end": 5082, "loc": { "start": { - "line": 143, + "line": 144, "column": 39 }, "end": { - "line": 143, + "line": 144, "column": 40 }, "identifierName": "i" @@ -6321,29 +6372,29 @@ }, { "type": "ExpressionStatement", - "start": 5058, - "end": 5082, + "start": 5098, + "end": 5122, "loc": { "start": { - "line": 144, + "line": 145, "column": 12 }, "end": { - "line": 144, + "line": 145, "column": 36 } }, "expression": { "type": "UpdateExpression", - "start": 5058, - "end": 5081, + "start": 5098, + "end": 5121, "loc": { "start": { - "line": 144, + "line": 145, "column": 12 }, "end": { - "line": 144, + "line": 145, "column": 35 } }, @@ -6351,43 +6402,43 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 5058, - "end": 5079, + "start": 5098, + "end": 5119, "loc": { "start": { - "line": 144, + "line": 145, "column": 12 }, "end": { - "line": 144, + "line": 145, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 5058, - "end": 5067, + "start": 5098, + "end": 5107, "loc": { "start": { - "line": 144, + "line": 145, "column": 12 }, "end": { - "line": 144, + "line": 145, "column": 21 } }, "object": { "type": "Identifier", - "start": 5058, - "end": 5061, + "start": 5098, + "end": 5101, "loc": { "start": { - "line": 144, + "line": 145, "column": 12 }, "end": { - "line": 144, + "line": 145, "column": 15 }, "identifierName": "ctx" @@ -6396,15 +6447,15 @@ }, "property": { "type": "Identifier", - "start": 5062, - "end": 5067, + "start": 5102, + "end": 5107, "loc": { "start": { - "line": 144, + "line": 145, "column": 16 }, "end": { - "line": 144, + "line": 145, "column": 21 }, "identifierName": "stats" @@ -6415,15 +6466,15 @@ }, "property": { "type": "Identifier", - "start": 5068, - "end": 5079, + "start": 5108, + "end": 5119, "loc": { "start": { - "line": 144, + "line": 145, "column": 22 }, "end": { - "line": 144, + "line": 145, "column": 33 }, "identifierName": "numTextures" @@ -6449,29 +6500,29 @@ }, { "type": "FunctionDeclaration", - "start": 5102, - "end": 7500, + "start": 5142, + "end": 7540, "loc": { "start": { - "line": 149, + "line": 150, "column": 0 }, "end": { - "line": 242, + "line": 243, "column": 1 } }, "id": { "type": "Identifier", - "start": 5111, - "end": 5123, + "start": 5151, + "end": 5163, "loc": { "start": { - "line": 149, + "line": 150, "column": 9 }, "end": { - "line": 149, + "line": 150, "column": 21 }, "identifierName": "parseTexture" @@ -6484,15 +6535,15 @@ "params": [ { "type": "Identifier", - "start": 5124, - "end": 5127, + "start": 5164, + "end": 5167, "loc": { "start": { - "line": 149, + "line": 150, "column": 22 }, "end": { - "line": 149, + "line": 150, "column": 25 }, "identifierName": "ctx" @@ -6501,15 +6552,15 @@ }, { "type": "Identifier", - "start": 5129, - "end": 5136, + "start": 5169, + "end": 5176, "loc": { "start": { - "line": 149, + "line": 150, "column": 27 }, "end": { - "line": 149, + "line": 150, "column": 34 }, "identifierName": "texture" @@ -6519,58 +6570,58 @@ ], "body": { "type": "BlockStatement", - "start": 5138, - "end": 7500, + "start": 5178, + "end": 7540, "loc": { "start": { - "line": 149, + "line": 150, "column": 36 }, "end": { - "line": 242, + "line": 243, "column": 1 } }, "body": [ { "type": "IfStatement", - "start": 5144, - "end": 5213, + "start": 5184, + "end": 5253, "loc": { "start": { - "line": 150, + "line": 151, "column": 4 }, "end": { - "line": 152, + "line": 153, "column": 5 } }, "test": { "type": "LogicalExpression", - "start": 5148, - "end": 5188, + "start": 5188, + "end": 5228, "loc": { "start": { - "line": 150, + "line": 151, "column": 8 }, "end": { - "line": 150, + "line": 151, "column": 48 } }, "left": { "type": "UnaryExpression", - "start": 5148, - "end": 5163, + "start": 5188, + "end": 5203, "loc": { "start": { - "line": 150, + "line": 151, "column": 8 }, "end": { - "line": 150, + "line": 151, "column": 23 } }, @@ -6578,29 +6629,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 5149, - "end": 5163, + "start": 5189, + "end": 5203, "loc": { "start": { - "line": 150, + "line": 151, "column": 9 }, "end": { - "line": 150, + "line": 151, "column": 23 } }, "object": { "type": "Identifier", - "start": 5149, - "end": 5156, + "start": 5189, + "end": 5196, "loc": { "start": { - "line": 150, + "line": 151, "column": 9 }, "end": { - "line": 150, + "line": 151, "column": 16 }, "identifierName": "texture" @@ -6609,15 +6660,15 @@ }, "property": { "type": "Identifier", - "start": 5157, - "end": 5163, + "start": 5197, + "end": 5203, "loc": { "start": { - "line": 150, + "line": 151, "column": 17 }, "end": { - "line": 150, + "line": 151, "column": 23 }, "identifierName": "source" @@ -6633,15 +6684,15 @@ "operator": "||", "right": { "type": "UnaryExpression", - "start": 5167, - "end": 5188, + "start": 5207, + "end": 5228, "loc": { "start": { - "line": 150, + "line": 151, "column": 27 }, "end": { - "line": 150, + "line": 151, "column": 48 } }, @@ -6649,43 +6700,43 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 5168, - "end": 5188, + "start": 5208, + "end": 5228, "loc": { "start": { - "line": 150, + "line": 151, "column": 28 }, "end": { - "line": 150, + "line": 151, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 5168, - "end": 5182, + "start": 5208, + "end": 5222, "loc": { "start": { - "line": 150, + "line": 151, "column": 28 }, "end": { - "line": 150, + "line": 151, "column": 42 } }, "object": { "type": "Identifier", - "start": 5168, - "end": 5175, + "start": 5208, + "end": 5215, "loc": { "start": { - "line": 150, + "line": 151, "column": 28 }, "end": { - "line": 150, + "line": 151, "column": 35 }, "identifierName": "texture" @@ -6694,15 +6745,15 @@ }, "property": { "type": "Identifier", - "start": 5176, - "end": 5182, + "start": 5216, + "end": 5222, "loc": { "start": { - "line": 150, + "line": 151, "column": 36 }, "end": { - "line": 150, + "line": 151, "column": 42 }, "identifierName": "source" @@ -6713,15 +6764,15 @@ }, "property": { "type": "Identifier", - "start": 5183, - "end": 5188, + "start": 5223, + "end": 5228, "loc": { "start": { - "line": 150, + "line": 151, "column": 43 }, "end": { - "line": 150, + "line": 151, "column": 48 }, "identifierName": "image" @@ -6737,30 +6788,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 5190, - "end": 5213, + "start": 5230, + "end": 5253, "loc": { "start": { - "line": 150, + "line": 151, "column": 50 }, "end": { - "line": 152, + "line": 153, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 5200, - "end": 5207, + "start": 5240, + "end": 5247, "loc": { "start": { - "line": 151, + "line": 152, "column": 8 }, "end": { - "line": 151, + "line": 152, "column": 15 } }, @@ -6773,44 +6824,44 @@ }, { "type": "VariableDeclaration", - "start": 5218, - "end": 5262, + "start": 5258, + "end": 5302, "loc": { "start": { - "line": 153, + "line": 154, "column": 4 }, "end": { - "line": 153, + "line": 154, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5224, - "end": 5261, + "start": 5264, + "end": 5301, "loc": { "start": { - "line": 153, + "line": 154, "column": 10 }, "end": { - "line": 153, + "line": 154, "column": 47 } }, "id": { "type": "Identifier", - "start": 5224, - "end": 5233, + "start": 5264, + "end": 5273, "loc": { "start": { - "line": 153, + "line": 154, "column": 10 }, "end": { - "line": 153, + "line": 154, "column": 19 }, "identifierName": "textureId" @@ -6819,30 +6870,30 @@ }, "init": { "type": "TemplateLiteral", - "start": 5236, - "end": 5261, + "start": 5276, + "end": 5301, "loc": { "start": { - "line": 153, + "line": 154, "column": 22 }, "end": { - "line": 153, + "line": 154, "column": 47 } }, "expressions": [ { "type": "UpdateExpression", - "start": 5247, - "end": 5259, + "start": 5287, + "end": 5299, "loc": { "start": { - "line": 153, + "line": 154, "column": 33 }, "end": { - "line": 153, + "line": 154, "column": 45 } }, @@ -6850,29 +6901,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 5247, - "end": 5257, + "start": 5287, + "end": 5297, "loc": { "start": { - "line": 153, + "line": 154, "column": 33 }, "end": { - "line": 153, + "line": 154, "column": 43 } }, "object": { "type": "Identifier", - "start": 5247, - "end": 5250, + "start": 5287, + "end": 5290, "loc": { "start": { - "line": 153, + "line": 154, "column": 33 }, "end": { - "line": 153, + "line": 154, "column": 36 }, "identifierName": "ctx" @@ -6881,15 +6932,15 @@ }, "property": { "type": "Identifier", - "start": 5251, - "end": 5257, + "start": 5291, + "end": 5297, "loc": { "start": { - "line": 153, + "line": 154, "column": 37 }, "end": { - "line": 153, + "line": 154, "column": 43 }, "identifierName": "nextId" @@ -6903,15 +6954,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 5237, - "end": 5245, + "start": 5277, + "end": 5285, "loc": { "start": { - "line": 153, + "line": 154, "column": 23 }, "end": { - "line": 153, + "line": 154, "column": 31 } }, @@ -6923,15 +6974,15 @@ }, { "type": "TemplateElement", - "start": 5260, - "end": 5260, + "start": 5300, + "end": 5300, "loc": { "start": { - "line": 153, + "line": 154, "column": 46 }, "end": { - "line": 153, + "line": 154, "column": 46 } }, @@ -6949,44 +7000,44 @@ }, { "type": "VariableDeclaration", - "start": 5268, - "end": 5310, + "start": 5308, + "end": 5350, "loc": { "start": { - "line": 155, + "line": 156, "column": 4 }, "end": { - "line": 155, + "line": 156, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5272, - "end": 5309, + "start": 5312, + "end": 5349, "loc": { "start": { - "line": 155, + "line": 156, "column": 8 }, "end": { - "line": 155, + "line": 156, "column": 45 } }, "id": { "type": "Identifier", - "start": 5272, - "end": 5281, + "start": 5312, + "end": 5321, "loc": { "start": { - "line": 155, + "line": 156, "column": 8 }, "end": { - "line": 155, + "line": 156, "column": 17 }, "identifierName": "minFilter" @@ -6995,15 +7046,15 @@ }, "init": { "type": "Identifier", - "start": 5284, - "end": 5309, + "start": 5324, + "end": 5349, "loc": { "start": { - "line": 155, + "line": 156, "column": 20 }, "end": { - "line": 155, + "line": 156, "column": 45 }, "identifierName": "NearestMipMapLinearFilter" @@ -7016,57 +7067,57 @@ }, { "type": "SwitchStatement", - "start": 5315, - "end": 5866, + "start": 5355, + "end": 5906, "loc": { "start": { - "line": 156, + "line": 157, "column": 4 }, "end": { - "line": 175, + "line": 176, "column": 5 } }, "discriminant": { "type": "MemberExpression", - "start": 5323, - "end": 5348, + "start": 5363, + "end": 5388, "loc": { "start": { - "line": 156, + "line": 157, "column": 12 }, "end": { - "line": 156, + "line": 157, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 5323, - "end": 5338, + "start": 5363, + "end": 5378, "loc": { "start": { - "line": 156, + "line": 157, "column": 12 }, "end": { - "line": 156, + "line": 157, "column": 27 } }, "object": { "type": "Identifier", - "start": 5323, - "end": 5330, + "start": 5363, + "end": 5370, "loc": { "start": { - "line": 156, + "line": 157, "column": 12 }, "end": { - "line": 156, + "line": 157, "column": 19 }, "identifierName": "texture" @@ -7075,15 +7126,15 @@ }, "property": { "type": "Identifier", - "start": 5331, - "end": 5338, + "start": 5371, + "end": 5378, "loc": { "start": { - "line": 156, + "line": 157, "column": 20 }, "end": { - "line": 156, + "line": 157, "column": 27 }, "identifierName": "sampler" @@ -7094,15 +7145,15 @@ }, "property": { "type": "Identifier", - "start": 5339, - "end": 5348, + "start": 5379, + "end": 5388, "loc": { "start": { - "line": 156, + "line": 157, "column": 28 }, "end": { - "line": 156, + "line": 157, "column": 37 }, "identifierName": "minFilter" @@ -7114,59 +7165,59 @@ "cases": [ { "type": "SwitchCase", - "start": 5360, - "end": 5428, + "start": 5400, + "end": 5468, "loc": { "start": { - "line": 157, + "line": 158, "column": 8 }, "end": { - "line": 159, + "line": 160, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5383, - "end": 5409, + "start": 5423, + "end": 5449, "loc": { "start": { - "line": 158, + "line": 159, "column": 12 }, "end": { - "line": 158, + "line": 159, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 5383, - "end": 5408, + "start": 5423, + "end": 5448, "loc": { "start": { - "line": 158, + "line": 159, "column": 12 }, "end": { - "line": 158, + "line": 159, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5383, - "end": 5392, + "start": 5423, + "end": 5432, "loc": { "start": { - "line": 158, + "line": 159, "column": 12 }, "end": { - "line": 158, + "line": 159, "column": 21 }, "identifierName": "minFilter" @@ -7175,15 +7226,15 @@ }, "right": { "type": "Identifier", - "start": 5395, - "end": 5408, + "start": 5435, + "end": 5448, "loc": { "start": { - "line": 158, + "line": 159, "column": 24 }, "end": { - "line": 158, + "line": 159, "column": 37 }, "identifierName": "NearestFilter" @@ -7194,15 +7245,15 @@ }, { "type": "BreakStatement", - "start": 5422, - "end": 5428, + "start": 5462, + "end": 5468, "loc": { "start": { - "line": 159, + "line": 160, "column": 12 }, "end": { - "line": 159, + "line": 160, "column": 18 } }, @@ -7211,15 +7262,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5365, - "end": 5369, + "start": 5405, + "end": 5409, "loc": { "start": { - "line": 157, + "line": 158, "column": 13 }, "end": { - "line": 157, + "line": 158, "column": 17 } }, @@ -7232,59 +7283,59 @@ }, { "type": "SwitchCase", - "start": 5437, - "end": 5504, + "start": 5477, + "end": 5544, "loc": { "start": { - "line": 160, + "line": 161, "column": 8 }, "end": { - "line": 162, + "line": 163, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5460, - "end": 5485, + "start": 5500, + "end": 5525, "loc": { "start": { - "line": 161, + "line": 162, "column": 12 }, "end": { - "line": 161, + "line": 162, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 5460, - "end": 5484, + "start": 5500, + "end": 5524, "loc": { "start": { - "line": 161, + "line": 162, "column": 12 }, "end": { - "line": 161, + "line": 162, "column": 36 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5460, - "end": 5469, + "start": 5500, + "end": 5509, "loc": { "start": { - "line": 161, + "line": 162, "column": 12 }, "end": { - "line": 161, + "line": 162, "column": 21 }, "identifierName": "minFilter" @@ -7293,15 +7344,15 @@ }, "right": { "type": "Identifier", - "start": 5472, - "end": 5484, + "start": 5512, + "end": 5524, "loc": { "start": { - "line": 161, + "line": 162, "column": 24 }, "end": { - "line": 161, + "line": 162, "column": 36 }, "identifierName": "LinearFilter" @@ -7312,15 +7363,15 @@ }, { "type": "BreakStatement", - "start": 5498, - "end": 5504, + "start": 5538, + "end": 5544, "loc": { "start": { - "line": 162, + "line": 163, "column": 12 }, "end": { - "line": 162, + "line": 163, "column": 18 } }, @@ -7329,15 +7380,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5442, - "end": 5446, + "start": 5482, + "end": 5486, "loc": { "start": { - "line": 160, + "line": 161, "column": 13 }, "end": { - "line": 160, + "line": 161, "column": 17 } }, @@ -7350,59 +7401,59 @@ }, { "type": "SwitchCase", - "start": 5513, - "end": 5594, + "start": 5553, + "end": 5634, "loc": { "start": { - "line": 163, + "line": 164, "column": 8 }, "end": { - "line": 165, + "line": 166, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5536, - "end": 5575, + "start": 5576, + "end": 5615, "loc": { "start": { - "line": 164, + "line": 165, "column": 12 }, "end": { - "line": 164, + "line": 165, "column": 51 } }, "expression": { "type": "AssignmentExpression", - "start": 5536, - "end": 5574, + "start": 5576, + "end": 5614, "loc": { "start": { - "line": 164, + "line": 165, "column": 12 }, "end": { - "line": 164, + "line": 165, "column": 50 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5536, - "end": 5545, + "start": 5576, + "end": 5585, "loc": { "start": { - "line": 164, + "line": 165, "column": 12 }, "end": { - "line": 164, + "line": 165, "column": 21 }, "identifierName": "minFilter" @@ -7411,15 +7462,15 @@ }, "right": { "type": "Identifier", - "start": 5548, - "end": 5574, + "start": 5588, + "end": 5614, "loc": { "start": { - "line": 164, + "line": 165, "column": 24 }, "end": { - "line": 164, + "line": 165, "column": 50 }, "identifierName": "NearestMipMapNearestFilter" @@ -7430,15 +7481,15 @@ }, { "type": "BreakStatement", - "start": 5588, - "end": 5594, + "start": 5628, + "end": 5634, "loc": { "start": { - "line": 165, + "line": 166, "column": 12 }, "end": { - "line": 165, + "line": 166, "column": 18 } }, @@ -7447,15 +7498,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5518, - "end": 5522, + "start": 5558, + "end": 5562, "loc": { "start": { - "line": 163, + "line": 164, "column": 13 }, "end": { - "line": 163, + "line": 164, "column": 17 } }, @@ -7468,59 +7519,59 @@ }, { "type": "SwitchCase", - "start": 5603, - "end": 5683, + "start": 5643, + "end": 5723, "loc": { "start": { - "line": 166, + "line": 167, "column": 8 }, "end": { - "line": 168, + "line": 169, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5626, - "end": 5664, + "start": 5666, + "end": 5704, "loc": { "start": { - "line": 167, + "line": 168, "column": 12 }, "end": { - "line": 167, + "line": 168, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 5626, - "end": 5663, + "start": 5666, + "end": 5703, "loc": { "start": { - "line": 167, + "line": 168, "column": 12 }, "end": { - "line": 167, + "line": 168, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5626, - "end": 5635, + "start": 5666, + "end": 5675, "loc": { "start": { - "line": 167, + "line": 168, "column": 12 }, "end": { - "line": 167, + "line": 168, "column": 21 }, "identifierName": "minFilter" @@ -7529,15 +7580,15 @@ }, "right": { "type": "Identifier", - "start": 5638, - "end": 5663, + "start": 5678, + "end": 5703, "loc": { "start": { - "line": 167, + "line": 168, "column": 24 }, "end": { - "line": 167, + "line": 168, "column": 49 }, "identifierName": "LinearMipMapNearestFilter" @@ -7548,15 +7599,15 @@ }, { "type": "BreakStatement", - "start": 5677, - "end": 5683, + "start": 5717, + "end": 5723, "loc": { "start": { - "line": 168, + "line": 169, "column": 12 }, "end": { - "line": 168, + "line": 169, "column": 18 } }, @@ -7565,15 +7616,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5608, - "end": 5612, + "start": 5648, + "end": 5652, "loc": { "start": { - "line": 166, + "line": 167, "column": 13 }, "end": { - "line": 166, + "line": 167, "column": 17 } }, @@ -7586,59 +7637,59 @@ }, { "type": "SwitchCase", - "start": 5692, - "end": 5772, + "start": 5732, + "end": 5812, "loc": { "start": { - "line": 169, + "line": 170, "column": 8 }, "end": { - "line": 171, + "line": 172, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5715, - "end": 5753, + "start": 5755, + "end": 5793, "loc": { "start": { - "line": 170, + "line": 171, "column": 12 }, "end": { - "line": 170, + "line": 171, "column": 50 } }, "expression": { "type": "AssignmentExpression", - "start": 5715, - "end": 5752, + "start": 5755, + "end": 5792, "loc": { "start": { - "line": 170, + "line": 171, "column": 12 }, "end": { - "line": 170, + "line": 171, "column": 49 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5715, - "end": 5724, + "start": 5755, + "end": 5764, "loc": { "start": { - "line": 170, + "line": 171, "column": 12 }, "end": { - "line": 170, + "line": 171, "column": 21 }, "identifierName": "minFilter" @@ -7647,15 +7698,15 @@ }, "right": { "type": "Identifier", - "start": 5727, - "end": 5752, + "start": 5767, + "end": 5792, "loc": { "start": { - "line": 170, + "line": 171, "column": 24 }, "end": { - "line": 170, + "line": 171, "column": 49 }, "identifierName": "NearestMipMapLinearFilter" @@ -7666,15 +7717,15 @@ }, { "type": "BreakStatement", - "start": 5766, - "end": 5772, + "start": 5806, + "end": 5812, "loc": { "start": { - "line": 171, + "line": 172, "column": 12 }, "end": { - "line": 171, + "line": 172, "column": 18 } }, @@ -7683,15 +7734,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5697, - "end": 5701, + "start": 5737, + "end": 5741, "loc": { "start": { - "line": 169, + "line": 170, "column": 13 }, "end": { - "line": 169, + "line": 170, "column": 17 } }, @@ -7704,59 +7755,59 @@ }, { "type": "SwitchCase", - "start": 5781, - "end": 5860, + "start": 5821, + "end": 5900, "loc": { "start": { - "line": 172, + "line": 173, "column": 8 }, "end": { - "line": 174, + "line": 175, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5804, - "end": 5841, + "start": 5844, + "end": 5881, "loc": { "start": { - "line": 173, + "line": 174, "column": 12 }, "end": { - "line": 173, + "line": 174, "column": 49 } }, "expression": { "type": "AssignmentExpression", - "start": 5804, - "end": 5840, + "start": 5844, + "end": 5880, "loc": { "start": { - "line": 173, + "line": 174, "column": 12 }, "end": { - "line": 173, + "line": 174, "column": 48 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5804, - "end": 5813, + "start": 5844, + "end": 5853, "loc": { "start": { - "line": 173, + "line": 174, "column": 12 }, "end": { - "line": 173, + "line": 174, "column": 21 }, "identifierName": "minFilter" @@ -7765,15 +7816,15 @@ }, "right": { "type": "Identifier", - "start": 5816, - "end": 5840, + "start": 5856, + "end": 5880, "loc": { "start": { - "line": 173, + "line": 174, "column": 24 }, "end": { - "line": 173, + "line": 174, "column": 48 }, "identifierName": "LinearMipMapLinearFilter" @@ -7784,15 +7835,15 @@ }, { "type": "BreakStatement", - "start": 5854, - "end": 5860, + "start": 5894, + "end": 5900, "loc": { "start": { - "line": 174, + "line": 175, "column": 12 }, "end": { - "line": 174, + "line": 175, "column": 18 } }, @@ -7801,15 +7852,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5786, - "end": 5790, + "start": 5826, + "end": 5830, "loc": { "start": { - "line": 172, + "line": 173, "column": 13 }, "end": { - "line": 172, + "line": 173, "column": 17 } }, @@ -7824,44 +7875,44 @@ }, { "type": "VariableDeclaration", - "start": 5872, - "end": 5901, + "start": 5912, + "end": 5941, "loc": { "start": { - "line": 177, + "line": 178, "column": 4 }, "end": { - "line": 177, + "line": 178, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 5876, - "end": 5900, + "start": 5916, + "end": 5940, "loc": { "start": { - "line": 177, + "line": 178, "column": 8 }, "end": { - "line": 177, + "line": 178, "column": 32 } }, "id": { "type": "Identifier", - "start": 5876, - "end": 5885, + "start": 5916, + "end": 5925, "loc": { "start": { - "line": 177, + "line": 178, "column": 8 }, "end": { - "line": 177, + "line": 178, "column": 17 }, "identifierName": "magFilter" @@ -7870,15 +7921,15 @@ }, "init": { "type": "Identifier", - "start": 5888, - "end": 5900, + "start": 5928, + "end": 5940, "loc": { "start": { - "line": 177, + "line": 178, "column": 20 }, "end": { - "line": 177, + "line": 178, "column": 32 }, "identifierName": "LinearFilter" @@ -7891,57 +7942,57 @@ }, { "type": "SwitchStatement", - "start": 5906, - "end": 6101, + "start": 5946, + "end": 6141, "loc": { "start": { - "line": 178, + "line": 179, "column": 4 }, "end": { - "line": 185, + "line": 186, "column": 5 } }, "discriminant": { "type": "MemberExpression", - "start": 5914, - "end": 5939, + "start": 5954, + "end": 5979, "loc": { "start": { - "line": 178, + "line": 179, "column": 12 }, "end": { - "line": 178, + "line": 179, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 5914, - "end": 5929, + "start": 5954, + "end": 5969, "loc": { "start": { - "line": 178, + "line": 179, "column": 12 }, "end": { - "line": 178, + "line": 179, "column": 27 } }, "object": { "type": "Identifier", - "start": 5914, - "end": 5921, + "start": 5954, + "end": 5961, "loc": { "start": { - "line": 178, + "line": 179, "column": 12 }, "end": { - "line": 178, + "line": 179, "column": 19 }, "identifierName": "texture" @@ -7950,15 +8001,15 @@ }, "property": { "type": "Identifier", - "start": 5922, - "end": 5929, + "start": 5962, + "end": 5969, "loc": { "start": { - "line": 178, + "line": 179, "column": 20 }, "end": { - "line": 178, + "line": 179, "column": 27 }, "identifierName": "sampler" @@ -7969,15 +8020,15 @@ }, "property": { "type": "Identifier", - "start": 5930, - "end": 5939, + "start": 5970, + "end": 5979, "loc": { "start": { - "line": 178, + "line": 179, "column": 28 }, "end": { - "line": 178, + "line": 179, "column": 37 }, "identifierName": "magFilter" @@ -7989,59 +8040,59 @@ "cases": [ { "type": "SwitchCase", - "start": 5951, - "end": 6019, + "start": 5991, + "end": 6059, "loc": { "start": { - "line": 179, + "line": 180, "column": 8 }, "end": { - "line": 181, + "line": 182, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 5974, - "end": 6000, + "start": 6014, + "end": 6040, "loc": { "start": { - "line": 180, + "line": 181, "column": 12 }, "end": { - "line": 180, + "line": 181, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 5974, - "end": 5999, + "start": 6014, + "end": 6039, "loc": { "start": { - "line": 180, + "line": 181, "column": 12 }, "end": { - "line": 180, + "line": 181, "column": 37 } }, "operator": "=", "left": { "type": "Identifier", - "start": 5974, - "end": 5983, + "start": 6014, + "end": 6023, "loc": { "start": { - "line": 180, + "line": 181, "column": 12 }, "end": { - "line": 180, + "line": 181, "column": 21 }, "identifierName": "magFilter" @@ -8050,15 +8101,15 @@ }, "right": { "type": "Identifier", - "start": 5986, - "end": 5999, + "start": 6026, + "end": 6039, "loc": { "start": { - "line": 180, + "line": 181, "column": 24 }, "end": { - "line": 180, + "line": 181, "column": 37 }, "identifierName": "NearestFilter" @@ -8069,15 +8120,15 @@ }, { "type": "BreakStatement", - "start": 6013, - "end": 6019, + "start": 6053, + "end": 6059, "loc": { "start": { - "line": 181, + "line": 182, "column": 12 }, "end": { - "line": 181, + "line": 182, "column": 18 } }, @@ -8086,15 +8137,15 @@ ], "test": { "type": "NumericLiteral", - "start": 5956, - "end": 5960, + "start": 5996, + "end": 6000, "loc": { "start": { - "line": 179, + "line": 180, "column": 13 }, "end": { - "line": 179, + "line": 180, "column": 17 } }, @@ -8107,59 +8158,59 @@ }, { "type": "SwitchCase", - "start": 6028, - "end": 6095, + "start": 6068, + "end": 6135, "loc": { "start": { - "line": 182, + "line": 183, "column": 8 }, "end": { - "line": 184, + "line": 185, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6051, - "end": 6076, + "start": 6091, + "end": 6116, "loc": { "start": { - "line": 183, + "line": 184, "column": 12 }, "end": { - "line": 183, + "line": 184, "column": 37 } }, "expression": { "type": "AssignmentExpression", - "start": 6051, - "end": 6075, + "start": 6091, + "end": 6115, "loc": { "start": { - "line": 183, + "line": 184, "column": 12 }, "end": { - "line": 183, + "line": 184, "column": 36 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6051, - "end": 6060, + "start": 6091, + "end": 6100, "loc": { "start": { - "line": 183, + "line": 184, "column": 12 }, "end": { - "line": 183, + "line": 184, "column": 21 }, "identifierName": "magFilter" @@ -8168,15 +8219,15 @@ }, "right": { "type": "Identifier", - "start": 6063, - "end": 6075, + "start": 6103, + "end": 6115, "loc": { "start": { - "line": 183, + "line": 184, "column": 24 }, "end": { - "line": 183, + "line": 184, "column": 36 }, "identifierName": "LinearFilter" @@ -8187,15 +8238,15 @@ }, { "type": "BreakStatement", - "start": 6089, - "end": 6095, + "start": 6129, + "end": 6135, "loc": { "start": { - "line": 184, + "line": 185, "column": 12 }, "end": { - "line": 184, + "line": 185, "column": 18 } }, @@ -8204,15 +8255,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6033, - "end": 6037, + "start": 6073, + "end": 6077, "loc": { "start": { - "line": 182, + "line": 183, "column": 13 }, "end": { - "line": 182, + "line": 183, "column": 17 } }, @@ -8227,44 +8278,44 @@ }, { "type": "VariableDeclaration", - "start": 6107, - "end": 6134, + "start": 6147, + "end": 6174, "loc": { "start": { - "line": 187, + "line": 188, "column": 4 }, "end": { - "line": 187, + "line": 188, "column": 31 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 6111, - "end": 6133, + "start": 6151, + "end": 6173, "loc": { "start": { - "line": 187, + "line": 188, "column": 8 }, "end": { - "line": 187, + "line": 188, "column": 30 } }, "id": { "type": "Identifier", - "start": 6111, - "end": 6116, + "start": 6151, + "end": 6156, "loc": { "start": { - "line": 187, + "line": 188, "column": 8 }, "end": { - "line": 187, + "line": 188, "column": 13 }, "identifierName": "wrapS" @@ -8273,15 +8324,15 @@ }, "init": { "type": "Identifier", - "start": 6119, - "end": 6133, + "start": 6159, + "end": 6173, "loc": { "start": { - "line": 187, + "line": 188, "column": 16 }, "end": { - "line": 187, + "line": 188, "column": 30 }, "identifierName": "RepeatWrapping" @@ -8294,57 +8345,57 @@ }, { "type": "SwitchStatement", - "start": 6139, - "end": 6415, + "start": 6179, + "end": 6455, "loc": { "start": { - "line": 188, + "line": 189, "column": 4 }, "end": { - "line": 198, + "line": 199, "column": 5 } }, "discriminant": { "type": "MemberExpression", - "start": 6147, - "end": 6168, + "start": 6187, + "end": 6208, "loc": { "start": { - "line": 188, + "line": 189, "column": 12 }, "end": { - "line": 188, + "line": 189, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 6147, - "end": 6162, + "start": 6187, + "end": 6202, "loc": { "start": { - "line": 188, + "line": 189, "column": 12 }, "end": { - "line": 188, + "line": 189, "column": 27 } }, "object": { "type": "Identifier", - "start": 6147, - "end": 6154, + "start": 6187, + "end": 6194, "loc": { "start": { - "line": 188, + "line": 189, "column": 12 }, "end": { - "line": 188, + "line": 189, "column": 19 }, "identifierName": "texture" @@ -8353,15 +8404,15 @@ }, "property": { "type": "Identifier", - "start": 6155, - "end": 6162, + "start": 6195, + "end": 6202, "loc": { "start": { - "line": 188, + "line": 189, "column": 20 }, "end": { - "line": 188, + "line": 189, "column": 27 }, "identifierName": "sampler" @@ -8372,15 +8423,15 @@ }, "property": { "type": "Identifier", - "start": 6163, - "end": 6168, + "start": 6203, + "end": 6208, "loc": { "start": { - "line": 188, + "line": 189, "column": 28 }, "end": { - "line": 188, + "line": 189, "column": 33 }, "identifierName": "wrapS" @@ -8392,59 +8443,59 @@ "cases": [ { "type": "SwitchCase", - "start": 6180, - "end": 6251, + "start": 6220, + "end": 6291, "loc": { "start": { - "line": 189, + "line": 190, "column": 8 }, "end": { - "line": 191, + "line": 192, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6204, - "end": 6232, + "start": 6244, + "end": 6272, "loc": { "start": { - "line": 190, + "line": 191, "column": 12 }, "end": { - "line": 190, + "line": 191, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 6204, - "end": 6231, + "start": 6244, + "end": 6271, "loc": { "start": { - "line": 190, + "line": 191, "column": 12 }, "end": { - "line": 190, + "line": 191, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6204, - "end": 6209, + "start": 6244, + "end": 6249, "loc": { "start": { - "line": 190, + "line": 191, "column": 12 }, "end": { - "line": 190, + "line": 191, "column": 17 }, "identifierName": "wrapS" @@ -8453,15 +8504,15 @@ }, "right": { "type": "Identifier", - "start": 6212, - "end": 6231, + "start": 6252, + "end": 6271, "loc": { "start": { - "line": 190, + "line": 191, "column": 20 }, "end": { - "line": 190, + "line": 191, "column": 39 }, "identifierName": "ClampToEdgeWrapping" @@ -8472,15 +8523,15 @@ }, { "type": "BreakStatement", - "start": 6245, - "end": 6251, + "start": 6285, + "end": 6291, "loc": { "start": { - "line": 191, + "line": 192, "column": 12 }, "end": { - "line": 191, + "line": 192, "column": 18 } }, @@ -8489,15 +8540,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6185, - "end": 6190, + "start": 6225, + "end": 6230, "loc": { "start": { - "line": 189, + "line": 190, "column": 13 }, "end": { - "line": 189, + "line": 190, "column": 18 } }, @@ -8510,59 +8561,59 @@ }, { "type": "SwitchCase", - "start": 6260, - "end": 6334, + "start": 6300, + "end": 6374, "loc": { "start": { - "line": 192, + "line": 193, "column": 8 }, "end": { - "line": 194, + "line": 195, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6284, - "end": 6315, + "start": 6324, + "end": 6355, "loc": { "start": { - "line": 193, + "line": 194, "column": 12 }, "end": { - "line": 193, + "line": 194, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 6284, - "end": 6314, + "start": 6324, + "end": 6354, "loc": { "start": { - "line": 193, + "line": 194, "column": 12 }, "end": { - "line": 193, + "line": 194, "column": 42 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6284, - "end": 6289, + "start": 6324, + "end": 6329, "loc": { "start": { - "line": 193, + "line": 194, "column": 12 }, "end": { - "line": 193, + "line": 194, "column": 17 }, "identifierName": "wrapS" @@ -8571,15 +8622,15 @@ }, "right": { "type": "Identifier", - "start": 6292, - "end": 6314, + "start": 6332, + "end": 6354, "loc": { "start": { - "line": 193, + "line": 194, "column": 20 }, "end": { - "line": 193, + "line": 194, "column": 42 }, "identifierName": "MirroredRepeatWrapping" @@ -8590,15 +8641,15 @@ }, { "type": "BreakStatement", - "start": 6328, - "end": 6334, + "start": 6368, + "end": 6374, "loc": { "start": { - "line": 194, + "line": 195, "column": 12 }, "end": { - "line": 194, + "line": 195, "column": 18 } }, @@ -8607,15 +8658,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6265, - "end": 6270, + "start": 6305, + "end": 6310, "loc": { "start": { - "line": 192, + "line": 193, "column": 13 }, "end": { - "line": 192, + "line": 193, "column": 18 } }, @@ -8628,59 +8679,59 @@ }, { "type": "SwitchCase", - "start": 6343, - "end": 6409, + "start": 6383, + "end": 6449, "loc": { "start": { - "line": 195, + "line": 196, "column": 8 }, "end": { - "line": 197, + "line": 198, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6367, - "end": 6390, + "start": 6407, + "end": 6430, "loc": { "start": { - "line": 196, + "line": 197, "column": 12 }, "end": { - "line": 196, + "line": 197, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 6367, - "end": 6389, + "start": 6407, + "end": 6429, "loc": { "start": { - "line": 196, + "line": 197, "column": 12 }, "end": { - "line": 196, + "line": 197, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6367, - "end": 6372, + "start": 6407, + "end": 6412, "loc": { "start": { - "line": 196, + "line": 197, "column": 12 }, "end": { - "line": 196, + "line": 197, "column": 17 }, "identifierName": "wrapS" @@ -8689,15 +8740,15 @@ }, "right": { "type": "Identifier", - "start": 6375, - "end": 6389, + "start": 6415, + "end": 6429, "loc": { "start": { - "line": 196, + "line": 197, "column": 20 }, "end": { - "line": 196, + "line": 197, "column": 34 }, "identifierName": "RepeatWrapping" @@ -8708,15 +8759,15 @@ }, { "type": "BreakStatement", - "start": 6403, - "end": 6409, + "start": 6443, + "end": 6449, "loc": { "start": { - "line": 197, + "line": 198, "column": 12 }, "end": { - "line": 197, + "line": 198, "column": 18 } }, @@ -8725,15 +8776,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6348, - "end": 6353, + "start": 6388, + "end": 6393, "loc": { "start": { - "line": 195, + "line": 196, "column": 13 }, "end": { - "line": 195, + "line": 196, "column": 18 } }, @@ -8748,44 +8799,44 @@ }, { "type": "VariableDeclaration", - "start": 6421, - "end": 6448, + "start": 6461, + "end": 6488, "loc": { "start": { - "line": 200, + "line": 201, "column": 4 }, "end": { - "line": 200, + "line": 201, "column": 31 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 6425, - "end": 6447, + "start": 6465, + "end": 6487, "loc": { "start": { - "line": 200, + "line": 201, "column": 8 }, "end": { - "line": 200, + "line": 201, "column": 30 } }, "id": { "type": "Identifier", - "start": 6425, - "end": 6430, + "start": 6465, + "end": 6470, "loc": { "start": { - "line": 200, + "line": 201, "column": 8 }, "end": { - "line": 200, + "line": 201, "column": 13 }, "identifierName": "wrapT" @@ -8794,15 +8845,15 @@ }, "init": { "type": "Identifier", - "start": 6433, - "end": 6447, + "start": 6473, + "end": 6487, "loc": { "start": { - "line": 200, + "line": 201, "column": 16 }, "end": { - "line": 200, + "line": 201, "column": 30 }, "identifierName": "RepeatWrapping" @@ -8815,57 +8866,57 @@ }, { "type": "SwitchStatement", - "start": 6453, - "end": 6729, + "start": 6493, + "end": 6769, "loc": { "start": { - "line": 201, + "line": 202, "column": 4 }, "end": { - "line": 211, + "line": 212, "column": 5 } }, "discriminant": { "type": "MemberExpression", - "start": 6461, - "end": 6482, + "start": 6501, + "end": 6522, "loc": { "start": { - "line": 201, + "line": 202, "column": 12 }, "end": { - "line": 201, + "line": 202, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 6461, - "end": 6476, + "start": 6501, + "end": 6516, "loc": { "start": { - "line": 201, + "line": 202, "column": 12 }, "end": { - "line": 201, + "line": 202, "column": 27 } }, "object": { "type": "Identifier", - "start": 6461, - "end": 6468, + "start": 6501, + "end": 6508, "loc": { "start": { - "line": 201, + "line": 202, "column": 12 }, "end": { - "line": 201, + "line": 202, "column": 19 }, "identifierName": "texture" @@ -8874,15 +8925,15 @@ }, "property": { "type": "Identifier", - "start": 6469, - "end": 6476, + "start": 6509, + "end": 6516, "loc": { "start": { - "line": 201, + "line": 202, "column": 20 }, "end": { - "line": 201, + "line": 202, "column": 27 }, "identifierName": "sampler" @@ -8893,15 +8944,15 @@ }, "property": { "type": "Identifier", - "start": 6477, - "end": 6482, + "start": 6517, + "end": 6522, "loc": { "start": { - "line": 201, + "line": 202, "column": 28 }, "end": { - "line": 201, + "line": 202, "column": 33 }, "identifierName": "wrapT" @@ -8913,59 +8964,59 @@ "cases": [ { "type": "SwitchCase", - "start": 6494, - "end": 6565, + "start": 6534, + "end": 6605, "loc": { "start": { - "line": 202, + "line": 203, "column": 8 }, "end": { - "line": 204, + "line": 205, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6518, - "end": 6546, + "start": 6558, + "end": 6586, "loc": { "start": { - "line": 203, + "line": 204, "column": 12 }, "end": { - "line": 203, + "line": 204, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 6518, - "end": 6545, + "start": 6558, + "end": 6585, "loc": { "start": { - "line": 203, + "line": 204, "column": 12 }, "end": { - "line": 203, + "line": 204, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6518, - "end": 6523, + "start": 6558, + "end": 6563, "loc": { "start": { - "line": 203, + "line": 204, "column": 12 }, "end": { - "line": 203, + "line": 204, "column": 17 }, "identifierName": "wrapT" @@ -8974,15 +9025,15 @@ }, "right": { "type": "Identifier", - "start": 6526, - "end": 6545, + "start": 6566, + "end": 6585, "loc": { "start": { - "line": 203, + "line": 204, "column": 20 }, "end": { - "line": 203, + "line": 204, "column": 39 }, "identifierName": "ClampToEdgeWrapping" @@ -8993,15 +9044,15 @@ }, { "type": "BreakStatement", - "start": 6559, - "end": 6565, + "start": 6599, + "end": 6605, "loc": { "start": { - "line": 204, + "line": 205, "column": 12 }, "end": { - "line": 204, + "line": 205, "column": 18 } }, @@ -9010,15 +9061,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6499, - "end": 6504, + "start": 6539, + "end": 6544, "loc": { "start": { - "line": 202, + "line": 203, "column": 13 }, "end": { - "line": 202, + "line": 203, "column": 18 } }, @@ -9031,59 +9082,59 @@ }, { "type": "SwitchCase", - "start": 6574, - "end": 6648, + "start": 6614, + "end": 6688, "loc": { "start": { - "line": 205, + "line": 206, "column": 8 }, "end": { - "line": 207, + "line": 208, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6598, - "end": 6629, + "start": 6638, + "end": 6669, "loc": { "start": { - "line": 206, + "line": 207, "column": 12 }, "end": { - "line": 206, + "line": 207, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 6598, - "end": 6628, + "start": 6638, + "end": 6668, "loc": { "start": { - "line": 206, + "line": 207, "column": 12 }, "end": { - "line": 206, + "line": 207, "column": 42 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6598, - "end": 6603, + "start": 6638, + "end": 6643, "loc": { "start": { - "line": 206, + "line": 207, "column": 12 }, "end": { - "line": 206, + "line": 207, "column": 17 }, "identifierName": "wrapT" @@ -9092,15 +9143,15 @@ }, "right": { "type": "Identifier", - "start": 6606, - "end": 6628, + "start": 6646, + "end": 6668, "loc": { "start": { - "line": 206, + "line": 207, "column": 20 }, "end": { - "line": 206, + "line": 207, "column": 42 }, "identifierName": "MirroredRepeatWrapping" @@ -9111,15 +9162,15 @@ }, { "type": "BreakStatement", - "start": 6642, - "end": 6648, + "start": 6682, + "end": 6688, "loc": { "start": { - "line": 207, + "line": 208, "column": 12 }, "end": { - "line": 207, + "line": 208, "column": 18 } }, @@ -9128,15 +9179,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6579, - "end": 6584, + "start": 6619, + "end": 6624, "loc": { "start": { - "line": 205, + "line": 206, "column": 13 }, "end": { - "line": 205, + "line": 206, "column": 18 } }, @@ -9149,59 +9200,59 @@ }, { "type": "SwitchCase", - "start": 6657, - "end": 6723, + "start": 6697, + "end": 6763, "loc": { "start": { - "line": 208, + "line": 209, "column": 8 }, "end": { - "line": 210, + "line": 211, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6681, - "end": 6704, + "start": 6721, + "end": 6744, "loc": { "start": { - "line": 209, + "line": 210, "column": 12 }, "end": { - "line": 209, + "line": 210, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 6681, - "end": 6703, + "start": 6721, + "end": 6743, "loc": { "start": { - "line": 209, + "line": 210, "column": 12 }, "end": { - "line": 209, + "line": 210, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6681, - "end": 6686, + "start": 6721, + "end": 6726, "loc": { "start": { - "line": 209, + "line": 210, "column": 12 }, "end": { - "line": 209, + "line": 210, "column": 17 }, "identifierName": "wrapT" @@ -9210,15 +9261,15 @@ }, "right": { "type": "Identifier", - "start": 6689, - "end": 6703, + "start": 6729, + "end": 6743, "loc": { "start": { - "line": 209, + "line": 210, "column": 20 }, "end": { - "line": 209, + "line": 210, "column": 34 }, "identifierName": "RepeatWrapping" @@ -9229,15 +9280,15 @@ }, { "type": "BreakStatement", - "start": 6717, - "end": 6723, + "start": 6757, + "end": 6763, "loc": { "start": { - "line": 210, + "line": 211, "column": 12 }, "end": { - "line": 210, + "line": 211, "column": 18 } }, @@ -9246,15 +9297,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6662, - "end": 6667, + "start": 6702, + "end": 6707, "loc": { "start": { - "line": 208, + "line": 209, "column": 13 }, "end": { - "line": 208, + "line": 209, "column": 18 } }, @@ -9269,44 +9320,44 @@ }, { "type": "VariableDeclaration", - "start": 6735, - "end": 6762, + "start": 6775, + "end": 6802, "loc": { "start": { - "line": 213, + "line": 214, "column": 4 }, "end": { - "line": 213, + "line": 214, "column": 31 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 6739, - "end": 6761, + "start": 6779, + "end": 6801, "loc": { "start": { - "line": 213, + "line": 214, "column": 8 }, "end": { - "line": 213, + "line": 214, "column": 30 } }, "id": { "type": "Identifier", - "start": 6739, - "end": 6744, + "start": 6779, + "end": 6784, "loc": { "start": { - "line": 213, + "line": 214, "column": 8 }, "end": { - "line": 213, + "line": 214, "column": 13 }, "identifierName": "wrapR" @@ -9315,15 +9366,15 @@ }, "init": { "type": "Identifier", - "start": 6747, - "end": 6761, + "start": 6787, + "end": 6801, "loc": { "start": { - "line": 213, + "line": 214, "column": 16 }, "end": { - "line": 213, + "line": 214, "column": 30 }, "identifierName": "RepeatWrapping" @@ -9336,57 +9387,57 @@ }, { "type": "SwitchStatement", - "start": 6767, - "end": 7043, + "start": 6807, + "end": 7083, "loc": { "start": { - "line": 214, + "line": 215, "column": 4 }, "end": { - "line": 224, + "line": 225, "column": 5 } }, "discriminant": { "type": "MemberExpression", - "start": 6775, - "end": 6796, + "start": 6815, + "end": 6836, "loc": { "start": { - "line": 214, + "line": 215, "column": 12 }, "end": { - "line": 214, + "line": 215, "column": 33 } }, "object": { "type": "MemberExpression", - "start": 6775, - "end": 6790, + "start": 6815, + "end": 6830, "loc": { "start": { - "line": 214, + "line": 215, "column": 12 }, "end": { - "line": 214, + "line": 215, "column": 27 } }, "object": { "type": "Identifier", - "start": 6775, - "end": 6782, + "start": 6815, + "end": 6822, "loc": { "start": { - "line": 214, + "line": 215, "column": 12 }, "end": { - "line": 214, + "line": 215, "column": 19 }, "identifierName": "texture" @@ -9395,15 +9446,15 @@ }, "property": { "type": "Identifier", - "start": 6783, - "end": 6790, + "start": 6823, + "end": 6830, "loc": { "start": { - "line": 214, + "line": 215, "column": 20 }, "end": { - "line": 214, + "line": 215, "column": 27 }, "identifierName": "sampler" @@ -9414,15 +9465,15 @@ }, "property": { "type": "Identifier", - "start": 6791, - "end": 6796, + "start": 6831, + "end": 6836, "loc": { "start": { - "line": 214, + "line": 215, "column": 28 }, "end": { - "line": 214, + "line": 215, "column": 33 }, "identifierName": "wrapR" @@ -9434,59 +9485,59 @@ "cases": [ { "type": "SwitchCase", - "start": 6808, - "end": 6879, + "start": 6848, + "end": 6919, "loc": { "start": { - "line": 215, + "line": 216, "column": 8 }, "end": { - "line": 217, + "line": 218, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6832, - "end": 6860, + "start": 6872, + "end": 6900, "loc": { "start": { - "line": 216, + "line": 217, "column": 12 }, "end": { - "line": 216, + "line": 217, "column": 40 } }, "expression": { "type": "AssignmentExpression", - "start": 6832, - "end": 6859, + "start": 6872, + "end": 6899, "loc": { "start": { - "line": 216, + "line": 217, "column": 12 }, "end": { - "line": 216, + "line": 217, "column": 39 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6832, - "end": 6837, + "start": 6872, + "end": 6877, "loc": { "start": { - "line": 216, + "line": 217, "column": 12 }, "end": { - "line": 216, + "line": 217, "column": 17 }, "identifierName": "wrapR" @@ -9495,15 +9546,15 @@ }, "right": { "type": "Identifier", - "start": 6840, - "end": 6859, + "start": 6880, + "end": 6899, "loc": { "start": { - "line": 216, + "line": 217, "column": 20 }, "end": { - "line": 216, + "line": 217, "column": 39 }, "identifierName": "ClampToEdgeWrapping" @@ -9514,15 +9565,15 @@ }, { "type": "BreakStatement", - "start": 6873, - "end": 6879, + "start": 6913, + "end": 6919, "loc": { "start": { - "line": 217, + "line": 218, "column": 12 }, "end": { - "line": 217, + "line": 218, "column": 18 } }, @@ -9531,15 +9582,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6813, - "end": 6818, + "start": 6853, + "end": 6858, "loc": { "start": { - "line": 215, + "line": 216, "column": 13 }, "end": { - "line": 215, + "line": 216, "column": 18 } }, @@ -9552,59 +9603,59 @@ }, { "type": "SwitchCase", - "start": 6888, - "end": 6962, + "start": 6928, + "end": 7002, "loc": { "start": { - "line": 218, + "line": 219, "column": 8 }, "end": { - "line": 220, + "line": 221, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6912, - "end": 6943, + "start": 6952, + "end": 6983, "loc": { "start": { - "line": 219, + "line": 220, "column": 12 }, "end": { - "line": 219, + "line": 220, "column": 43 } }, "expression": { "type": "AssignmentExpression", - "start": 6912, - "end": 6942, + "start": 6952, + "end": 6982, "loc": { "start": { - "line": 219, + "line": 220, "column": 12 }, "end": { - "line": 219, + "line": 220, "column": 42 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6912, - "end": 6917, + "start": 6952, + "end": 6957, "loc": { "start": { - "line": 219, + "line": 220, "column": 12 }, "end": { - "line": 219, + "line": 220, "column": 17 }, "identifierName": "wrapR" @@ -9613,15 +9664,15 @@ }, "right": { "type": "Identifier", - "start": 6920, - "end": 6942, + "start": 6960, + "end": 6982, "loc": { "start": { - "line": 219, + "line": 220, "column": 20 }, "end": { - "line": 219, + "line": 220, "column": 42 }, "identifierName": "MirroredRepeatWrapping" @@ -9632,15 +9683,15 @@ }, { "type": "BreakStatement", - "start": 6956, - "end": 6962, + "start": 6996, + "end": 7002, "loc": { "start": { - "line": 220, + "line": 221, "column": 12 }, "end": { - "line": 220, + "line": 221, "column": 18 } }, @@ -9649,15 +9700,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6893, - "end": 6898, + "start": 6933, + "end": 6938, "loc": { "start": { - "line": 218, + "line": 219, "column": 13 }, "end": { - "line": 218, + "line": 219, "column": 18 } }, @@ -9670,59 +9721,59 @@ }, { "type": "SwitchCase", - "start": 6971, - "end": 7037, + "start": 7011, + "end": 7077, "loc": { "start": { - "line": 221, + "line": 222, "column": 8 }, "end": { - "line": 223, + "line": 224, "column": 18 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 6995, - "end": 7018, + "start": 7035, + "end": 7058, "loc": { "start": { - "line": 222, + "line": 223, "column": 12 }, "end": { - "line": 222, + "line": 223, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 6995, - "end": 7017, + "start": 7035, + "end": 7057, "loc": { "start": { - "line": 222, + "line": 223, "column": 12 }, "end": { - "line": 222, + "line": 223, "column": 34 } }, "operator": "=", "left": { "type": "Identifier", - "start": 6995, - "end": 7000, + "start": 7035, + "end": 7040, "loc": { "start": { - "line": 222, + "line": 223, "column": 12 }, "end": { - "line": 222, + "line": 223, "column": 17 }, "identifierName": "wrapR" @@ -9731,15 +9782,15 @@ }, "right": { "type": "Identifier", - "start": 7003, - "end": 7017, + "start": 7043, + "end": 7057, "loc": { "start": { - "line": 222, + "line": 223, "column": 20 }, "end": { - "line": 222, + "line": 223, "column": 34 }, "identifierName": "RepeatWrapping" @@ -9750,15 +9801,15 @@ }, { "type": "BreakStatement", - "start": 7031, - "end": 7037, + "start": 7071, + "end": 7077, "loc": { "start": { - "line": 223, + "line": 224, "column": 12 }, "end": { - "line": 223, + "line": 224, "column": 18 } }, @@ -9767,15 +9818,15 @@ ], "test": { "type": "NumericLiteral", - "start": 6976, - "end": 6981, + "start": 7016, + "end": 7021, "loc": { "start": { - "line": 221, + "line": 222, "column": 13 }, "end": { - "line": 221, + "line": 222, "column": 18 } }, @@ -9790,71 +9841,71 @@ }, { "type": "ExpressionStatement", - "start": 7049, - "end": 7462, + "start": 7089, + "end": 7502, "loc": { "start": { - "line": 226, + "line": 227, "column": 4 }, "end": { - "line": 240, + "line": 241, "column": 7 } }, "expression": { "type": "CallExpression", - "start": 7049, - "end": 7461, + "start": 7089, + "end": 7501, "loc": { "start": { - "line": 226, + "line": 227, "column": 4 }, "end": { - "line": 240, + "line": 241, "column": 6 } }, "callee": { "type": "MemberExpression", - "start": 7049, - "end": 7075, + "start": 7089, + "end": 7115, "loc": { "start": { - "line": 226, + "line": 227, "column": 4 }, "end": { - "line": 226, + "line": 227, "column": 30 } }, "object": { "type": "MemberExpression", - "start": 7049, - "end": 7061, + "start": 7089, + "end": 7101, "loc": { "start": { - "line": 226, + "line": 227, "column": 4 }, "end": { - "line": 226, + "line": 227, "column": 16 } }, "object": { "type": "Identifier", - "start": 7049, - "end": 7052, + "start": 7089, + "end": 7092, "loc": { "start": { - "line": 226, + "line": 227, "column": 4 }, "end": { - "line": 226, + "line": 227, "column": 7 }, "identifierName": "ctx" @@ -9863,15 +9914,15 @@ }, "property": { "type": "Identifier", - "start": 7053, - "end": 7061, + "start": 7093, + "end": 7101, "loc": { "start": { - "line": 226, + "line": 227, "column": 8 }, "end": { - "line": 226, + "line": 227, "column": 16 }, "identifierName": "xktModel" @@ -9882,15 +9933,15 @@ }, "property": { "type": "Identifier", - "start": 7062, - "end": 7075, + "start": 7102, + "end": 7115, "loc": { "start": { - "line": 226, + "line": 227, "column": 17 }, "end": { - "line": 226, + "line": 227, "column": 30 }, "identifierName": "createTexture" @@ -9902,30 +9953,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 7076, - "end": 7460, + "start": 7116, + "end": 7500, "loc": { "start": { - "line": 226, + "line": 227, "column": 31 }, "end": { - "line": 240, + "line": 241, "column": 5 } }, "properties": [ { "type": "ObjectProperty", - "start": 7086, - "end": 7106, + "start": 7126, + "end": 7146, "loc": { "start": { - "line": 227, + "line": 228, "column": 8 }, "end": { - "line": 227, + "line": 228, "column": 28 } }, @@ -9934,15 +9985,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7086, - "end": 7095, + "start": 7126, + "end": 7135, "loc": { "start": { - "line": 227, + "line": 228, "column": 8 }, "end": { - "line": 227, + "line": 228, "column": 17 }, "identifierName": "textureId" @@ -9951,15 +10002,15 @@ }, "value": { "type": "Identifier", - "start": 7097, - "end": 7106, + "start": 7137, + "end": 7146, "loc": { "start": { - "line": 227, + "line": 228, "column": 19 }, "end": { - "line": 227, + "line": 228, "column": 28 }, "identifierName": "textureId" @@ -9969,126 +10020,8 @@ }, { "type": "ObjectProperty", - "start": 7116, - "end": 7147, - "loc": { - "start": { - "line": 228, - "column": 8 - }, - "end": { - "line": 228, - "column": 39 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 7116, - "end": 7125, - "loc": { - "start": { - "line": 228, - "column": 8 - }, - "end": { - "line": 228, - "column": 17 - }, - "identifierName": "imageData" - }, - "name": "imageData" - }, - "value": { - "type": "MemberExpression", - "start": 7127, - "end": 7147, - "loc": { - "start": { - "line": 228, - "column": 19 - }, - "end": { - "line": 228, - "column": 39 - } - }, - "object": { - "type": "MemberExpression", - "start": 7127, - "end": 7141, - "loc": { - "start": { - "line": 228, - "column": 19 - }, - "end": { - "line": 228, - "column": 33 - } - }, - "object": { - "type": "Identifier", - "start": 7127, - "end": 7134, - "loc": { - "start": { - "line": 228, - "column": 19 - }, - "end": { - "line": 228, - "column": 26 - }, - "identifierName": "texture" - }, - "name": "texture" - }, - "property": { - "type": "Identifier", - "start": 7135, - "end": 7141, - "loc": { - "start": { - "line": 228, - "column": 27 - }, - "end": { - "line": 228, - "column": 33 - }, - "identifierName": "source" - }, - "name": "source" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 7142, - "end": 7147, - "loc": { - "start": { - "line": 228, - "column": 34 - }, - "end": { - "line": 228, - "column": 39 - }, - "identifierName": "image" - }, - "name": "image" - }, - "computed": false - } - }, - { - "type": "ObjectProperty", - "start": 7157, - "end": 7192, + "start": 7156, + "end": 7187, "loc": { "start": { "line": 229, @@ -10096,7 +10029,7 @@ }, "end": { "line": 229, - "column": 43 + "column": 39 } }, "method": false, @@ -10104,8 +10037,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 7157, - "end": 7166, + "start": 7156, + "end": 7165, "loc": { "start": { "line": 229, @@ -10115,14 +10048,14 @@ "line": 229, "column": 17 }, - "identifierName": "mediaType" + "identifierName": "imageData" }, - "name": "mediaType" + "name": "imageData" }, "value": { "type": "MemberExpression", - "start": 7168, - "end": 7192, + "start": 7167, + "end": 7187, "loc": { "start": { "line": 229, @@ -10130,13 +10063,13 @@ }, "end": { "line": 229, - "column": 43 + "column": 39 } }, "object": { "type": "MemberExpression", - "start": 7168, - "end": 7182, + "start": 7167, + "end": 7181, "loc": { "start": { "line": 229, @@ -10149,8 +10082,8 @@ }, "object": { "type": "Identifier", - "start": 7168, - "end": 7175, + "start": 7167, + "end": 7174, "loc": { "start": { "line": 229, @@ -10166,8 +10099,8 @@ }, "property": { "type": "Identifier", - "start": 7176, - "end": 7182, + "start": 7175, + "end": 7181, "loc": { "start": { "line": 229, @@ -10185,8 +10118,8 @@ }, "property": { "type": "Identifier", - "start": 7183, - "end": 7192, + "start": 7182, + "end": 7187, "loc": { "start": { "line": 229, @@ -10194,19 +10127,19 @@ }, "end": { "line": 229, - "column": 43 + "column": 39 }, - "identifierName": "mediaType" + "identifierName": "image" }, - "name": "mediaType" + "name": "image" }, "computed": false } }, { "type": "ObjectProperty", - "start": 7202, - "end": 7218, + "start": 7197, + "end": 7232, "loc": { "start": { "line": 230, @@ -10214,7 +10147,7 @@ }, "end": { "line": 230, - "column": 24 + "column": 43 } }, "method": false, @@ -10222,8 +10155,8 @@ "computed": false, "key": { "type": "Identifier", - "start": 7202, - "end": 7212, + "start": 7197, + "end": 7206, "loc": { "start": { "line": 230, @@ -10231,6 +10164,124 @@ }, "end": { "line": 230, + "column": 17 + }, + "identifierName": "mediaType" + }, + "name": "mediaType" + }, + "value": { + "type": "MemberExpression", + "start": 7208, + "end": 7232, + "loc": { + "start": { + "line": 230, + "column": 19 + }, + "end": { + "line": 230, + "column": 43 + } + }, + "object": { + "type": "MemberExpression", + "start": 7208, + "end": 7222, + "loc": { + "start": { + "line": 230, + "column": 19 + }, + "end": { + "line": 230, + "column": 33 + } + }, + "object": { + "type": "Identifier", + "start": 7208, + "end": 7215, + "loc": { + "start": { + "line": 230, + "column": 19 + }, + "end": { + "line": 230, + "column": 26 + }, + "identifierName": "texture" + }, + "name": "texture" + }, + "property": { + "type": "Identifier", + "start": 7216, + "end": 7222, + "loc": { + "start": { + "line": 230, + "column": 27 + }, + "end": { + "line": 230, + "column": 33 + }, + "identifierName": "source" + }, + "name": "source" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 7223, + "end": 7232, + "loc": { + "start": { + "line": 230, + "column": 34 + }, + "end": { + "line": 230, + "column": 43 + }, + "identifierName": "mediaType" + }, + "name": "mediaType" + }, + "computed": false + } + }, + { + "type": "ObjectProperty", + "start": 7242, + "end": 7258, + "loc": { + "start": { + "line": 231, + "column": 8 + }, + "end": { + "line": 231, + "column": 24 + } + }, + "method": false, + "shorthand": false, + "computed": false, + "key": { + "type": "Identifier", + "start": 7242, + "end": 7252, + "loc": { + "start": { + "line": 231, + "column": 8 + }, + "end": { + "line": 231, "column": 18 }, "identifierName": "compressed" @@ -10239,15 +10290,15 @@ }, "value": { "type": "BooleanLiteral", - "start": 7214, - "end": 7218, + "start": 7254, + "end": 7258, "loc": { "start": { - "line": 230, + "line": 231, "column": 20 }, "end": { - "line": 230, + "line": 231, "column": 24 } }, @@ -10256,15 +10307,15 @@ }, { "type": "ObjectProperty", - "start": 7228, - "end": 7261, + "start": 7268, + "end": 7301, "loc": { "start": { - "line": 231, + "line": 232, "column": 8 }, "end": { - "line": 231, + "line": 232, "column": 41 } }, @@ -10273,15 +10324,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7228, - "end": 7233, + "start": 7268, + "end": 7273, "loc": { "start": { - "line": 231, + "line": 232, "column": 8 }, "end": { - "line": 231, + "line": 232, "column": 13 }, "identifierName": "width" @@ -10290,57 +10341,57 @@ }, "value": { "type": "MemberExpression", - "start": 7235, - "end": 7261, + "start": 7275, + "end": 7301, "loc": { "start": { - "line": 231, + "line": 232, "column": 15 }, "end": { - "line": 231, + "line": 232, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 7235, - "end": 7255, + "start": 7275, + "end": 7295, "loc": { "start": { - "line": 231, + "line": 232, "column": 15 }, "end": { - "line": 231, + "line": 232, "column": 35 } }, "object": { "type": "MemberExpression", - "start": 7235, - "end": 7249, + "start": 7275, + "end": 7289, "loc": { "start": { - "line": 231, + "line": 232, "column": 15 }, "end": { - "line": 231, + "line": 232, "column": 29 } }, "object": { "type": "Identifier", - "start": 7235, - "end": 7242, + "start": 7275, + "end": 7282, "loc": { "start": { - "line": 231, + "line": 232, "column": 15 }, "end": { - "line": 231, + "line": 232, "column": 22 }, "identifierName": "texture" @@ -10349,15 +10400,15 @@ }, "property": { "type": "Identifier", - "start": 7243, - "end": 7249, + "start": 7283, + "end": 7289, "loc": { "start": { - "line": 231, + "line": 232, "column": 23 }, "end": { - "line": 231, + "line": 232, "column": 29 }, "identifierName": "source" @@ -10368,15 +10419,15 @@ }, "property": { "type": "Identifier", - "start": 7250, - "end": 7255, + "start": 7290, + "end": 7295, "loc": { "start": { - "line": 231, + "line": 232, "column": 30 }, "end": { - "line": 231, + "line": 232, "column": 35 }, "identifierName": "image" @@ -10387,15 +10438,15 @@ }, "property": { "type": "Identifier", - "start": 7256, - "end": 7261, + "start": 7296, + "end": 7301, "loc": { "start": { - "line": 231, + "line": 232, "column": 36 }, "end": { - "line": 231, + "line": 232, "column": 41 }, "identifierName": "width" @@ -10407,15 +10458,15 @@ }, { "type": "ObjectProperty", - "start": 7271, - "end": 7306, + "start": 7311, + "end": 7346, "loc": { "start": { - "line": 232, + "line": 233, "column": 8 }, "end": { - "line": 232, + "line": 233, "column": 43 } }, @@ -10424,15 +10475,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7271, - "end": 7277, + "start": 7311, + "end": 7317, "loc": { "start": { - "line": 232, + "line": 233, "column": 8 }, "end": { - "line": 232, + "line": 233, "column": 14 }, "identifierName": "height" @@ -10441,57 +10492,57 @@ }, "value": { "type": "MemberExpression", - "start": 7279, - "end": 7306, + "start": 7319, + "end": 7346, "loc": { "start": { - "line": 232, + "line": 233, "column": 16 }, "end": { - "line": 232, + "line": 233, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 7279, - "end": 7299, + "start": 7319, + "end": 7339, "loc": { "start": { - "line": 232, + "line": 233, "column": 16 }, "end": { - "line": 232, + "line": 233, "column": 36 } }, "object": { "type": "MemberExpression", - "start": 7279, - "end": 7293, + "start": 7319, + "end": 7333, "loc": { "start": { - "line": 232, + "line": 233, "column": 16 }, "end": { - "line": 232, + "line": 233, "column": 30 } }, "object": { "type": "Identifier", - "start": 7279, - "end": 7286, + "start": 7319, + "end": 7326, "loc": { "start": { - "line": 232, + "line": 233, "column": 16 }, "end": { - "line": 232, + "line": 233, "column": 23 }, "identifierName": "texture" @@ -10500,15 +10551,15 @@ }, "property": { "type": "Identifier", - "start": 7287, - "end": 7293, + "start": 7327, + "end": 7333, "loc": { "start": { - "line": 232, + "line": 233, "column": 24 }, "end": { - "line": 232, + "line": 233, "column": 30 }, "identifierName": "source" @@ -10519,15 +10570,15 @@ }, "property": { "type": "Identifier", - "start": 7294, - "end": 7299, + "start": 7334, + "end": 7339, "loc": { "start": { - "line": 232, + "line": 233, "column": 31 }, "end": { - "line": 232, + "line": 233, "column": 36 }, "identifierName": "image" @@ -10538,15 +10589,15 @@ }, "property": { "type": "Identifier", - "start": 7300, - "end": 7306, + "start": 7340, + "end": 7346, "loc": { "start": { - "line": 232, + "line": 233, "column": 37 }, "end": { - "line": 232, + "line": 233, "column": 43 }, "identifierName": "height" @@ -10558,15 +10609,15 @@ }, { "type": "ObjectProperty", - "start": 7316, - "end": 7325, + "start": 7356, + "end": 7365, "loc": { "start": { - "line": 233, + "line": 234, "column": 8 }, "end": { - "line": 233, + "line": 234, "column": 17 } }, @@ -10575,15 +10626,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7316, - "end": 7325, + "start": 7356, + "end": 7365, "loc": { "start": { - "line": 233, + "line": 234, "column": 8 }, "end": { - "line": 233, + "line": 234, "column": 17 }, "identifierName": "minFilter" @@ -10592,15 +10643,15 @@ }, "value": { "type": "Identifier", - "start": 7316, - "end": 7325, + "start": 7356, + "end": 7365, "loc": { "start": { - "line": 233, + "line": 234, "column": 8 }, "end": { - "line": 233, + "line": 234, "column": 17 }, "identifierName": "minFilter" @@ -10613,15 +10664,15 @@ }, { "type": "ObjectProperty", - "start": 7335, - "end": 7344, + "start": 7375, + "end": 7384, "loc": { "start": { - "line": 234, + "line": 235, "column": 8 }, "end": { - "line": 234, + "line": 235, "column": 17 } }, @@ -10630,15 +10681,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7335, - "end": 7344, + "start": 7375, + "end": 7384, "loc": { "start": { - "line": 234, + "line": 235, "column": 8 }, "end": { - "line": 234, + "line": 235, "column": 17 }, "identifierName": "magFilter" @@ -10647,15 +10698,15 @@ }, "value": { "type": "Identifier", - "start": 7335, - "end": 7344, + "start": 7375, + "end": 7384, "loc": { "start": { - "line": 234, + "line": 235, "column": 8 }, "end": { - "line": 234, + "line": 235, "column": 17 }, "identifierName": "magFilter" @@ -10668,15 +10719,15 @@ }, { "type": "ObjectProperty", - "start": 7354, - "end": 7359, + "start": 7394, + "end": 7399, "loc": { "start": { - "line": 235, + "line": 236, "column": 8 }, "end": { - "line": 235, + "line": 236, "column": 13 } }, @@ -10685,15 +10736,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7354, - "end": 7359, + "start": 7394, + "end": 7399, "loc": { "start": { - "line": 235, + "line": 236, "column": 8 }, "end": { - "line": 235, + "line": 236, "column": 13 }, "identifierName": "wrapS" @@ -10702,15 +10753,15 @@ }, "value": { "type": "Identifier", - "start": 7354, - "end": 7359, + "start": 7394, + "end": 7399, "loc": { "start": { - "line": 235, + "line": 236, "column": 8 }, "end": { - "line": 235, + "line": 236, "column": 13 }, "identifierName": "wrapS" @@ -10723,15 +10774,15 @@ }, { "type": "ObjectProperty", - "start": 7369, - "end": 7374, + "start": 7409, + "end": 7414, "loc": { "start": { - "line": 236, + "line": 237, "column": 8 }, "end": { - "line": 236, + "line": 237, "column": 13 } }, @@ -10740,15 +10791,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7369, - "end": 7374, + "start": 7409, + "end": 7414, "loc": { "start": { - "line": 236, + "line": 237, "column": 8 }, "end": { - "line": 236, + "line": 237, "column": 13 }, "identifierName": "wrapT" @@ -10757,15 +10808,15 @@ }, "value": { "type": "Identifier", - "start": 7369, - "end": 7374, + "start": 7409, + "end": 7414, "loc": { "start": { - "line": 236, + "line": 237, "column": 8 }, "end": { - "line": 236, + "line": 237, "column": 13 }, "identifierName": "wrapT" @@ -10778,15 +10829,15 @@ }, { "type": "ObjectProperty", - "start": 7384, - "end": 7389, + "start": 7424, + "end": 7429, "loc": { "start": { - "line": 237, + "line": 238, "column": 8 }, "end": { - "line": 237, + "line": 238, "column": 13 } }, @@ -10795,15 +10846,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7384, - "end": 7389, + "start": 7424, + "end": 7429, "loc": { "start": { - "line": 237, + "line": 238, "column": 8 }, "end": { - "line": 237, + "line": 238, "column": 13 }, "identifierName": "wrapR" @@ -10812,15 +10863,15 @@ }, "value": { "type": "Identifier", - "start": 7384, - "end": 7389, + "start": 7424, + "end": 7429, "loc": { "start": { - "line": 237, + "line": 238, "column": 8 }, "end": { - "line": 237, + "line": 238, "column": 13 }, "identifierName": "wrapR" @@ -10833,15 +10884,15 @@ }, { "type": "ObjectProperty", - "start": 7399, - "end": 7421, + "start": 7439, + "end": 7461, "loc": { "start": { - "line": 238, + "line": 239, "column": 8 }, "end": { - "line": 238, + "line": 239, "column": 30 } }, @@ -10850,15 +10901,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 7399, - "end": 7404, + "start": 7439, + "end": 7444, "loc": { "start": { - "line": 238, + "line": 239, "column": 8 }, "end": { - "line": 238, + "line": 239, "column": 13 }, "identifierName": "flipY" @@ -10867,15 +10918,15 @@ }, "value": { "type": "UnaryExpression", - "start": 7406, - "end": 7421, + "start": 7446, + "end": 7461, "loc": { "start": { - "line": 238, + "line": 239, "column": 15 }, "end": { - "line": 238, + "line": 239, "column": 30 } }, @@ -10883,15 +10934,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 7407, - "end": 7421, + "start": 7447, + "end": 7461, "loc": { "start": { - "line": 238, + "line": 239, "column": 16 }, "end": { - "line": 238, + "line": 239, "column": 30 } }, @@ -10899,29 +10950,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 7408, - "end": 7421, + "start": 7448, + "end": 7461, "loc": { "start": { - "line": 238, + "line": 239, "column": 17 }, "end": { - "line": 238, + "line": 239, "column": 30 } }, "object": { "type": "Identifier", - "start": 7408, - "end": 7415, + "start": 7448, + "end": 7455, "loc": { "start": { - "line": 238, + "line": 239, "column": 17 }, "end": { - "line": 238, + "line": 239, "column": 24 }, "identifierName": "texture" @@ -10930,15 +10981,15 @@ }, "property": { "type": "Identifier", - "start": 7416, - "end": 7421, + "start": 7456, + "end": 7461, "loc": { "start": { - "line": 238, + "line": 239, "column": 25 }, "end": { - "line": 238, + "line": 239, "column": 30 }, "identifierName": "flipY" @@ -10959,15 +11010,15 @@ { "type": "CommentLine", "value": " encoding: \"sRGB\"", - "start": 7431, - "end": 7454, + "start": 7471, + "end": 7494, "loc": { "start": { - "line": 239, + "line": 240, "column": 8 }, "end": { - "line": 239, + "line": 240, "column": 31 } } @@ -10981,58 +11032,58 @@ }, { "type": "ExpressionStatement", - "start": 7467, - "end": 7498, + "start": 7507, + "end": 7538, "loc": { "start": { - "line": 241, + "line": 242, "column": 4 }, "end": { - "line": 241, + "line": 242, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 7467, - "end": 7497, + "start": 7507, + "end": 7537, "loc": { "start": { - "line": 241, + "line": 242, "column": 4 }, "end": { - "line": 241, + "line": 242, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7467, - "end": 7485, + "start": 7507, + "end": 7525, "loc": { "start": { - "line": 241, + "line": 242, "column": 4 }, "end": { - "line": 241, + "line": 242, "column": 22 } }, "object": { "type": "Identifier", - "start": 7467, - "end": 7474, + "start": 7507, + "end": 7514, "loc": { "start": { - "line": 241, + "line": 242, "column": 4 }, "end": { - "line": 241, + "line": 242, "column": 11 }, "identifierName": "texture" @@ -11041,15 +11092,15 @@ }, "property": { "type": "Identifier", - "start": 7475, - "end": 7485, + "start": 7515, + "end": 7525, "loc": { "start": { - "line": 241, + "line": 242, "column": 12 }, "end": { - "line": 241, + "line": 242, "column": 22 }, "identifierName": "_textureId" @@ -11060,15 +11111,15 @@ }, "right": { "type": "Identifier", - "start": 7488, - "end": 7497, + "start": 7528, + "end": 7537, "loc": { "start": { - "line": 241, + "line": 242, "column": 25 }, "end": { - "line": 241, + "line": 242, "column": 34 }, "identifierName": "textureId" @@ -11083,29 +11134,29 @@ }, { "type": "FunctionDeclaration", - "start": 7502, - "end": 7928, + "start": 7542, + "end": 7968, "loc": { "start": { - "line": 244, + "line": 245, "column": 0 }, "end": { - "line": 254, + "line": 255, "column": 1 } }, "id": { "type": "Identifier", - "start": 7511, - "end": 7525, + "start": 7551, + "end": 7565, "loc": { "start": { - "line": 244, + "line": 245, "column": 9 }, "end": { - "line": 244, + "line": 245, "column": 23 }, "identifierName": "parseMaterials" @@ -11118,15 +11169,15 @@ "params": [ { "type": "Identifier", - "start": 7526, - "end": 7529, + "start": 7566, + "end": 7569, "loc": { "start": { - "line": 244, + "line": 245, "column": 24 }, "end": { - "line": 244, + "line": 245, "column": 27 }, "identifierName": "ctx" @@ -11136,59 +11187,59 @@ ], "body": { "type": "BlockStatement", - "start": 7531, - "end": 7928, + "start": 7571, + "end": 7968, "loc": { "start": { - "line": 244, + "line": 245, "column": 29 }, "end": { - "line": 254, + "line": 255, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 7537, - "end": 7567, + "start": 7577, + "end": 7607, "loc": { "start": { - "line": 245, + "line": 246, "column": 4 }, "end": { - "line": 245, + "line": 246, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 7543, - "end": 7566, + "start": 7583, + "end": 7606, "loc": { "start": { - "line": 245, + "line": 246, "column": 10 }, "end": { - "line": 245, + "line": 246, "column": 33 } }, "id": { "type": "Identifier", - "start": 7543, - "end": 7551, + "start": 7583, + "end": 7591, "loc": { "start": { - "line": 245, + "line": 246, "column": 10 }, "end": { - "line": 245, + "line": 246, "column": 18 }, "identifierName": "gltfData" @@ -11197,29 +11248,29 @@ }, "init": { "type": "MemberExpression", - "start": 7554, - "end": 7566, + "start": 7594, + "end": 7606, "loc": { "start": { - "line": 245, + "line": 246, "column": 21 }, "end": { - "line": 245, + "line": 246, "column": 33 } }, "object": { "type": "Identifier", - "start": 7554, - "end": 7557, + "start": 7594, + "end": 7597, "loc": { "start": { - "line": 245, + "line": 246, "column": 21 }, "end": { - "line": 245, + "line": 246, "column": 24 }, "identifierName": "ctx" @@ -11228,15 +11279,15 @@ }, "property": { "type": "Identifier", - "start": 7558, - "end": 7566, + "start": 7598, + "end": 7606, "loc": { "start": { - "line": 245, + "line": 246, "column": 25 }, "end": { - "line": 245, + "line": 246, "column": 33 }, "identifierName": "gltfData" @@ -11251,44 +11302,44 @@ }, { "type": "VariableDeclaration", - "start": 7572, - "end": 7609, + "start": 7612, + "end": 7649, "loc": { "start": { - "line": 246, + "line": 247, "column": 4 }, "end": { - "line": 246, + "line": 247, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 7578, - "end": 7608, + "start": 7618, + "end": 7648, "loc": { "start": { - "line": 246, + "line": 247, "column": 10 }, "end": { - "line": 246, + "line": 247, "column": 40 } }, "id": { "type": "Identifier", - "start": 7578, - "end": 7587, + "start": 7618, + "end": 7627, "loc": { "start": { - "line": 246, + "line": 247, "column": 10 }, "end": { - "line": 246, + "line": 247, "column": 19 }, "identifierName": "materials" @@ -11297,29 +11348,29 @@ }, "init": { "type": "MemberExpression", - "start": 7590, - "end": 7608, + "start": 7630, + "end": 7648, "loc": { "start": { - "line": 246, + "line": 247, "column": 22 }, "end": { - "line": 246, + "line": 247, "column": 40 } }, "object": { "type": "Identifier", - "start": 7590, - "end": 7598, + "start": 7630, + "end": 7638, "loc": { "start": { - "line": 246, + "line": 247, "column": 22 }, "end": { - "line": 246, + "line": 247, "column": 30 }, "identifierName": "gltfData" @@ -11328,15 +11379,15 @@ }, "property": { "type": "Identifier", - "start": 7599, - "end": 7608, + "start": 7639, + "end": 7648, "loc": { "start": { - "line": 246, + "line": 247, "column": 31 }, "end": { - "line": 246, + "line": 247, "column": 40 }, "identifierName": "materials" @@ -11351,29 +11402,29 @@ }, { "type": "IfStatement", - "start": 7614, - "end": 7926, + "start": 7654, + "end": 7966, "loc": { "start": { - "line": 247, + "line": 248, "column": 4 }, "end": { - "line": 253, + "line": 254, "column": 5 } }, "test": { "type": "Identifier", - "start": 7618, - "end": 7627, + "start": 7658, + "end": 7667, "loc": { "start": { - "line": 247, + "line": 248, "column": 8 }, "end": { - "line": 247, + "line": 248, "column": 17 }, "identifierName": "materials" @@ -11382,73 +11433,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 7629, - "end": 7926, + "start": 7669, + "end": 7966, "loc": { "start": { - "line": 247, + "line": 248, "column": 19 }, "end": { - "line": 253, + "line": 254, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 7639, - "end": 7920, + "start": 7679, + "end": 7960, "loc": { "start": { - "line": 248, + "line": 249, "column": 8 }, "end": { - "line": 252, + "line": 253, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 7644, - "end": 7677, + "start": 7684, + "end": 7717, "loc": { "start": { - "line": 248, + "line": 249, "column": 13 }, "end": { - "line": 248, + "line": 249, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 7648, - "end": 7653, + "start": 7688, + "end": 7693, "loc": { "start": { - "line": 248, + "line": 249, "column": 17 }, "end": { - "line": 248, + "line": 249, "column": 22 } }, "id": { "type": "Identifier", - "start": 7648, - "end": 7649, + "start": 7688, + "end": 7689, "loc": { "start": { - "line": 248, + "line": 249, "column": 17 }, "end": { - "line": 248, + "line": 249, "column": 18 }, "identifierName": "i" @@ -11457,15 +11508,15 @@ }, "init": { "type": "NumericLiteral", - "start": 7652, - "end": 7653, + "start": 7692, + "end": 7693, "loc": { "start": { - "line": 248, + "line": 249, "column": 21 }, "end": { - "line": 248, + "line": 249, "column": 22 } }, @@ -11478,29 +11529,29 @@ }, { "type": "VariableDeclarator", - "start": 7655, - "end": 7677, + "start": 7695, + "end": 7717, "loc": { "start": { - "line": 248, + "line": 249, "column": 24 }, "end": { - "line": 248, + "line": 249, "column": 46 } }, "id": { "type": "Identifier", - "start": 7655, - "end": 7658, + "start": 7695, + "end": 7698, "loc": { "start": { - "line": 248, + "line": 249, "column": 24 }, "end": { - "line": 248, + "line": 249, "column": 27 }, "identifierName": "len" @@ -11509,29 +11560,29 @@ }, "init": { "type": "MemberExpression", - "start": 7661, - "end": 7677, + "start": 7701, + "end": 7717, "loc": { "start": { - "line": 248, + "line": 249, "column": 30 }, "end": { - "line": 248, + "line": 249, "column": 46 } }, "object": { "type": "Identifier", - "start": 7661, - "end": 7670, + "start": 7701, + "end": 7710, "loc": { "start": { - "line": 248, + "line": 249, "column": 30 }, "end": { - "line": 248, + "line": 249, "column": 39 }, "identifierName": "materials" @@ -11540,15 +11591,15 @@ }, "property": { "type": "Identifier", - "start": 7671, - "end": 7677, + "start": 7711, + "end": 7717, "loc": { "start": { - "line": 248, + "line": 249, "column": 40 }, "end": { - "line": 248, + "line": 249, "column": 46 }, "identifierName": "length" @@ -11563,29 +11614,29 @@ }, "test": { "type": "BinaryExpression", - "start": 7679, - "end": 7686, + "start": 7719, + "end": 7726, "loc": { "start": { - "line": 248, + "line": 249, "column": 48 }, "end": { - "line": 248, + "line": 249, "column": 55 } }, "left": { "type": "Identifier", - "start": 7679, - "end": 7680, + "start": 7719, + "end": 7720, "loc": { "start": { - "line": 248, + "line": 249, "column": 48 }, "end": { - "line": 248, + "line": 249, "column": 49 }, "identifierName": "i" @@ -11595,15 +11646,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 7683, - "end": 7686, + "start": 7723, + "end": 7726, "loc": { "start": { - "line": 248, + "line": 249, "column": 52 }, "end": { - "line": 248, + "line": 249, "column": 55 }, "identifierName": "len" @@ -11613,15 +11664,15 @@ }, "update": { "type": "UpdateExpression", - "start": 7688, - "end": 7691, + "start": 7728, + "end": 7731, "loc": { "start": { - "line": 248, + "line": 249, "column": 57 }, "end": { - "line": 248, + "line": 249, "column": 60 } }, @@ -11629,15 +11680,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 7688, - "end": 7689, + "start": 7728, + "end": 7729, "loc": { "start": { - "line": 248, + "line": 249, "column": 57 }, "end": { - "line": 248, + "line": 249, "column": 58 }, "identifierName": "i" @@ -11647,59 +11698,59 @@ }, "body": { "type": "BlockStatement", - "start": 7693, - "end": 7920, + "start": 7733, + "end": 7960, "loc": { "start": { - "line": 248, + "line": 249, "column": 62 }, "end": { - "line": 252, + "line": 253, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 7707, - "end": 7737, + "start": 7747, + "end": 7777, "loc": { "start": { - "line": 249, + "line": 250, "column": 12 }, "end": { - "line": 249, + "line": 250, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 7713, - "end": 7736, + "start": 7753, + "end": 7776, "loc": { "start": { - "line": 249, + "line": 250, "column": 18 }, "end": { - "line": 249, + "line": 250, "column": 41 } }, "id": { "type": "Identifier", - "start": 7713, - "end": 7721, + "start": 7753, + "end": 7761, "loc": { "start": { - "line": 249, + "line": 250, "column": 18 }, "end": { - "line": 249, + "line": 250, "column": 26 }, "identifierName": "material" @@ -11708,29 +11759,29 @@ }, "init": { "type": "MemberExpression", - "start": 7724, - "end": 7736, + "start": 7764, + "end": 7776, "loc": { "start": { - "line": 249, + "line": 250, "column": 29 }, "end": { - "line": 249, + "line": 250, "column": 41 } }, "object": { "type": "Identifier", - "start": 7724, - "end": 7733, + "start": 7764, + "end": 7773, "loc": { "start": { - "line": 249, + "line": 250, "column": 29 }, "end": { - "line": 249, + "line": 250, "column": 38 }, "identifierName": "materials" @@ -11739,15 +11790,15 @@ }, "property": { "type": "Identifier", - "start": 7734, - "end": 7735, + "start": 7774, + "end": 7775, "loc": { "start": { - "line": 249, + "line": 250, "column": 39 }, "end": { - "line": 249, + "line": 250, "column": 40 }, "identifierName": "i" @@ -11762,58 +11813,58 @@ }, { "type": "ExpressionStatement", - "start": 7750, - "end": 7835, + "start": 7790, + "end": 7875, "loc": { "start": { - "line": 250, + "line": 251, "column": 12 }, "end": { - "line": 250, + "line": 251, "column": 97 } }, "expression": { "type": "AssignmentExpression", - "start": 7750, - "end": 7834, + "start": 7790, + "end": 7874, "loc": { "start": { - "line": 250, + "line": 251, "column": 12 }, "end": { - "line": 250, + "line": 251, "column": 96 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7750, - "end": 7772, + "start": 7790, + "end": 7812, "loc": { "start": { - "line": 250, + "line": 251, "column": 12 }, "end": { - "line": 250, + "line": 251, "column": 34 } }, "object": { "type": "Identifier", - "start": 7750, - "end": 7758, + "start": 7790, + "end": 7798, "loc": { "start": { - "line": 250, + "line": 251, "column": 12 }, "end": { - "line": 250, + "line": 251, "column": 20 }, "identifierName": "material" @@ -11822,15 +11873,15 @@ }, "property": { "type": "Identifier", - "start": 7759, - "end": 7772, + "start": 7799, + "end": 7812, "loc": { "start": { - "line": 250, + "line": 251, "column": 21 }, "end": { - "line": 250, + "line": 251, "column": 34 }, "identifierName": "_textureSetId" @@ -11841,43 +11892,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 7775, - "end": 7834, + "start": 7815, + "end": 7874, "loc": { "start": { - "line": 250, + "line": 251, "column": 37 }, "end": { - "line": 250, + "line": 251, "column": 96 } }, "test": { "type": "MemberExpression", - "start": 7775, - "end": 7794, + "start": 7815, + "end": 7834, "loc": { "start": { - "line": 250, + "line": 251, "column": 37 }, "end": { - "line": 250, + "line": 251, "column": 56 } }, "object": { "type": "Identifier", - "start": 7775, - "end": 7778, + "start": 7815, + "end": 7818, "loc": { "start": { - "line": 250, + "line": 251, "column": 37 }, "end": { - "line": 250, + "line": 251, "column": 40 }, "identifierName": "ctx" @@ -11886,15 +11937,15 @@ }, "property": { "type": "Identifier", - "start": 7779, - "end": 7794, + "start": 7819, + "end": 7834, "loc": { "start": { - "line": 250, + "line": 251, "column": 41 }, "end": { - "line": 250, + "line": 251, "column": 56 }, "identifierName": "includeTextures" @@ -11905,29 +11956,29 @@ }, "consequent": { "type": "CallExpression", - "start": 7797, - "end": 7827, + "start": 7837, + "end": 7867, "loc": { "start": { - "line": 250, + "line": 251, "column": 59 }, "end": { - "line": 250, + "line": 251, "column": 89 } }, "callee": { "type": "Identifier", - "start": 7797, - "end": 7812, + "start": 7837, + "end": 7852, "loc": { "start": { - "line": 250, + "line": 251, "column": 59 }, "end": { - "line": 250, + "line": 251, "column": 74 }, "identifierName": "parseTextureSet" @@ -11937,15 +11988,15 @@ "arguments": [ { "type": "Identifier", - "start": 7813, - "end": 7816, + "start": 7853, + "end": 7856, "loc": { "start": { - "line": 250, + "line": 251, "column": 75 }, "end": { - "line": 250, + "line": 251, "column": 78 }, "identifierName": "ctx" @@ -11954,15 +12005,15 @@ }, { "type": "Identifier", - "start": 7818, - "end": 7826, + "start": 7858, + "end": 7866, "loc": { "start": { - "line": 250, + "line": 251, "column": 80 }, "end": { - "line": 250, + "line": 251, "column": 88 }, "identifierName": "material" @@ -11973,15 +12024,15 @@ }, "alternate": { "type": "NullLiteral", - "start": 7830, - "end": 7834, + "start": 7870, + "end": 7874, "loc": { "start": { - "line": 250, + "line": 251, "column": 92 }, "end": { - "line": 250, + "line": 251, "column": 96 } } @@ -11991,58 +12042,58 @@ }, { "type": "ExpressionStatement", - "start": 7848, - "end": 7910, + "start": 7888, + "end": 7950, "loc": { "start": { - "line": 251, + "line": 252, "column": 12 }, "end": { - "line": 251, + "line": 252, "column": 74 } }, "expression": { "type": "AssignmentExpression", - "start": 7848, - "end": 7909, + "start": 7888, + "end": 7949, "loc": { "start": { - "line": 251, + "line": 252, "column": 12 }, "end": { - "line": 251, + "line": 252, "column": 73 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 7848, - "end": 7868, + "start": 7888, + "end": 7908, "loc": { "start": { - "line": 251, + "line": 252, "column": 12 }, "end": { - "line": 251, + "line": 252, "column": 32 } }, "object": { "type": "Identifier", - "start": 7848, - "end": 7856, + "start": 7888, + "end": 7896, "loc": { "start": { - "line": 251, + "line": 252, "column": 12 }, "end": { - "line": 251, + "line": 252, "column": 20 }, "identifierName": "material" @@ -12051,15 +12102,15 @@ }, "property": { "type": "Identifier", - "start": 7857, - "end": 7868, + "start": 7897, + "end": 7908, "loc": { "start": { - "line": 251, + "line": 252, "column": 21 }, "end": { - "line": 251, + "line": 252, "column": 32 }, "identifierName": "_attributes" @@ -12070,29 +12121,29 @@ }, "right": { "type": "CallExpression", - "start": 7871, - "end": 7909, + "start": 7911, + "end": 7949, "loc": { "start": { - "line": 251, + "line": 252, "column": 35 }, "end": { - "line": 251, + "line": 252, "column": 73 } }, "callee": { "type": "Identifier", - "start": 7871, - "end": 7894, + "start": 7911, + "end": 7934, "loc": { "start": { - "line": 251, + "line": 252, "column": 35 }, "end": { - "line": 251, + "line": 252, "column": 58 }, "identifierName": "parseMaterialAttributes" @@ -12102,15 +12153,15 @@ "arguments": [ { "type": "Identifier", - "start": 7895, - "end": 7898, + "start": 7935, + "end": 7938, "loc": { "start": { - "line": 251, + "line": 252, "column": 59 }, "end": { - "line": 251, + "line": 252, "column": 62 }, "identifierName": "ctx" @@ -12119,15 +12170,15 @@ }, { "type": "Identifier", - "start": 7900, - "end": 7908, + "start": 7940, + "end": 7948, "loc": { "start": { - "line": 251, + "line": 252, "column": 64 }, "end": { - "line": 251, + "line": 252, "column": 72 }, "identifierName": "material" @@ -12153,29 +12204,29 @@ }, { "type": "FunctionDeclaration", - "start": 7930, - "end": 10405, + "start": 7970, + "end": 10445, "loc": { "start": { - "line": 256, + "line": 257, "column": 0 }, "end": { - "line": 307, + "line": 308, "column": 1 } }, "id": { "type": "Identifier", - "start": 7939, - "end": 7954, + "start": 7979, + "end": 7994, "loc": { "start": { - "line": 256, + "line": 257, "column": 9 }, "end": { - "line": 256, + "line": 257, "column": 24 }, "identifierName": "parseTextureSet" @@ -12188,15 +12239,15 @@ "params": [ { "type": "Identifier", - "start": 7955, - "end": 7958, + "start": 7995, + "end": 7998, "loc": { "start": { - "line": 256, + "line": 257, "column": 25 }, "end": { - "line": 256, + "line": 257, "column": 28 }, "identifierName": "ctx" @@ -12205,15 +12256,15 @@ }, { "type": "Identifier", - "start": 7960, - "end": 7968, + "start": 8000, + "end": 8008, "loc": { "start": { - "line": 256, + "line": 257, "column": 30 }, "end": { - "line": 256, + "line": 257, "column": 38 }, "identifierName": "material" @@ -12223,59 +12274,59 @@ ], "body": { "type": "BlockStatement", - "start": 7970, - "end": 10405, + "start": 8010, + "end": 10445, "loc": { "start": { - "line": 256, + "line": 257, "column": 40 }, "end": { - "line": 307, + "line": 308, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 7976, - "end": 8001, + "start": 8016, + "end": 8041, "loc": { "start": { - "line": 257, + "line": 258, "column": 4 }, "end": { - "line": 257, + "line": 258, "column": 29 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 7982, - "end": 8000, + "start": 8022, + "end": 8040, "loc": { "start": { - "line": 257, + "line": 258, "column": 10 }, "end": { - "line": 257, + "line": 258, "column": 28 } }, "id": { "type": "Identifier", - "start": 7982, - "end": 7995, + "start": 8022, + "end": 8035, "loc": { "start": { - "line": 257, + "line": 258, "column": 10 }, "end": { - "line": 257, + "line": 258, "column": 23 }, "identifierName": "textureSetCfg" @@ -12284,15 +12335,15 @@ }, "init": { "type": "ObjectExpression", - "start": 7998, - "end": 8000, + "start": 8038, + "end": 8040, "loc": { "start": { - "line": 257, + "line": 258, "column": 26 }, "end": { - "line": 257, + "line": 258, "column": 28 } }, @@ -12304,43 +12355,43 @@ }, { "type": "IfStatement", - "start": 8006, - "end": 8124, + "start": 8046, + "end": 8164, "loc": { "start": { - "line": 258, + "line": 259, "column": 4 }, "end": { - "line": 260, + "line": 261, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 8010, - "end": 8032, + "start": 8050, + "end": 8072, "loc": { "start": { - "line": 258, + "line": 259, "column": 8 }, "end": { - "line": 258, + "line": 259, "column": 30 } }, "object": { "type": "Identifier", - "start": 8010, - "end": 8018, + "start": 8050, + "end": 8058, "loc": { "start": { - "line": 258, + "line": 259, "column": 8 }, "end": { - "line": 258, + "line": 259, "column": 16 }, "identifierName": "material" @@ -12349,15 +12400,15 @@ }, "property": { "type": "Identifier", - "start": 8019, - "end": 8032, + "start": 8059, + "end": 8072, "loc": { "start": { - "line": 258, + "line": 259, "column": 17 }, "end": { - "line": 258, + "line": 259, "column": 30 }, "identifierName": "normalTexture" @@ -12368,73 +12419,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 8034, - "end": 8124, + "start": 8074, + "end": 8164, "loc": { "start": { - "line": 258, + "line": 259, "column": 32 }, "end": { - "line": 260, + "line": 261, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8044, - "end": 8118, + "start": 8084, + "end": 8158, "loc": { "start": { - "line": 259, + "line": 260, "column": 8 }, "end": { - "line": 259, + "line": 260, "column": 82 } }, "expression": { "type": "AssignmentExpression", - "start": 8044, - "end": 8117, + "start": 8084, + "end": 8157, "loc": { "start": { - "line": 259, + "line": 260, "column": 8 }, "end": { - "line": 259, + "line": 260, "column": 81 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8044, - "end": 8073, + "start": 8084, + "end": 8113, "loc": { "start": { - "line": 259, + "line": 260, "column": 8 }, "end": { - "line": 259, + "line": 260, "column": 37 } }, "object": { "type": "Identifier", - "start": 8044, - "end": 8057, + "start": 8084, + "end": 8097, "loc": { "start": { - "line": 259, + "line": 260, "column": 8 }, "end": { - "line": 259, + "line": 260, "column": 21 }, "identifierName": "textureSetCfg" @@ -12443,15 +12494,15 @@ }, "property": { "type": "Identifier", - "start": 8058, - "end": 8073, + "start": 8098, + "end": 8113, "loc": { "start": { - "line": 259, + "line": 260, "column": 22 }, "end": { - "line": 259, + "line": 260, "column": 37 }, "identifierName": "normalTextureId" @@ -12462,57 +12513,57 @@ }, "right": { "type": "MemberExpression", - "start": 8076, - "end": 8117, + "start": 8116, + "end": 8157, "loc": { "start": { - "line": 259, + "line": 260, "column": 40 }, "end": { - "line": 259, + "line": 260, "column": 81 } }, "object": { "type": "MemberExpression", - "start": 8076, - "end": 8106, + "start": 8116, + "end": 8146, "loc": { "start": { - "line": 259, + "line": 260, "column": 40 }, "end": { - "line": 259, + "line": 260, "column": 70 } }, "object": { "type": "MemberExpression", - "start": 8076, - "end": 8098, + "start": 8116, + "end": 8138, "loc": { "start": { - "line": 259, + "line": 260, "column": 40 }, "end": { - "line": 259, + "line": 260, "column": 62 } }, "object": { "type": "Identifier", - "start": 8076, - "end": 8084, + "start": 8116, + "end": 8124, "loc": { "start": { - "line": 259, + "line": 260, "column": 40 }, "end": { - "line": 259, + "line": 260, "column": 48 }, "identifierName": "material" @@ -12521,15 +12572,15 @@ }, "property": { "type": "Identifier", - "start": 8085, - "end": 8098, + "start": 8125, + "end": 8138, "loc": { "start": { - "line": 259, + "line": 260, "column": 49 }, "end": { - "line": 259, + "line": 260, "column": 62 }, "identifierName": "normalTexture" @@ -12540,15 +12591,15 @@ }, "property": { "type": "Identifier", - "start": 8099, - "end": 8106, + "start": 8139, + "end": 8146, "loc": { "start": { - "line": 259, + "line": 260, "column": 63 }, "end": { - "line": 259, + "line": 260, "column": 70 }, "identifierName": "texture" @@ -12559,15 +12610,15 @@ }, "property": { "type": "Identifier", - "start": 8107, - "end": 8117, + "start": 8147, + "end": 8157, "loc": { "start": { - "line": 259, + "line": 260, "column": 71 }, "end": { - "line": 259, + "line": 260, "column": 81 }, "identifierName": "_textureId" @@ -12585,43 +12636,43 @@ }, { "type": "IfStatement", - "start": 8129, - "end": 8256, + "start": 8169, + "end": 8296, "loc": { "start": { - "line": 261, + "line": 262, "column": 4 }, "end": { - "line": 263, + "line": 264, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 8133, - "end": 8158, + "start": 8173, + "end": 8198, "loc": { "start": { - "line": 261, + "line": 262, "column": 8 }, "end": { - "line": 261, + "line": 262, "column": 33 } }, "object": { "type": "Identifier", - "start": 8133, - "end": 8141, + "start": 8173, + "end": 8181, "loc": { "start": { - "line": 261, + "line": 262, "column": 8 }, "end": { - "line": 261, + "line": 262, "column": 16 }, "identifierName": "material" @@ -12630,15 +12681,15 @@ }, "property": { "type": "Identifier", - "start": 8142, - "end": 8158, + "start": 8182, + "end": 8198, "loc": { "start": { - "line": 261, + "line": 262, "column": 17 }, "end": { - "line": 261, + "line": 262, "column": 33 }, "identifierName": "occlusionTexture" @@ -12649,73 +12700,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 8160, - "end": 8256, + "start": 8200, + "end": 8296, "loc": { "start": { - "line": 261, + "line": 262, "column": 35 }, "end": { - "line": 263, + "line": 264, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8170, - "end": 8250, + "start": 8210, + "end": 8290, "loc": { "start": { - "line": 262, + "line": 263, "column": 8 }, "end": { - "line": 262, + "line": 263, "column": 88 } }, "expression": { "type": "AssignmentExpression", - "start": 8170, - "end": 8249, + "start": 8210, + "end": 8289, "loc": { "start": { - "line": 262, + "line": 263, "column": 8 }, "end": { - "line": 262, + "line": 263, "column": 87 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8170, - "end": 8202, + "start": 8210, + "end": 8242, "loc": { "start": { - "line": 262, + "line": 263, "column": 8 }, "end": { - "line": 262, + "line": 263, "column": 40 } }, "object": { "type": "Identifier", - "start": 8170, - "end": 8183, + "start": 8210, + "end": 8223, "loc": { "start": { - "line": 262, + "line": 263, "column": 8 }, "end": { - "line": 262, + "line": 263, "column": 21 }, "identifierName": "textureSetCfg" @@ -12724,15 +12775,15 @@ }, "property": { "type": "Identifier", - "start": 8184, - "end": 8202, + "start": 8224, + "end": 8242, "loc": { "start": { - "line": 262, + "line": 263, "column": 22 }, "end": { - "line": 262, + "line": 263, "column": 40 }, "identifierName": "occlusionTextureId" @@ -12743,57 +12794,57 @@ }, "right": { "type": "MemberExpression", - "start": 8205, - "end": 8249, + "start": 8245, + "end": 8289, "loc": { "start": { - "line": 262, + "line": 263, "column": 43 }, "end": { - "line": 262, + "line": 263, "column": 87 } }, "object": { "type": "MemberExpression", - "start": 8205, - "end": 8238, + "start": 8245, + "end": 8278, "loc": { "start": { - "line": 262, + "line": 263, "column": 43 }, "end": { - "line": 262, + "line": 263, "column": 76 } }, "object": { "type": "MemberExpression", - "start": 8205, - "end": 8230, + "start": 8245, + "end": 8270, "loc": { "start": { - "line": 262, + "line": 263, "column": 43 }, "end": { - "line": 262, + "line": 263, "column": 68 } }, "object": { "type": "Identifier", - "start": 8205, - "end": 8213, + "start": 8245, + "end": 8253, "loc": { "start": { - "line": 262, + "line": 263, "column": 43 }, "end": { - "line": 262, + "line": 263, "column": 51 }, "identifierName": "material" @@ -12802,15 +12853,15 @@ }, "property": { "type": "Identifier", - "start": 8214, - "end": 8230, + "start": 8254, + "end": 8270, "loc": { "start": { - "line": 262, + "line": 263, "column": 52 }, "end": { - "line": 262, + "line": 263, "column": 68 }, "identifierName": "occlusionTexture" @@ -12821,15 +12872,15 @@ }, "property": { "type": "Identifier", - "start": 8231, - "end": 8238, + "start": 8271, + "end": 8278, "loc": { "start": { - "line": 262, + "line": 263, "column": 69 }, "end": { - "line": 262, + "line": 263, "column": 76 }, "identifierName": "texture" @@ -12840,15 +12891,15 @@ }, "property": { "type": "Identifier", - "start": 8239, - "end": 8249, + "start": 8279, + "end": 8289, "loc": { "start": { - "line": 262, + "line": 263, "column": 77 }, "end": { - "line": 262, + "line": 263, "column": 87 }, "identifierName": "_textureId" @@ -12866,43 +12917,43 @@ }, { "type": "IfStatement", - "start": 8261, - "end": 8385, + "start": 8301, + "end": 8425, "loc": { "start": { - "line": 264, + "line": 265, "column": 4 }, "end": { - "line": 266, + "line": 267, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 8265, - "end": 8289, + "start": 8305, + "end": 8329, "loc": { "start": { - "line": 264, + "line": 265, "column": 8 }, "end": { - "line": 264, + "line": 265, "column": 32 } }, "object": { "type": "Identifier", - "start": 8265, - "end": 8273, + "start": 8305, + "end": 8313, "loc": { "start": { - "line": 264, + "line": 265, "column": 8 }, "end": { - "line": 264, + "line": 265, "column": 16 }, "identifierName": "material" @@ -12911,15 +12962,15 @@ }, "property": { "type": "Identifier", - "start": 8274, - "end": 8289, + "start": 8314, + "end": 8329, "loc": { "start": { - "line": 264, + "line": 265, "column": 17 }, "end": { - "line": 264, + "line": 265, "column": 32 }, "identifierName": "emissiveTexture" @@ -12930,73 +12981,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 8291, - "end": 8385, + "start": 8331, + "end": 8425, "loc": { "start": { - "line": 264, + "line": 265, "column": 34 }, "end": { - "line": 266, + "line": 267, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 8301, - "end": 8379, + "start": 8341, + "end": 8419, "loc": { "start": { - "line": 265, + "line": 266, "column": 8 }, "end": { - "line": 265, + "line": 266, "column": 86 } }, "expression": { "type": "AssignmentExpression", - "start": 8301, - "end": 8378, + "start": 8341, + "end": 8418, "loc": { "start": { - "line": 265, + "line": 266, "column": 8 }, "end": { - "line": 265, + "line": 266, "column": 85 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8301, - "end": 8332, + "start": 8341, + "end": 8372, "loc": { "start": { - "line": 265, + "line": 266, "column": 8 }, "end": { - "line": 265, + "line": 266, "column": 39 } }, "object": { "type": "Identifier", - "start": 8301, - "end": 8314, + "start": 8341, + "end": 8354, "loc": { "start": { - "line": 265, + "line": 266, "column": 8 }, "end": { - "line": 265, + "line": 266, "column": 21 }, "identifierName": "textureSetCfg" @@ -13005,15 +13056,15 @@ }, "property": { "type": "Identifier", - "start": 8315, - "end": 8332, + "start": 8355, + "end": 8372, "loc": { "start": { - "line": 265, + "line": 266, "column": 22 }, "end": { - "line": 265, + "line": 266, "column": 39 }, "identifierName": "emissiveTextureId" @@ -13024,57 +13075,57 @@ }, "right": { "type": "MemberExpression", - "start": 8335, - "end": 8378, + "start": 8375, + "end": 8418, "loc": { "start": { - "line": 265, + "line": 266, "column": 42 }, "end": { - "line": 265, + "line": 266, "column": 85 } }, "object": { "type": "MemberExpression", - "start": 8335, - "end": 8367, + "start": 8375, + "end": 8407, "loc": { "start": { - "line": 265, + "line": 266, "column": 42 }, "end": { - "line": 265, + "line": 266, "column": 74 } }, "object": { "type": "MemberExpression", - "start": 8335, - "end": 8359, + "start": 8375, + "end": 8399, "loc": { "start": { - "line": 265, + "line": 266, "column": 42 }, "end": { - "line": 265, + "line": 266, "column": 66 } }, "object": { "type": "Identifier", - "start": 8335, - "end": 8343, + "start": 8375, + "end": 8383, "loc": { "start": { - "line": 265, + "line": 266, "column": 42 }, "end": { - "line": 265, + "line": 266, "column": 50 }, "identifierName": "material" @@ -13083,15 +13134,15 @@ }, "property": { "type": "Identifier", - "start": 8344, - "end": 8359, + "start": 8384, + "end": 8399, "loc": { "start": { - "line": 265, + "line": 266, "column": 51 }, "end": { - "line": 265, + "line": 266, "column": 66 }, "identifierName": "emissiveTexture" @@ -13102,15 +13153,15 @@ }, "property": { "type": "Identifier", - "start": 8360, - "end": 8367, + "start": 8400, + "end": 8407, "loc": { "start": { - "line": 265, + "line": 266, "column": 67 }, "end": { - "line": 265, + "line": 266, "column": 74 }, "identifierName": "texture" @@ -13121,15 +13172,15 @@ }, "property": { "type": "Identifier", - "start": 8368, - "end": 8378, + "start": 8408, + "end": 8418, "loc": { "start": { - "line": 265, + "line": 266, "column": 75 }, "end": { - "line": 265, + "line": 266, "column": 85 }, "identifierName": "_textureId" @@ -13147,44 +13198,44 @@ }, { "type": "VariableDeclaration", - "start": 8390, - "end": 8440, + "start": 8430, + "end": 8480, "loc": { "start": { - "line": 267, + "line": 268, "column": 4 }, "end": { - "line": 267, + "line": 268, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8396, - "end": 8439, + "start": 8436, + "end": 8479, "loc": { "start": { - "line": 267, + "line": 268, "column": 10 }, "end": { - "line": 267, + "line": 268, "column": 53 } }, "id": { "type": "Identifier", - "start": 8396, - "end": 8407, + "start": 8436, + "end": 8447, "loc": { "start": { - "line": 267, + "line": 268, "column": 10 }, "end": { - "line": 267, + "line": 268, "column": 21 }, "identifierName": "metallicPBR" @@ -13193,29 +13244,29 @@ }, "init": { "type": "MemberExpression", - "start": 8410, - "end": 8439, + "start": 8450, + "end": 8479, "loc": { "start": { - "line": 267, + "line": 268, "column": 24 }, "end": { - "line": 267, + "line": 268, "column": 53 } }, "object": { "type": "Identifier", - "start": 8410, - "end": 8418, + "start": 8450, + "end": 8458, "loc": { "start": { - "line": 267, + "line": 268, "column": 24 }, "end": { - "line": 267, + "line": 268, "column": 32 }, "identifierName": "material" @@ -13224,15 +13275,15 @@ }, "property": { "type": "Identifier", - "start": 8419, - "end": 8439, + "start": 8459, + "end": 8479, "loc": { "start": { - "line": 267, + "line": 268, "column": 33 }, "end": { - "line": 267, + "line": 268, "column": 53 }, "identifierName": "pbrMetallicRoughness" @@ -13247,43 +13298,43 @@ }, { "type": "IfStatement", - "start": 8445, - "end": 9148, + "start": 8485, + "end": 9188, "loc": { "start": { - "line": 268, + "line": 269, "column": 4 }, "end": { - "line": 281, + "line": 282, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 8449, - "end": 8478, + "start": 8489, + "end": 8518, "loc": { "start": { - "line": 268, + "line": 269, "column": 8 }, "end": { - "line": 268, + "line": 269, "column": 37 } }, "object": { "type": "Identifier", - "start": 8449, - "end": 8457, + "start": 8489, + "end": 8497, "loc": { "start": { - "line": 268, + "line": 269, "column": 8 }, "end": { - "line": 268, + "line": 269, "column": 16 }, "identifierName": "material" @@ -13292,15 +13343,15 @@ }, "property": { "type": "Identifier", - "start": 8458, - "end": 8478, + "start": 8498, + "end": 8518, "loc": { "start": { - "line": 268, + "line": 269, "column": 17 }, "end": { - "line": 268, + "line": 269, "column": 37 }, "identifierName": "pbrMetallicRoughness" @@ -13311,59 +13362,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 8480, - "end": 9148, + "start": 8520, + "end": 9188, "loc": { "start": { - "line": 268, + "line": 269, "column": 39 }, "end": { - "line": 281, + "line": 282, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 8490, - "end": 8549, + "start": 8530, + "end": 8589, "loc": { "start": { - "line": 269, + "line": 270, "column": 8 }, "end": { - "line": 269, + "line": 270, "column": 67 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8496, - "end": 8548, + "start": 8536, + "end": 8588, "loc": { "start": { - "line": 269, + "line": 270, "column": 14 }, "end": { - "line": 269, + "line": 270, "column": 66 } }, "id": { "type": "Identifier", - "start": 8496, - "end": 8516, + "start": 8536, + "end": 8556, "loc": { "start": { - "line": 269, + "line": 270, "column": 14 }, "end": { - "line": 269, + "line": 270, "column": 34 }, "identifierName": "pbrMetallicRoughness" @@ -13372,29 +13423,29 @@ }, "init": { "type": "MemberExpression", - "start": 8519, - "end": 8548, + "start": 8559, + "end": 8588, "loc": { "start": { - "line": 269, + "line": 270, "column": 37 }, "end": { - "line": 269, + "line": 270, "column": 66 } }, "object": { "type": "Identifier", - "start": 8519, - "end": 8527, + "start": 8559, + "end": 8567, "loc": { "start": { - "line": 269, + "line": 270, "column": 37 }, "end": { - "line": 269, + "line": 270, "column": 45 }, "identifierName": "material" @@ -13403,15 +13454,15 @@ }, "property": { "type": "Identifier", - "start": 8528, - "end": 8548, + "start": 8568, + "end": 8588, "loc": { "start": { - "line": 269, + "line": 270, "column": 46 }, "end": { - "line": 269, + "line": 270, "column": 66 }, "identifierName": "pbrMetallicRoughness" @@ -13426,44 +13477,44 @@ }, { "type": "VariableDeclaration", - "start": 8558, - "end": 8658, + "start": 8598, + "end": 8698, "loc": { "start": { - "line": 270, + "line": 271, "column": 8 }, "end": { - "line": 270, + "line": 271, "column": 108 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 8564, - "end": 8657, + "start": 8604, + "end": 8697, "loc": { "start": { - "line": 270, + "line": 271, "column": 14 }, "end": { - "line": 270, + "line": 271, "column": 107 } }, "id": { "type": "Identifier", - "start": 8564, - "end": 8580, + "start": 8604, + "end": 8620, "loc": { "start": { - "line": 270, + "line": 271, "column": 14 }, "end": { - "line": 270, + "line": 271, "column": 30 }, "identifierName": "baseColorTexture" @@ -13472,43 +13523,43 @@ }, "init": { "type": "LogicalExpression", - "start": 8583, - "end": 8657, + "start": 8623, + "end": 8697, "loc": { "start": { - "line": 270, + "line": 271, "column": 33 }, "end": { - "line": 270, + "line": 271, "column": 107 } }, "left": { "type": "MemberExpression", - "start": 8583, - "end": 8620, + "start": 8623, + "end": 8660, "loc": { "start": { - "line": 270, + "line": 271, "column": 33 }, "end": { - "line": 270, + "line": 271, "column": 70 } }, "object": { "type": "Identifier", - "start": 8583, - "end": 8603, + "start": 8623, + "end": 8643, "loc": { "start": { - "line": 270, + "line": 271, "column": 33 }, "end": { - "line": 270, + "line": 271, "column": 53 }, "identifierName": "pbrMetallicRoughness" @@ -13517,15 +13568,15 @@ }, "property": { "type": "Identifier", - "start": 8604, - "end": 8620, + "start": 8644, + "end": 8660, "loc": { "start": { - "line": 270, + "line": 271, "column": 54 }, "end": { - "line": 270, + "line": 271, "column": 70 }, "identifierName": "baseColorTexture" @@ -13537,29 +13588,29 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 8624, - "end": 8657, + "start": 8664, + "end": 8697, "loc": { "start": { - "line": 270, + "line": 271, "column": 74 }, "end": { - "line": 270, + "line": 271, "column": 107 } }, "object": { "type": "Identifier", - "start": 8624, - "end": 8644, + "start": 8664, + "end": 8684, "loc": { "start": { - "line": 270, + "line": 271, "column": 74 }, "end": { - "line": 270, + "line": 271, "column": 94 }, "identifierName": "pbrMetallicRoughness" @@ -13568,15 +13619,15 @@ }, "property": { "type": "Identifier", - "start": 8645, - "end": 8657, + "start": 8685, + "end": 8697, "loc": { "start": { - "line": 270, + "line": 271, "column": 95 }, "end": { - "line": 270, + "line": 271, "column": 107 }, "identifierName": "colorTexture" @@ -13592,29 +13643,29 @@ }, { "type": "IfStatement", - "start": 8667, - "end": 8968, + "start": 8707, + "end": 9008, "loc": { "start": { - "line": 271, + "line": 272, "column": 8 }, "end": { - "line": 277, + "line": 278, "column": 9 } }, "test": { "type": "Identifier", - "start": 8671, - "end": 8687, + "start": 8711, + "end": 8727, "loc": { "start": { - "line": 271, + "line": 272, "column": 12 }, "end": { - "line": 271, + "line": 272, "column": 28 }, "identifierName": "baseColorTexture" @@ -13623,58 +13674,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 8689, - "end": 8968, + "start": 8729, + "end": 9008, "loc": { "start": { - "line": 271, + "line": 272, "column": 30 }, "end": { - "line": 277, + "line": 278, "column": 9 } }, "body": [ { "type": "IfStatement", - "start": 8703, - "end": 8958, + "start": 8743, + "end": 8998, "loc": { "start": { - "line": 272, + "line": 273, "column": 12 }, "end": { - "line": 276, + "line": 277, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 8707, - "end": 8731, + "start": 8747, + "end": 8771, "loc": { "start": { - "line": 272, + "line": 273, "column": 16 }, "end": { - "line": 272, + "line": 273, "column": 40 } }, "object": { "type": "Identifier", - "start": 8707, - "end": 8723, + "start": 8747, + "end": 8763, "loc": { "start": { - "line": 272, + "line": 273, "column": 16 }, "end": { - "line": 272, + "line": 273, "column": 32 }, "identifierName": "baseColorTexture" @@ -13683,15 +13734,15 @@ }, "property": { "type": "Identifier", - "start": 8724, - "end": 8731, + "start": 8764, + "end": 8771, "loc": { "start": { - "line": 272, + "line": 273, "column": 33 }, "end": { - "line": 272, + "line": 273, "column": 40 }, "identifierName": "texture" @@ -13702,73 +13753,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 8733, - "end": 8832, + "start": 8773, + "end": 8872, "loc": { "start": { - "line": 272, + "line": 273, "column": 42 }, "end": { - "line": 274, + "line": 275, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 8751, - "end": 8818, + "start": 8791, + "end": 8858, "loc": { "start": { - "line": 273, + "line": 274, "column": 16 }, "end": { - "line": 273, + "line": 274, "column": 83 } }, "expression": { "type": "AssignmentExpression", - "start": 8751, - "end": 8817, + "start": 8791, + "end": 8857, "loc": { "start": { - "line": 273, + "line": 274, "column": 16 }, "end": { - "line": 273, + "line": 274, "column": 82 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8751, - "end": 8779, + "start": 8791, + "end": 8819, "loc": { "start": { - "line": 273, + "line": 274, "column": 16 }, "end": { - "line": 273, + "line": 274, "column": 44 } }, "object": { "type": "Identifier", - "start": 8751, - "end": 8764, + "start": 8791, + "end": 8804, "loc": { "start": { - "line": 273, + "line": 274, "column": 16 }, "end": { - "line": 273, + "line": 274, "column": 29 }, "identifierName": "textureSetCfg" @@ -13777,15 +13828,15 @@ }, "property": { "type": "Identifier", - "start": 8765, - "end": 8779, + "start": 8805, + "end": 8819, "loc": { "start": { - "line": 273, + "line": 274, "column": 30 }, "end": { - "line": 273, + "line": 274, "column": 44 }, "identifierName": "colorTextureId" @@ -13796,43 +13847,43 @@ }, "right": { "type": "MemberExpression", - "start": 8782, - "end": 8817, + "start": 8822, + "end": 8857, "loc": { "start": { - "line": 273, + "line": 274, "column": 47 }, "end": { - "line": 273, + "line": 274, "column": 82 } }, "object": { "type": "MemberExpression", - "start": 8782, - "end": 8806, + "start": 8822, + "end": 8846, "loc": { "start": { - "line": 273, + "line": 274, "column": 47 }, "end": { - "line": 273, + "line": 274, "column": 71 } }, "object": { "type": "Identifier", - "start": 8782, - "end": 8798, + "start": 8822, + "end": 8838, "loc": { "start": { - "line": 273, + "line": 274, "column": 47 }, "end": { - "line": 273, + "line": 274, "column": 63 }, "identifierName": "baseColorTexture" @@ -13841,15 +13892,15 @@ }, "property": { "type": "Identifier", - "start": 8799, - "end": 8806, + "start": 8839, + "end": 8846, "loc": { "start": { - "line": 273, + "line": 274, "column": 64 }, "end": { - "line": 273, + "line": 274, "column": 71 }, "identifierName": "texture" @@ -13860,15 +13911,15 @@ }, "property": { "type": "Identifier", - "start": 8807, - "end": 8817, + "start": 8847, + "end": 8857, "loc": { "start": { - "line": 273, + "line": 274, "column": 72 }, "end": { - "line": 273, + "line": 274, "column": 82 }, "identifierName": "_textureId" @@ -13884,73 +13935,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 8838, - "end": 8958, + "start": 8878, + "end": 8998, "loc": { "start": { - "line": 274, + "line": 275, "column": 19 }, "end": { - "line": 276, + "line": 277, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 8856, - "end": 8944, + "start": 8896, + "end": 8984, "loc": { "start": { - "line": 275, + "line": 276, "column": 16 }, "end": { - "line": 275, + "line": 276, "column": 104 } }, "expression": { "type": "AssignmentExpression", - "start": 8856, - "end": 8943, + "start": 8896, + "end": 8983, "loc": { "start": { - "line": 275, + "line": 276, "column": 16 }, "end": { - "line": 275, + "line": 276, "column": 103 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 8856, - "end": 8884, + "start": 8896, + "end": 8924, "loc": { "start": { - "line": 275, + "line": 276, "column": 16 }, "end": { - "line": 275, + "line": 276, "column": 44 } }, "object": { "type": "Identifier", - "start": 8856, - "end": 8869, + "start": 8896, + "end": 8909, "loc": { "start": { - "line": 275, + "line": 276, "column": 16 }, "end": { - "line": 275, + "line": 276, "column": 29 }, "identifierName": "textureSetCfg" @@ -13959,15 +14010,15 @@ }, "property": { "type": "Identifier", - "start": 8870, - "end": 8884, + "start": 8910, + "end": 8924, "loc": { "start": { - "line": 275, + "line": 276, "column": 30 }, "end": { - "line": 275, + "line": 276, "column": 44 }, "identifierName": "colorTextureId" @@ -13978,71 +14029,71 @@ }, "right": { "type": "MemberExpression", - "start": 8887, - "end": 8943, + "start": 8927, + "end": 8983, "loc": { "start": { - "line": 275, + "line": 276, "column": 47 }, "end": { - "line": 275, + "line": 276, "column": 103 } }, "object": { "type": "MemberExpression", - "start": 8887, - "end": 8932, + "start": 8927, + "end": 8972, "loc": { "start": { - "line": 275, + "line": 276, "column": 47 }, "end": { - "line": 275, + "line": 276, "column": 92 } }, "object": { "type": "MemberExpression", - "start": 8887, - "end": 8908, + "start": 8927, + "end": 8948, "loc": { "start": { - "line": 275, + "line": 276, "column": 47 }, "end": { - "line": 275, + "line": 276, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 8887, - "end": 8899, + "start": 8927, + "end": 8939, "loc": { "start": { - "line": 275, + "line": 276, "column": 47 }, "end": { - "line": 275, + "line": 276, "column": 59 } }, "object": { "type": "Identifier", - "start": 8887, - "end": 8890, + "start": 8927, + "end": 8930, "loc": { "start": { - "line": 275, + "line": 276, "column": 47 }, "end": { - "line": 275, + "line": 276, "column": 50 }, "identifierName": "ctx" @@ -14051,15 +14102,15 @@ }, "property": { "type": "Identifier", - "start": 8891, - "end": 8899, + "start": 8931, + "end": 8939, "loc": { "start": { - "line": 275, + "line": 276, "column": 51 }, "end": { - "line": 275, + "line": 276, "column": 59 }, "identifierName": "gltfData" @@ -14070,15 +14121,15 @@ }, "property": { "type": "Identifier", - "start": 8900, - "end": 8908, + "start": 8940, + "end": 8948, "loc": { "start": { - "line": 275, + "line": 276, "column": 60 }, "end": { - "line": 275, + "line": 276, "column": 68 }, "identifierName": "textures" @@ -14089,29 +14140,29 @@ }, "property": { "type": "MemberExpression", - "start": 8909, - "end": 8931, + "start": 8949, + "end": 8971, "loc": { "start": { - "line": 275, + "line": 276, "column": 69 }, "end": { - "line": 275, + "line": 276, "column": 91 } }, "object": { "type": "Identifier", - "start": 8909, - "end": 8925, + "start": 8949, + "end": 8965, "loc": { "start": { - "line": 275, + "line": 276, "column": 69 }, "end": { - "line": 275, + "line": 276, "column": 85 }, "identifierName": "baseColorTexture" @@ -14120,15 +14171,15 @@ }, "property": { "type": "Identifier", - "start": 8926, - "end": 8931, + "start": 8966, + "end": 8971, "loc": { "start": { - "line": 275, + "line": 276, "column": 86 }, "end": { - "line": 275, + "line": 276, "column": 91 }, "identifierName": "index" @@ -14141,15 +14192,15 @@ }, "property": { "type": "Identifier", - "start": 8933, - "end": 8943, + "start": 8973, + "end": 8983, "loc": { "start": { - "line": 275, + "line": 276, "column": 93 }, "end": { - "line": 275, + "line": 276, "column": 103 }, "identifierName": "_textureId" @@ -14171,43 +14222,43 @@ }, { "type": "IfStatement", - "start": 8977, - "end": 9142, + "start": 9017, + "end": 9182, "loc": { "start": { - "line": 278, + "line": 279, "column": 8 }, "end": { - "line": 280, + "line": 281, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 8981, - "end": 9017, + "start": 9021, + "end": 9057, "loc": { "start": { - "line": 278, + "line": 279, "column": 12 }, "end": { - "line": 278, + "line": 279, "column": 48 } }, "object": { "type": "Identifier", - "start": 8981, - "end": 8992, + "start": 9021, + "end": 9032, "loc": { "start": { - "line": 278, + "line": 279, "column": 12 }, "end": { - "line": 278, + "line": 279, "column": 23 }, "identifierName": "metallicPBR" @@ -14216,15 +14267,15 @@ }, "property": { "type": "Identifier", - "start": 8993, - "end": 9017, + "start": 9033, + "end": 9057, "loc": { "start": { - "line": 278, + "line": 279, "column": 24 }, "end": { - "line": 278, + "line": 279, "column": 48 }, "identifierName": "metallicRoughnessTexture" @@ -14235,73 +14286,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 9019, - "end": 9142, + "start": 9059, + "end": 9182, "loc": { "start": { - "line": 278, + "line": 279, "column": 50 }, "end": { - "line": 280, + "line": 281, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 9033, - "end": 9132, + "start": 9073, + "end": 9172, "loc": { "start": { - "line": 279, + "line": 280, "column": 12 }, "end": { - "line": 279, + "line": 280, "column": 111 } }, "expression": { "type": "AssignmentExpression", - "start": 9033, - "end": 9131, + "start": 9073, + "end": 9171, "loc": { "start": { - "line": 279, + "line": 280, "column": 12 }, "end": { - "line": 279, + "line": 280, "column": 110 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9033, - "end": 9073, + "start": 9073, + "end": 9113, "loc": { "start": { - "line": 279, + "line": 280, "column": 12 }, "end": { - "line": 279, + "line": 280, "column": 52 } }, "object": { "type": "Identifier", - "start": 9033, - "end": 9046, + "start": 9073, + "end": 9086, "loc": { "start": { - "line": 279, + "line": 280, "column": 12 }, "end": { - "line": 279, + "line": 280, "column": 25 }, "identifierName": "textureSetCfg" @@ -14310,15 +14361,15 @@ }, "property": { "type": "Identifier", - "start": 9047, - "end": 9073, + "start": 9087, + "end": 9113, "loc": { "start": { - "line": 279, + "line": 280, "column": 26 }, "end": { - "line": 279, + "line": 280, "column": 52 }, "identifierName": "metallicRoughnessTextureId" @@ -14329,57 +14380,57 @@ }, "right": { "type": "MemberExpression", - "start": 9076, - "end": 9131, + "start": 9116, + "end": 9171, "loc": { "start": { - "line": 279, + "line": 280, "column": 55 }, "end": { - "line": 279, + "line": 280, "column": 110 } }, "object": { "type": "MemberExpression", - "start": 9076, - "end": 9120, + "start": 9116, + "end": 9160, "loc": { "start": { - "line": 279, + "line": 280, "column": 55 }, "end": { - "line": 279, + "line": 280, "column": 99 } }, "object": { "type": "MemberExpression", - "start": 9076, - "end": 9112, + "start": 9116, + "end": 9152, "loc": { "start": { - "line": 279, + "line": 280, "column": 55 }, "end": { - "line": 279, + "line": 280, "column": 91 } }, "object": { "type": "Identifier", - "start": 9076, - "end": 9087, + "start": 9116, + "end": 9127, "loc": { "start": { - "line": 279, + "line": 280, "column": 55 }, "end": { - "line": 279, + "line": 280, "column": 66 }, "identifierName": "metallicPBR" @@ -14388,15 +14439,15 @@ }, "property": { "type": "Identifier", - "start": 9088, - "end": 9112, + "start": 9128, + "end": 9152, "loc": { "start": { - "line": 279, + "line": 280, "column": 67 }, "end": { - "line": 279, + "line": 280, "column": 91 }, "identifierName": "metallicRoughnessTexture" @@ -14407,15 +14458,15 @@ }, "property": { "type": "Identifier", - "start": 9113, - "end": 9120, + "start": 9153, + "end": 9160, "loc": { "start": { - "line": 279, + "line": 280, "column": 92 }, "end": { - "line": 279, + "line": 280, "column": 99 }, "identifierName": "texture" @@ -14426,15 +14477,15 @@ }, "property": { "type": "Identifier", - "start": 9121, - "end": 9131, + "start": 9161, + "end": 9171, "loc": { "start": { - "line": 279, + "line": 280, "column": 100 }, "end": { - "line": 279, + "line": 280, "column": 110 }, "identifierName": "_textureId" @@ -14457,44 +14508,44 @@ }, { "type": "VariableDeclaration", - "start": 9153, - "end": 9192, + "start": 9193, + "end": 9232, "loc": { "start": { - "line": 282, + "line": 283, "column": 4 }, "end": { - "line": 282, + "line": 283, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 9159, - "end": 9191, + "start": 9199, + "end": 9231, "loc": { "start": { - "line": 282, + "line": 283, "column": 10 }, "end": { - "line": 282, + "line": 283, "column": 42 } }, "id": { "type": "Identifier", - "start": 9159, - "end": 9169, + "start": 9199, + "end": 9209, "loc": { "start": { - "line": 282, + "line": 283, "column": 10 }, "end": { - "line": 282, + "line": 283, "column": 20 }, "identifierName": "extensions" @@ -14503,29 +14554,29 @@ }, "init": { "type": "MemberExpression", - "start": 9172, - "end": 9191, + "start": 9212, + "end": 9231, "loc": { "start": { - "line": 282, + "line": 283, "column": 23 }, "end": { - "line": 282, + "line": 283, "column": 42 } }, "object": { "type": "Identifier", - "start": 9172, - "end": 9180, + "start": 9212, + "end": 9220, "loc": { "start": { - "line": 282, + "line": 283, "column": 23 }, "end": { - "line": 282, + "line": 283, "column": 31 }, "identifierName": "material" @@ -14534,15 +14585,15 @@ }, "property": { "type": "Identifier", - "start": 9181, - "end": 9191, + "start": 9221, + "end": 9231, "loc": { "start": { - "line": 282, + "line": 283, "column": 32 }, "end": { - "line": 282, + "line": 283, "column": 42 }, "identifierName": "extensions" @@ -14557,29 +14608,29 @@ }, { "type": "IfStatement", - "start": 9197, - "end": 9890, + "start": 9237, + "end": 9930, "loc": { "start": { - "line": 283, + "line": 284, "column": 4 }, "end": { - "line": 295, + "line": 296, "column": 5 } }, "test": { "type": "Identifier", - "start": 9201, - "end": 9211, + "start": 9241, + "end": 9251, "loc": { "start": { - "line": 283, + "line": 284, "column": 8 }, "end": { - "line": 283, + "line": 284, "column": 18 }, "identifierName": "extensions" @@ -14588,59 +14639,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 9213, - "end": 9890, + "start": 9253, + "end": 9930, "loc": { "start": { - "line": 283, + "line": 284, "column": 20 }, "end": { - "line": 295, + "line": 296, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 9223, - "end": 9293, + "start": 9263, + "end": 9333, "loc": { "start": { - "line": 284, + "line": 285, "column": 8 }, "end": { - "line": 284, + "line": 285, "column": 78 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 9229, - "end": 9292, + "start": 9269, + "end": 9332, "loc": { "start": { - "line": 284, + "line": 285, "column": 14 }, "end": { - "line": 284, + "line": 285, "column": 77 } }, "id": { "type": "Identifier", - "start": 9229, - "end": 9240, + "start": 9269, + "end": 9280, "loc": { "start": { - "line": 284, + "line": 285, "column": 14 }, "end": { - "line": 284, + "line": 285, "column": 25 }, "identifierName": "specularPBR" @@ -14649,29 +14700,29 @@ }, "init": { "type": "MemberExpression", - "start": 9243, - "end": 9292, + "start": 9283, + "end": 9332, "loc": { "start": { - "line": 284, + "line": 285, "column": 28 }, "end": { - "line": 284, + "line": 285, "column": 77 } }, "object": { "type": "Identifier", - "start": 9243, - "end": 9253, + "start": 9283, + "end": 9293, "loc": { "start": { - "line": 284, + "line": 285, "column": 28 }, "end": { - "line": 284, + "line": 285, "column": 38 }, "identifierName": "extensions" @@ -14680,15 +14731,15 @@ }, "property": { "type": "StringLiteral", - "start": 9254, - "end": 9291, + "start": 9294, + "end": 9331, "loc": { "start": { - "line": 284, + "line": 285, "column": 39 }, "end": { - "line": 284, + "line": 285, "column": 76 } }, @@ -14706,29 +14757,29 @@ }, { "type": "IfStatement", - "start": 9302, - "end": 9884, + "start": 9342, + "end": 9924, "loc": { "start": { - "line": 285, + "line": 286, "column": 8 }, "end": { - "line": 294, + "line": 295, "column": 9 } }, "test": { "type": "Identifier", - "start": 9306, - "end": 9317, + "start": 9346, + "end": 9357, "loc": { "start": { - "line": 285, + "line": 286, "column": 12 }, "end": { - "line": 285, + "line": 286, "column": 23 }, "identifierName": "specularPBR" @@ -14737,59 +14788,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 9319, - "end": 9884, + "start": 9359, + "end": 9924, "loc": { "start": { - "line": 285, + "line": 286, "column": 25 }, "end": { - "line": 294, + "line": 295, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 9333, - "end": 9385, + "start": 9373, + "end": 9425, "loc": { "start": { - "line": 286, + "line": 287, "column": 12 }, "end": { - "line": 286, + "line": 287, "column": 64 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 9339, - "end": 9384, + "start": 9379, + "end": 9424, "loc": { "start": { - "line": 286, + "line": 287, "column": 18 }, "end": { - "line": 286, + "line": 287, "column": 63 } }, "id": { "type": "Identifier", - "start": 9339, - "end": 9354, + "start": 9379, + "end": 9394, "loc": { "start": { - "line": 286, + "line": 287, "column": 18 }, "end": { - "line": 286, + "line": 287, "column": 33 }, "identifierName": "specularTexture" @@ -14798,29 +14849,29 @@ }, "init": { "type": "MemberExpression", - "start": 9357, - "end": 9384, + "start": 9397, + "end": 9424, "loc": { "start": { - "line": 286, + "line": 287, "column": 36 }, "end": { - "line": 286, + "line": 287, "column": 63 } }, "object": { "type": "Identifier", - "start": 9357, - "end": 9368, + "start": 9397, + "end": 9408, "loc": { "start": { - "line": 286, + "line": 287, "column": 36 }, "end": { - "line": 286, + "line": 287, "column": 47 }, "identifierName": "specularPBR" @@ -14829,15 +14880,15 @@ }, "property": { "type": "Identifier", - "start": 9369, - "end": 9384, + "start": 9409, + "end": 9424, "loc": { "start": { - "line": 286, + "line": 287, "column": 48 }, "end": { - "line": 286, + "line": 287, "column": 63 }, "identifierName": "specularTexture" @@ -14852,57 +14903,57 @@ }, { "type": "IfStatement", - "start": 9398, - "end": 9589, + "start": 9438, + "end": 9629, "loc": { "start": { - "line": 287, + "line": 288, "column": 12 }, "end": { - "line": 289, + "line": 290, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 9402, - "end": 9459, + "start": 9442, + "end": 9499, "loc": { "start": { - "line": 287, + "line": 288, "column": 16 }, "end": { - "line": 287, + "line": 288, "column": 73 } }, "left": { "type": "BinaryExpression", - "start": 9402, - "end": 9426, + "start": 9442, + "end": 9466, "loc": { "start": { - "line": 287, + "line": 288, "column": 16 }, "end": { - "line": 287, + "line": 288, "column": 40 } }, "left": { "type": "Identifier", - "start": 9402, - "end": 9417, + "start": 9442, + "end": 9457, "loc": { "start": { - "line": 287, + "line": 288, "column": 16 }, "end": { - "line": 287, + "line": 288, "column": 31 }, "identifierName": "specularTexture" @@ -14912,15 +14963,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9422, - "end": 9426, + "start": 9462, + "end": 9466, "loc": { "start": { - "line": 287, + "line": 288, "column": 36 }, "end": { - "line": 287, + "line": 288, "column": 40 } } @@ -14929,29 +14980,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 9430, - "end": 9459, + "start": 9470, + "end": 9499, "loc": { "start": { - "line": 287, + "line": 288, "column": 44 }, "end": { - "line": 287, + "line": 288, "column": 73 } }, "left": { "type": "Identifier", - "start": 9430, - "end": 9445, + "start": 9470, + "end": 9485, "loc": { "start": { - "line": 287, + "line": 288, "column": 44 }, "end": { - "line": 287, + "line": 288, "column": 59 }, "identifierName": "specularTexture" @@ -14961,15 +15012,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 9450, - "end": 9459, + "start": 9490, + "end": 9499, "loc": { "start": { - "line": 287, + "line": 288, "column": 64 }, "end": { - "line": 287, + "line": 288, "column": 73 }, "identifierName": "undefined" @@ -14980,15 +15031,15 @@ }, "consequent": { "type": "BlockStatement", - "start": 9461, - "end": 9589, + "start": 9501, + "end": 9629, "loc": { "start": { - "line": 287, + "line": 288, "column": 75 }, "end": { - "line": 289, + "line": 290, "column": 13 } }, @@ -14999,15 +15050,15 @@ { "type": "CommentLine", "value": " textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;", - "start": 9479, - "end": 9575, + "start": 9519, + "end": 9615, "loc": { "start": { - "line": 288, + "line": 289, "column": 16 }, "end": { - "line": 288, + "line": 289, "column": 112 } } @@ -15018,44 +15069,44 @@ }, { "type": "VariableDeclaration", - "start": 9602, - "end": 9664, + "start": 9642, + "end": 9704, "loc": { "start": { - "line": 290, + "line": 291, "column": 12 }, "end": { - "line": 290, + "line": 291, "column": 74 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 9608, - "end": 9663, + "start": 9648, + "end": 9703, "loc": { "start": { - "line": 290, + "line": 291, "column": 18 }, "end": { - "line": 290, + "line": 291, "column": 73 } }, "id": { "type": "Identifier", - "start": 9608, - "end": 9628, + "start": 9648, + "end": 9668, "loc": { "start": { - "line": 290, + "line": 291, "column": 18 }, "end": { - "line": 290, + "line": 291, "column": 38 }, "identifierName": "specularColorTexture" @@ -15064,29 +15115,29 @@ }, "init": { "type": "MemberExpression", - "start": 9631, - "end": 9663, + "start": 9671, + "end": 9703, "loc": { "start": { - "line": 290, + "line": 291, "column": 41 }, "end": { - "line": 290, + "line": 291, "column": 73 } }, "object": { "type": "Identifier", - "start": 9631, - "end": 9642, + "start": 9671, + "end": 9682, "loc": { "start": { - "line": 290, + "line": 291, "column": 41 }, "end": { - "line": 290, + "line": 291, "column": 52 }, "identifierName": "specularPBR" @@ -15095,15 +15146,15 @@ }, "property": { "type": "Identifier", - "start": 9643, - "end": 9663, + "start": 9683, + "end": 9703, "loc": { "start": { - "line": 290, + "line": 291, "column": 53 }, "end": { - "line": 290, + "line": 291, "column": 73 }, "identifierName": "specularColorTexture" @@ -15118,57 +15169,57 @@ }, { "type": "IfStatement", - "start": 9677, - "end": 9874, + "start": 9717, + "end": 9914, "loc": { "start": { - "line": 291, + "line": 292, "column": 12 }, "end": { - "line": 293, + "line": 294, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 9681, - "end": 9748, + "start": 9721, + "end": 9788, "loc": { "start": { - "line": 291, + "line": 292, "column": 16 }, "end": { - "line": 291, + "line": 292, "column": 83 } }, "left": { "type": "BinaryExpression", - "start": 9681, - "end": 9710, + "start": 9721, + "end": 9750, "loc": { "start": { - "line": 291, + "line": 292, "column": 16 }, "end": { - "line": 291, + "line": 292, "column": 45 } }, "left": { "type": "Identifier", - "start": 9681, - "end": 9701, + "start": 9721, + "end": 9741, "loc": { "start": { - "line": 291, + "line": 292, "column": 16 }, "end": { - "line": 291, + "line": 292, "column": 36 }, "identifierName": "specularColorTexture" @@ -15178,15 +15229,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 9706, - "end": 9710, + "start": 9746, + "end": 9750, "loc": { "start": { - "line": 291, + "line": 292, "column": 41 }, "end": { - "line": 291, + "line": 292, "column": 45 } } @@ -15195,29 +15246,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 9714, - "end": 9748, + "start": 9754, + "end": 9788, "loc": { "start": { - "line": 291, + "line": 292, "column": 49 }, "end": { - "line": 291, + "line": 292, "column": 83 } }, "left": { "type": "Identifier", - "start": 9714, - "end": 9734, + "start": 9754, + "end": 9774, "loc": { "start": { - "line": 291, + "line": 292, "column": 49 }, "end": { - "line": 291, + "line": 292, "column": 69 }, "identifierName": "specularColorTexture" @@ -15227,15 +15278,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 9739, - "end": 9748, + "start": 9779, + "end": 9788, "loc": { "start": { - "line": 291, + "line": 292, "column": 74 }, "end": { - "line": 291, + "line": 292, "column": 83 }, "identifierName": "undefined" @@ -15246,73 +15297,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 9750, - "end": 9874, + "start": 9790, + "end": 9914, "loc": { "start": { - "line": 291, + "line": 292, "column": 85 }, "end": { - "line": 293, + "line": 294, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 9768, - "end": 9860, + "start": 9808, + "end": 9900, "loc": { "start": { - "line": 292, + "line": 293, "column": 16 }, "end": { - "line": 292, + "line": 293, "column": 108 } }, "expression": { "type": "AssignmentExpression", - "start": 9768, - "end": 9859, + "start": 9808, + "end": 9899, "loc": { "start": { - "line": 292, + "line": 293, "column": 16 }, "end": { - "line": 292, + "line": 293, "column": 107 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 9768, - "end": 9796, + "start": 9808, + "end": 9836, "loc": { "start": { - "line": 292, + "line": 293, "column": 16 }, "end": { - "line": 292, + "line": 293, "column": 44 } }, "object": { "type": "Identifier", - "start": 9768, - "end": 9781, + "start": 9808, + "end": 9821, "loc": { "start": { - "line": 292, + "line": 293, "column": 16 }, "end": { - "line": 292, + "line": 293, "column": 29 }, "identifierName": "textureSetCfg" @@ -15321,15 +15372,15 @@ }, "property": { "type": "Identifier", - "start": 9782, - "end": 9796, + "start": 9822, + "end": 9836, "loc": { "start": { - "line": 292, + "line": 293, "column": 30 }, "end": { - "line": 292, + "line": 293, "column": 44 }, "identifierName": "colorTextureId" @@ -15340,71 +15391,71 @@ }, "right": { "type": "MemberExpression", - "start": 9799, - "end": 9859, + "start": 9839, + "end": 9899, "loc": { "start": { - "line": 292, + "line": 293, "column": 47 }, "end": { - "line": 292, + "line": 293, "column": 107 } }, "object": { "type": "MemberExpression", - "start": 9799, - "end": 9848, + "start": 9839, + "end": 9888, "loc": { "start": { - "line": 292, + "line": 293, "column": 47 }, "end": { - "line": 292, + "line": 293, "column": 96 } }, "object": { "type": "MemberExpression", - "start": 9799, - "end": 9820, + "start": 9839, + "end": 9860, "loc": { "start": { - "line": 292, + "line": 293, "column": 47 }, "end": { - "line": 292, + "line": 293, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 9799, - "end": 9811, + "start": 9839, + "end": 9851, "loc": { "start": { - "line": 292, + "line": 293, "column": 47 }, "end": { - "line": 292, + "line": 293, "column": 59 } }, "object": { "type": "Identifier", - "start": 9799, - "end": 9802, + "start": 9839, + "end": 9842, "loc": { "start": { - "line": 292, + "line": 293, "column": 47 }, "end": { - "line": 292, + "line": 293, "column": 50 }, "identifierName": "ctx" @@ -15413,15 +15464,15 @@ }, "property": { "type": "Identifier", - "start": 9803, - "end": 9811, + "start": 9843, + "end": 9851, "loc": { "start": { - "line": 292, + "line": 293, "column": 51 }, "end": { - "line": 292, + "line": 293, "column": 59 }, "identifierName": "gltfData" @@ -15432,15 +15483,15 @@ }, "property": { "type": "Identifier", - "start": 9812, - "end": 9820, + "start": 9852, + "end": 9860, "loc": { "start": { - "line": 292, + "line": 293, "column": 60 }, "end": { - "line": 292, + "line": 293, "column": 68 }, "identifierName": "textures" @@ -15451,29 +15502,29 @@ }, "property": { "type": "MemberExpression", - "start": 9821, - "end": 9847, + "start": 9861, + "end": 9887, "loc": { "start": { - "line": 292, + "line": 293, "column": 69 }, "end": { - "line": 292, + "line": 293, "column": 95 } }, "object": { "type": "Identifier", - "start": 9821, - "end": 9841, + "start": 9861, + "end": 9881, "loc": { "start": { - "line": 292, + "line": 293, "column": 69 }, "end": { - "line": 292, + "line": 293, "column": 89 }, "identifierName": "specularColorTexture" @@ -15482,15 +15533,15 @@ }, "property": { "type": "Identifier", - "start": 9842, - "end": 9847, + "start": 9882, + "end": 9887, "loc": { "start": { - "line": 292, + "line": 293, "column": 90 }, "end": { - "line": 292, + "line": 293, "column": 95 }, "identifierName": "index" @@ -15503,15 +15554,15 @@ }, "property": { "type": "Identifier", - "start": 9849, - "end": 9859, + "start": 9889, + "end": 9899, "loc": { "start": { - "line": 292, + "line": 293, "column": 97 }, "end": { - "line": 292, + "line": 293, "column": 107 }, "identifierName": "_textureId" @@ -15539,162 +15590,78 @@ }, { "type": "IfStatement", - "start": 9895, - "end": 10386, + "start": 9935, + "end": 10426, "loc": { "start": { - "line": 296, + "line": 297, "column": 4 }, "end": { - "line": 305, + "line": 306, "column": 5 } }, "test": { "type": "LogicalExpression", - "start": 9899, - "end": 10177, + "start": 9939, + "end": 10217, "loc": { "start": { - "line": 296, + "line": 297, "column": 8 }, "end": { - "line": 300, + "line": 301, "column": 62 } }, "left": { "type": "LogicalExpression", - "start": 9899, - "end": 10111, + "start": 9939, + "end": 10151, "loc": { "start": { - "line": 296, + "line": 297, "column": 8 }, "end": { - "line": 299, + "line": 300, "column": 50 } }, "left": { "type": "LogicalExpression", - "start": 9899, - "end": 10057, + "start": 9939, + "end": 10097, "loc": { "start": { - "line": 296, + "line": 297, "column": 8 }, "end": { - "line": 298, + "line": 299, "column": 53 } }, "left": { "type": "LogicalExpression", - "start": 9899, - "end": 10000, + "start": 9939, + "end": 10040, "loc": { "start": { - "line": 296, + "line": 297, "column": 8 }, "end": { - "line": 297, + "line": 298, "column": 54 } }, "left": { "type": "BinaryExpression", - "start": 9899, - "end": 9942, - "loc": { - "start": { - "line": 296, - "column": 8 - }, - "end": { - "line": 296, - "column": 51 - } - }, - "left": { - "type": "MemberExpression", - "start": 9899, - "end": 9928, - "loc": { - "start": { - "line": 296, - "column": 8 - }, - "end": { - "line": 296, - "column": 37 - } - }, - "object": { - "type": "Identifier", - "start": 9899, - "end": 9912, - "loc": { - "start": { - "line": 296, - "column": 8 - }, - "end": { - "line": 296, - "column": 21 - }, - "identifierName": "textureSetCfg" - }, - "name": "textureSetCfg" - }, - "property": { - "type": "Identifier", - "start": 9913, - "end": 9928, - "loc": { - "start": { - "line": 296, - "column": 22 - }, - "end": { - "line": 296, - "column": 37 - }, - "identifierName": "normalTextureId" - }, - "name": "normalTextureId" - }, - "computed": false - }, - "operator": "!==", - "right": { - "type": "Identifier", - "start": 9933, - "end": 9942, - "loc": { - "start": { - "line": 296, - "column": 42 - }, - "end": { - "line": 296, - "column": 51 - }, - "identifierName": "undefined" - }, - "name": "undefined" - } - }, - "operator": "||", - "right": { - "type": "BinaryExpression", - "start": 9954, - "end": 10000, + "start": 9939, + "end": 9982, "loc": { "start": { "line": 297, @@ -15702,13 +15669,13 @@ }, "end": { "line": 297, - "column": 54 + "column": 51 } }, "left": { "type": "MemberExpression", - "start": 9954, - "end": 9986, + "start": 9939, + "end": 9968, "loc": { "start": { "line": 297, @@ -15716,13 +15683,13 @@ }, "end": { "line": 297, - "column": 40 + "column": 37 } }, "object": { "type": "Identifier", - "start": 9954, - "end": 9967, + "start": 9939, + "end": 9952, "loc": { "start": { "line": 297, @@ -15738,8 +15705,8 @@ }, "property": { "type": "Identifier", - "start": 9968, - "end": 9986, + "start": 9953, + "end": 9968, "loc": { "start": { "line": 297, @@ -15747,6 +15714,90 @@ }, "end": { "line": 297, + "column": 37 + }, + "identifierName": "normalTextureId" + }, + "name": "normalTextureId" + }, + "computed": false + }, + "operator": "!==", + "right": { + "type": "Identifier", + "start": 9973, + "end": 9982, + "loc": { + "start": { + "line": 297, + "column": 42 + }, + "end": { + "line": 297, + "column": 51 + }, + "identifierName": "undefined" + }, + "name": "undefined" + } + }, + "operator": "||", + "right": { + "type": "BinaryExpression", + "start": 9994, + "end": 10040, + "loc": { + "start": { + "line": 298, + "column": 8 + }, + "end": { + "line": 298, + "column": 54 + } + }, + "left": { + "type": "MemberExpression", + "start": 9994, + "end": 10026, + "loc": { + "start": { + "line": 298, + "column": 8 + }, + "end": { + "line": 298, + "column": 40 + } + }, + "object": { + "type": "Identifier", + "start": 9994, + "end": 10007, + "loc": { + "start": { + "line": 298, + "column": 8 + }, + "end": { + "line": 298, + "column": 21 + }, + "identifierName": "textureSetCfg" + }, + "name": "textureSetCfg" + }, + "property": { + "type": "Identifier", + "start": 10008, + "end": 10026, + "loc": { + "start": { + "line": 298, + "column": 22 + }, + "end": { + "line": 298, "column": 40 }, "identifierName": "occlusionTextureId" @@ -15758,15 +15809,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 9991, - "end": 10000, + "start": 10031, + "end": 10040, "loc": { "start": { - "line": 297, + "line": 298, "column": 45 }, "end": { - "line": 297, + "line": 298, "column": 54 }, "identifierName": "undefined" @@ -15778,43 +15829,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 10012, - "end": 10057, + "start": 10052, + "end": 10097, "loc": { "start": { - "line": 298, + "line": 299, "column": 8 }, "end": { - "line": 298, + "line": 299, "column": 53 } }, "left": { "type": "MemberExpression", - "start": 10012, - "end": 10043, + "start": 10052, + "end": 10083, "loc": { "start": { - "line": 298, + "line": 299, "column": 8 }, "end": { - "line": 298, + "line": 299, "column": 39 } }, "object": { "type": "Identifier", - "start": 10012, - "end": 10025, + "start": 10052, + "end": 10065, "loc": { "start": { - "line": 298, + "line": 299, "column": 8 }, "end": { - "line": 298, + "line": 299, "column": 21 }, "identifierName": "textureSetCfg" @@ -15823,15 +15874,15 @@ }, "property": { "type": "Identifier", - "start": 10026, - "end": 10043, + "start": 10066, + "end": 10083, "loc": { "start": { - "line": 298, + "line": 299, "column": 22 }, "end": { - "line": 298, + "line": 299, "column": 39 }, "identifierName": "emissiveTextureId" @@ -15843,15 +15894,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 10048, - "end": 10057, + "start": 10088, + "end": 10097, "loc": { "start": { - "line": 298, + "line": 299, "column": 44 }, "end": { - "line": 298, + "line": 299, "column": 53 }, "identifierName": "undefined" @@ -15863,43 +15914,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 10069, - "end": 10111, + "start": 10109, + "end": 10151, "loc": { "start": { - "line": 299, + "line": 300, "column": 8 }, "end": { - "line": 299, + "line": 300, "column": 50 } }, "left": { "type": "MemberExpression", - "start": 10069, - "end": 10097, + "start": 10109, + "end": 10137, "loc": { "start": { - "line": 299, + "line": 300, "column": 8 }, "end": { - "line": 299, + "line": 300, "column": 36 } }, "object": { "type": "Identifier", - "start": 10069, - "end": 10082, + "start": 10109, + "end": 10122, "loc": { "start": { - "line": 299, + "line": 300, "column": 8 }, "end": { - "line": 299, + "line": 300, "column": 21 }, "identifierName": "textureSetCfg" @@ -15908,15 +15959,15 @@ }, "property": { "type": "Identifier", - "start": 10083, - "end": 10097, + "start": 10123, + "end": 10137, "loc": { "start": { - "line": 299, + "line": 300, "column": 22 }, "end": { - "line": 299, + "line": 300, "column": 36 }, "identifierName": "colorTextureId" @@ -15928,15 +15979,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 10102, - "end": 10111, + "start": 10142, + "end": 10151, "loc": { "start": { - "line": 299, + "line": 300, "column": 41 }, "end": { - "line": 299, + "line": 300, "column": 50 }, "identifierName": "undefined" @@ -15948,43 +15999,43 @@ "operator": "||", "right": { "type": "BinaryExpression", - "start": 10123, - "end": 10177, + "start": 10163, + "end": 10217, "loc": { "start": { - "line": 300, + "line": 301, "column": 8 }, "end": { - "line": 300, + "line": 301, "column": 62 } }, "left": { "type": "MemberExpression", - "start": 10123, - "end": 10163, + "start": 10163, + "end": 10203, "loc": { "start": { - "line": 300, + "line": 301, "column": 8 }, "end": { - "line": 300, + "line": 301, "column": 48 } }, "object": { "type": "Identifier", - "start": 10123, - "end": 10136, + "start": 10163, + "end": 10176, "loc": { "start": { - "line": 300, + "line": 301, "column": 8 }, "end": { - "line": 300, + "line": 301, "column": 21 }, "identifierName": "textureSetCfg" @@ -15993,15 +16044,15 @@ }, "property": { "type": "Identifier", - "start": 10137, - "end": 10163, + "start": 10177, + "end": 10203, "loc": { "start": { - "line": 300, + "line": 301, "column": 22 }, "end": { - "line": 300, + "line": 301, "column": 48 }, "identifierName": "metallicRoughnessTextureId" @@ -16013,15 +16064,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 10168, - "end": 10177, + "start": 10208, + "end": 10217, "loc": { "start": { - "line": 300, + "line": 301, "column": 53 }, "end": { - "line": 300, + "line": 301, "column": 62 }, "identifierName": "undefined" @@ -16032,73 +16083,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 10179, - "end": 10386, + "start": 10219, + "end": 10426, "loc": { "start": { - "line": 300, + "line": 301, "column": 64 }, "end": { - "line": 305, + "line": 306, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 10189, - "end": 10247, + "start": 10229, + "end": 10287, "loc": { "start": { - "line": 301, + "line": 302, "column": 8 }, "end": { - "line": 301, + "line": 302, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 10189, - "end": 10247, + "start": 10229, + "end": 10287, "loc": { "start": { - "line": 301, + "line": 302, "column": 8 }, "end": { - "line": 301, + "line": 302, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 10189, - "end": 10215, + "start": 10229, + "end": 10255, "loc": { "start": { - "line": 301, + "line": 302, "column": 8 }, "end": { - "line": 301, + "line": 302, "column": 34 } }, "object": { "type": "Identifier", - "start": 10189, - "end": 10202, + "start": 10229, + "end": 10242, "loc": { "start": { - "line": 301, + "line": 302, "column": 8 }, "end": { - "line": 301, + "line": 302, "column": 21 }, "identifierName": "textureSetCfg" @@ -16107,15 +16158,15 @@ }, "property": { "type": "Identifier", - "start": 10203, - "end": 10215, + "start": 10243, + "end": 10255, "loc": { "start": { - "line": 301, + "line": 302, "column": 22 }, "end": { - "line": 301, + "line": 302, "column": 34 }, "identifierName": "textureSetId" @@ -16126,30 +16177,30 @@ }, "right": { "type": "TemplateLiteral", - "start": 10218, - "end": 10247, + "start": 10258, + "end": 10287, "loc": { "start": { - "line": 301, + "line": 302, "column": 37 }, "end": { - "line": 301, + "line": 302, "column": 66 } }, "expressions": [ { "type": "UpdateExpression", - "start": 10232, - "end": 10244, + "start": 10272, + "end": 10284, "loc": { "start": { - "line": 301, + "line": 302, "column": 51 }, "end": { - "line": 301, + "line": 302, "column": 63 } }, @@ -16157,29 +16208,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 10232, - "end": 10242, + "start": 10272, + "end": 10282, "loc": { "start": { - "line": 301, + "line": 302, "column": 51 }, "end": { - "line": 301, + "line": 302, "column": 61 } }, "object": { "type": "Identifier", - "start": 10232, - "end": 10235, + "start": 10272, + "end": 10275, "loc": { "start": { - "line": 301, + "line": 302, "column": 51 }, "end": { - "line": 301, + "line": 302, "column": 54 }, "identifierName": "ctx" @@ -16188,15 +16239,15 @@ }, "property": { "type": "Identifier", - "start": 10236, - "end": 10242, + "start": 10276, + "end": 10282, "loc": { "start": { - "line": 301, + "line": 302, "column": 55 }, "end": { - "line": 301, + "line": 302, "column": 61 }, "identifierName": "nextId" @@ -16210,15 +16261,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 10219, - "end": 10230, + "start": 10259, + "end": 10270, "loc": { "start": { - "line": 301, + "line": 302, "column": 38 }, "end": { - "line": 301, + "line": 302, "column": 49 } }, @@ -16230,15 +16281,15 @@ }, { "type": "TemplateElement", - "start": 10245, - "end": 10246, + "start": 10285, + "end": 10286, "loc": { "start": { - "line": 301, + "line": 302, "column": 64 }, "end": { - "line": 301, + "line": 302, "column": 65 } }, @@ -16254,71 +16305,71 @@ }, { "type": "ExpressionStatement", - "start": 10256, - "end": 10301, + "start": 10296, + "end": 10341, "loc": { "start": { - "line": 302, + "line": 303, "column": 8 }, "end": { - "line": 302, + "line": 303, "column": 53 } }, "expression": { "type": "CallExpression", - "start": 10256, - "end": 10300, + "start": 10296, + "end": 10340, "loc": { "start": { - "line": 302, + "line": 303, "column": 8 }, "end": { - "line": 302, + "line": 303, "column": 52 } }, "callee": { "type": "MemberExpression", - "start": 10256, - "end": 10285, + "start": 10296, + "end": 10325, "loc": { "start": { - "line": 302, + "line": 303, "column": 8 }, "end": { - "line": 302, + "line": 303, "column": 37 } }, "object": { "type": "MemberExpression", - "start": 10256, - "end": 10268, + "start": 10296, + "end": 10308, "loc": { "start": { - "line": 302, + "line": 303, "column": 8 }, "end": { - "line": 302, + "line": 303, "column": 20 } }, "object": { "type": "Identifier", - "start": 10256, - "end": 10259, + "start": 10296, + "end": 10299, "loc": { "start": { - "line": 302, + "line": 303, "column": 8 }, "end": { - "line": 302, + "line": 303, "column": 11 }, "identifierName": "ctx" @@ -16327,15 +16378,15 @@ }, "property": { "type": "Identifier", - "start": 10260, - "end": 10268, + "start": 10300, + "end": 10308, "loc": { "start": { - "line": 302, + "line": 303, "column": 12 }, "end": { - "line": 302, + "line": 303, "column": 20 }, "identifierName": "xktModel" @@ -16346,15 +16397,15 @@ }, "property": { "type": "Identifier", - "start": 10269, - "end": 10285, + "start": 10309, + "end": 10325, "loc": { "start": { - "line": 302, + "line": 303, "column": 21 }, "end": { - "line": 302, + "line": 303, "column": 37 }, "identifierName": "createTextureSet" @@ -16366,15 +16417,15 @@ "arguments": [ { "type": "Identifier", - "start": 10286, - "end": 10299, + "start": 10326, + "end": 10339, "loc": { "start": { - "line": 302, + "line": 303, "column": 38 }, "end": { - "line": 302, + "line": 303, "column": 51 }, "identifierName": "textureSetCfg" @@ -16386,29 +16437,29 @@ }, { "type": "ExpressionStatement", - "start": 10310, - "end": 10337, + "start": 10350, + "end": 10377, "loc": { "start": { - "line": 303, + "line": 304, "column": 8 }, "end": { - "line": 303, + "line": 304, "column": 35 } }, "expression": { "type": "UpdateExpression", - "start": 10310, - "end": 10336, + "start": 10350, + "end": 10376, "loc": { "start": { - "line": 303, + "line": 304, "column": 8 }, "end": { - "line": 303, + "line": 304, "column": 34 } }, @@ -16416,43 +16467,43 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 10310, - "end": 10334, + "start": 10350, + "end": 10374, "loc": { "start": { - "line": 303, + "line": 304, "column": 8 }, "end": { - "line": 303, + "line": 304, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 10310, - "end": 10319, + "start": 10350, + "end": 10359, "loc": { "start": { - "line": 303, + "line": 304, "column": 8 }, "end": { - "line": 303, + "line": 304, "column": 17 } }, "object": { "type": "Identifier", - "start": 10310, - "end": 10313, + "start": 10350, + "end": 10353, "loc": { "start": { - "line": 303, + "line": 304, "column": 8 }, "end": { - "line": 303, + "line": 304, "column": 11 }, "identifierName": "ctx" @@ -16461,15 +16512,15 @@ }, "property": { "type": "Identifier", - "start": 10314, - "end": 10319, + "start": 10354, + "end": 10359, "loc": { "start": { - "line": 303, + "line": 304, "column": 12 }, "end": { - "line": 303, + "line": 304, "column": 17 }, "identifierName": "stats" @@ -16480,15 +16531,15 @@ }, "property": { "type": "Identifier", - "start": 10320, - "end": 10334, + "start": 10360, + "end": 10374, "loc": { "start": { - "line": 303, + "line": 304, "column": 18 }, "end": { - "line": 303, + "line": 304, "column": 32 }, "identifierName": "numTextureSets" @@ -16501,43 +16552,43 @@ }, { "type": "ReturnStatement", - "start": 10346, - "end": 10380, + "start": 10386, + "end": 10420, "loc": { "start": { - "line": 304, + "line": 305, "column": 8 }, "end": { - "line": 304, + "line": 305, "column": 42 } }, "argument": { "type": "MemberExpression", - "start": 10353, - "end": 10379, + "start": 10393, + "end": 10419, "loc": { "start": { - "line": 304, + "line": 305, "column": 15 }, "end": { - "line": 304, + "line": 305, "column": 41 } }, "object": { "type": "Identifier", - "start": 10353, - "end": 10366, + "start": 10393, + "end": 10406, "loc": { "start": { - "line": 304, + "line": 305, "column": 15 }, "end": { - "line": 304, + "line": 305, "column": 28 }, "identifierName": "textureSetCfg" @@ -16546,15 +16597,15 @@ }, "property": { "type": "Identifier", - "start": 10367, - "end": 10379, + "start": 10407, + "end": 10419, "loc": { "start": { - "line": 304, + "line": 305, "column": 29 }, "end": { - "line": 304, + "line": 305, "column": 41 }, "identifierName": "textureSetId" @@ -16571,29 +16622,29 @@ }, { "type": "ReturnStatement", - "start": 10391, - "end": 10403, + "start": 10431, + "end": 10443, "loc": { "start": { - "line": 306, + "line": 307, "column": 4 }, "end": { - "line": 306, + "line": 307, "column": 16 } }, "argument": { "type": "NullLiteral", - "start": 10398, - "end": 10402, + "start": 10438, + "end": 10442, "loc": { "start": { - "line": 306, + "line": 307, "column": 11 }, "end": { - "line": 306, + "line": 307, "column": 15 } } @@ -16605,29 +16656,29 @@ }, { "type": "FunctionDeclaration", - "start": 10407, - "end": 12906, + "start": 10447, + "end": 12946, "loc": { "start": { - "line": 309, + "line": 310, "column": 0 }, "end": { - "line": 367, + "line": 368, "column": 1 } }, "id": { "type": "Identifier", - "start": 10416, - "end": 10439, + "start": 10456, + "end": 10479, "loc": { "start": { - "line": 309, + "line": 310, "column": 9 }, "end": { - "line": 309, + "line": 310, "column": 32 }, "identifierName": "parseMaterialAttributes" @@ -16640,15 +16691,15 @@ "params": [ { "type": "Identifier", - "start": 10440, - "end": 10443, + "start": 10480, + "end": 10483, "loc": { "start": { - "line": 309, + "line": 310, "column": 33 }, "end": { - "line": 309, + "line": 310, "column": 36 }, "identifierName": "ctx" @@ -16657,15 +16708,15 @@ }, { "type": "Identifier", - "start": 10445, - "end": 10453, + "start": 10485, + "end": 10493, "loc": { "start": { - "line": 309, + "line": 310, "column": 38 }, "end": { - "line": 309, + "line": 310, "column": 46 }, "identifierName": "material" @@ -16675,59 +16726,59 @@ ], "body": { "type": "BlockStatement", - "start": 10455, - "end": 12906, + "start": 10495, + "end": 12946, "loc": { "start": { - "line": 309, + "line": 310, "column": 48 }, "end": { - "line": 367, + "line": 368, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 10527, - "end": 10566, + "start": 10567, + "end": 10606, "loc": { "start": { - "line": 310, + "line": 311, "column": 4 }, "end": { - "line": 310, + "line": 311, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10533, - "end": 10565, + "start": 10573, + "end": 10605, "loc": { "start": { - "line": 310, + "line": 311, "column": 10 }, "end": { - "line": 310, + "line": 311, "column": 42 } }, "id": { "type": "Identifier", - "start": 10533, - "end": 10543, + "start": 10573, + "end": 10583, "loc": { "start": { - "line": 310, + "line": 311, "column": 10 }, "end": { - "line": 310, + "line": 311, "column": 20 }, "identifierName": "extensions" @@ -16737,29 +16788,29 @@ }, "init": { "type": "MemberExpression", - "start": 10546, - "end": 10565, + "start": 10586, + "end": 10605, "loc": { "start": { - "line": 310, + "line": 311, "column": 23 }, "end": { - "line": 310, + "line": 311, "column": 42 } }, "object": { "type": "Identifier", - "start": 10546, - "end": 10554, + "start": 10586, + "end": 10594, "loc": { "start": { - "line": 310, + "line": 311, "column": 23 }, "end": { - "line": 310, + "line": 311, "column": 31 }, "identifierName": "material" @@ -16768,15 +16819,15 @@ }, "property": { "type": "Identifier", - "start": 10555, - "end": 10565, + "start": 10595, + "end": 10605, "loc": { "start": { - "line": 310, + "line": 311, "column": 32 }, "end": { - "line": 310, + "line": 311, "column": 42 }, "identifierName": "extensions" @@ -16793,15 +16844,15 @@ { "type": "CommentLine", "value": " Substitute RGBA for material, to use fast flat shading instead", - "start": 10457, - "end": 10522, + "start": 10497, + "end": 10562, "loc": { "start": { - "line": 309, + "line": 310, "column": 50 }, "end": { - "line": 309, + "line": 310, "column": 115 } } @@ -16810,44 +16861,44 @@ }, { "type": "VariableDeclaration", - "start": 10571, - "end": 10715, + "start": 10611, + "end": 10755, "loc": { "start": { - "line": 311, + "line": 312, "column": 4 }, "end": { - "line": 316, + "line": 317, "column": 6 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10577, - "end": 10714, + "start": 10617, + "end": 10754, "loc": { "start": { - "line": 311, + "line": 312, "column": 10 }, "end": { - "line": 316, + "line": 317, "column": 5 } }, "id": { "type": "Identifier", - "start": 10577, - "end": 10595, + "start": 10617, + "end": 10635, "loc": { "start": { - "line": 311, + "line": 312, "column": 10 }, "end": { - "line": 311, + "line": 312, "column": 28 }, "identifierName": "materialAttributes" @@ -16856,30 +16907,30 @@ }, "init": { "type": "ObjectExpression", - "start": 10598, - "end": 10714, + "start": 10638, + "end": 10754, "loc": { "start": { - "line": 311, + "line": 312, "column": 31 }, "end": { - "line": 316, + "line": 317, "column": 5 } }, "properties": [ { "type": "ObjectProperty", - "start": 10608, - "end": 10645, + "start": 10648, + "end": 10685, "loc": { "start": { - "line": 312, + "line": 313, "column": 8 }, "end": { - "line": 312, + "line": 313, "column": 45 } }, @@ -16888,15 +16939,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10608, - "end": 10613, + "start": 10648, + "end": 10653, "loc": { "start": { - "line": 312, + "line": 313, "column": 8 }, "end": { - "line": 312, + "line": 313, "column": 13 }, "identifierName": "color" @@ -16905,29 +16956,29 @@ }, "value": { "type": "NewExpression", - "start": 10615, - "end": 10645, + "start": 10655, + "end": 10685, "loc": { "start": { - "line": 312, + "line": 313, "column": 15 }, "end": { - "line": 312, + "line": 313, "column": 45 } }, "callee": { "type": "Identifier", - "start": 10619, - "end": 10631, + "start": 10659, + "end": 10671, "loc": { "start": { - "line": 312, + "line": 313, "column": 19 }, "end": { - "line": 312, + "line": 313, "column": 31 }, "identifierName": "Float32Array" @@ -16937,30 +16988,30 @@ "arguments": [ { "type": "ArrayExpression", - "start": 10632, - "end": 10644, + "start": 10672, + "end": 10684, "loc": { "start": { - "line": 312, + "line": 313, "column": 32 }, "end": { - "line": 312, + "line": 313, "column": 44 } }, "elements": [ { "type": "NumericLiteral", - "start": 10633, - "end": 10634, + "start": 10673, + "end": 10674, "loc": { "start": { - "line": 312, + "line": 313, "column": 33 }, "end": { - "line": 312, + "line": 313, "column": 34 } }, @@ -16972,15 +17023,15 @@ }, { "type": "NumericLiteral", - "start": 10636, - "end": 10637, + "start": 10676, + "end": 10677, "loc": { "start": { - "line": 312, + "line": 313, "column": 36 }, "end": { - "line": 312, + "line": 313, "column": 37 } }, @@ -16992,15 +17043,15 @@ }, { "type": "NumericLiteral", - "start": 10639, - "end": 10640, + "start": 10679, + "end": 10680, "loc": { "start": { - "line": 312, + "line": 313, "column": 39 }, "end": { - "line": 312, + "line": 313, "column": 40 } }, @@ -17012,15 +17063,15 @@ }, { "type": "NumericLiteral", - "start": 10642, - "end": 10643, + "start": 10682, + "end": 10683, "loc": { "start": { - "line": 312, + "line": 313, "column": 42 }, "end": { - "line": 312, + "line": 313, "column": 43 } }, @@ -17037,15 +17088,15 @@ }, { "type": "ObjectProperty", - "start": 10655, - "end": 10665, + "start": 10695, + "end": 10705, "loc": { "start": { - "line": 313, + "line": 314, "column": 8 }, "end": { - "line": 313, + "line": 314, "column": 18 } }, @@ -17054,15 +17105,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10655, - "end": 10662, + "start": 10695, + "end": 10702, "loc": { "start": { - "line": 313, + "line": 314, "column": 8 }, "end": { - "line": 313, + "line": 314, "column": 15 }, "identifierName": "opacity" @@ -17071,15 +17122,15 @@ }, "value": { "type": "NumericLiteral", - "start": 10664, - "end": 10665, + "start": 10704, + "end": 10705, "loc": { "start": { - "line": 313, + "line": 314, "column": 17 }, "end": { - "line": 313, + "line": 314, "column": 18 } }, @@ -17092,15 +17143,15 @@ }, { "type": "ObjectProperty", - "start": 10675, - "end": 10686, + "start": 10715, + "end": 10726, "loc": { "start": { - "line": 314, + "line": 315, "column": 8 }, "end": { - "line": 314, + "line": 315, "column": 19 } }, @@ -17109,15 +17160,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10675, - "end": 10683, + "start": 10715, + "end": 10723, "loc": { "start": { - "line": 314, + "line": 315, "column": 8 }, "end": { - "line": 314, + "line": 315, "column": 16 }, "identifierName": "metallic" @@ -17126,15 +17177,15 @@ }, "value": { "type": "NumericLiteral", - "start": 10685, - "end": 10686, + "start": 10725, + "end": 10726, "loc": { "start": { - "line": 314, + "line": 315, "column": 18 }, "end": { - "line": 314, + "line": 315, "column": 19 } }, @@ -17147,15 +17198,15 @@ }, { "type": "ObjectProperty", - "start": 10696, - "end": 10708, + "start": 10736, + "end": 10748, "loc": { "start": { - "line": 315, + "line": 316, "column": 8 }, "end": { - "line": 315, + "line": 316, "column": 20 } }, @@ -17164,15 +17215,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 10696, - "end": 10705, + "start": 10736, + "end": 10745, "loc": { "start": { - "line": 315, + "line": 316, "column": 8 }, "end": { - "line": 315, + "line": 316, "column": 17 }, "identifierName": "roughness" @@ -17181,15 +17232,15 @@ }, "value": { "type": "NumericLiteral", - "start": 10707, - "end": 10708, + "start": 10747, + "end": 10748, "loc": { "start": { - "line": 315, + "line": 316, "column": 19 }, "end": { - "line": 315, + "line": 316, "column": 20 } }, @@ -17208,29 +17259,29 @@ }, { "type": "IfStatement", - "start": 10720, - "end": 12038, + "start": 10760, + "end": 12078, "loc": { "start": { - "line": 317, + "line": 318, "column": 4 }, "end": { - "line": 347, + "line": 348, "column": 5 } }, "test": { "type": "Identifier", - "start": 10724, - "end": 10734, + "start": 10764, + "end": 10774, "loc": { "start": { - "line": 317, + "line": 318, "column": 8 }, "end": { - "line": 317, + "line": 318, "column": 18 }, "identifierName": "extensions" @@ -17239,59 +17290,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 10736, - "end": 12038, + "start": 10776, + "end": 12078, "loc": { "start": { - "line": 317, + "line": 318, "column": 20 }, "end": { - "line": 347, + "line": 348, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 10746, - "end": 10816, + "start": 10786, + "end": 10856, "loc": { "start": { - "line": 318, + "line": 319, "column": 8 }, "end": { - "line": 318, + "line": 319, "column": 78 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10752, - "end": 10815, + "start": 10792, + "end": 10855, "loc": { "start": { - "line": 318, + "line": 319, "column": 14 }, "end": { - "line": 318, + "line": 319, "column": 77 } }, "id": { "type": "Identifier", - "start": 10752, - "end": 10763, + "start": 10792, + "end": 10803, "loc": { "start": { - "line": 318, + "line": 319, "column": 14 }, "end": { - "line": 318, + "line": 319, "column": 25 }, "identifierName": "specularPBR" @@ -17300,29 +17351,29 @@ }, "init": { "type": "MemberExpression", - "start": 10766, - "end": 10815, + "start": 10806, + "end": 10855, "loc": { "start": { - "line": 318, + "line": 319, "column": 28 }, "end": { - "line": 318, + "line": 319, "column": 77 } }, "object": { "type": "Identifier", - "start": 10766, - "end": 10776, + "start": 10806, + "end": 10816, "loc": { "start": { - "line": 318, + "line": 319, "column": 28 }, "end": { - "line": 318, + "line": 319, "column": 38 }, "identifierName": "extensions" @@ -17331,15 +17382,15 @@ }, "property": { "type": "StringLiteral", - "start": 10777, - "end": 10814, + "start": 10817, + "end": 10854, "loc": { "start": { - "line": 318, + "line": 319, "column": 39 }, "end": { - "line": 318, + "line": 319, "column": 76 } }, @@ -17357,29 +17408,29 @@ }, { "type": "IfStatement", - "start": 10825, - "end": 11062, + "start": 10865, + "end": 11102, "loc": { "start": { - "line": 319, + "line": 320, "column": 8 }, "end": { - "line": 324, + "line": 325, "column": 9 } }, "test": { "type": "Identifier", - "start": 10829, - "end": 10840, + "start": 10869, + "end": 10880, "loc": { "start": { - "line": 319, + "line": 320, "column": 12 }, "end": { - "line": 319, + "line": 320, "column": 23 }, "identifierName": "specularPBR" @@ -17388,59 +17439,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 10842, - "end": 11062, + "start": 10882, + "end": 11102, "loc": { "start": { - "line": 319, + "line": 320, "column": 25 }, "end": { - "line": 324, + "line": 325, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 10856, - "end": 10904, + "start": 10896, + "end": 10944, "loc": { "start": { - "line": 320, + "line": 321, "column": 12 }, "end": { - "line": 320, + "line": 321, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 10862, - "end": 10903, + "start": 10902, + "end": 10943, "loc": { "start": { - "line": 320, + "line": 321, "column": 18 }, "end": { - "line": 320, + "line": 321, "column": 59 } }, "id": { "type": "Identifier", - "start": 10862, - "end": 10875, + "start": 10902, + "end": 10915, "loc": { "start": { - "line": 320, + "line": 321, "column": 18 }, "end": { - "line": 320, + "line": 321, "column": 31 }, "identifierName": "diffuseFactor" @@ -17449,29 +17500,29 @@ }, "init": { "type": "MemberExpression", - "start": 10878, - "end": 10903, + "start": 10918, + "end": 10943, "loc": { "start": { - "line": 320, + "line": 321, "column": 34 }, "end": { - "line": 320, + "line": 321, "column": 59 } }, "object": { "type": "Identifier", - "start": 10878, - "end": 10889, + "start": 10918, + "end": 10929, "loc": { "start": { - "line": 320, + "line": 321, "column": 34 }, "end": { - "line": 320, + "line": 321, "column": 45 }, "identifierName": "specularPBR" @@ -17480,15 +17531,15 @@ }, "property": { "type": "Identifier", - "start": 10890, - "end": 10903, + "start": 10930, + "end": 10943, "loc": { "start": { - "line": 320, + "line": 321, "column": 46 }, "end": { - "line": 320, + "line": 321, "column": 59 }, "identifierName": "diffuseFactor" @@ -17503,57 +17554,57 @@ }, { "type": "IfStatement", - "start": 10917, - "end": 11052, + "start": 10957, + "end": 11092, "loc": { "start": { - "line": 321, + "line": 322, "column": 12 }, "end": { - "line": 323, + "line": 324, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 10921, - "end": 10974, + "start": 10961, + "end": 11014, "loc": { "start": { - "line": 321, + "line": 322, "column": 16 }, "end": { - "line": 321, + "line": 322, "column": 69 } }, "left": { "type": "BinaryExpression", - "start": 10921, - "end": 10943, + "start": 10961, + "end": 10983, "loc": { "start": { - "line": 321, + "line": 322, "column": 16 }, "end": { - "line": 321, + "line": 322, "column": 38 } }, "left": { "type": "Identifier", - "start": 10921, - "end": 10934, + "start": 10961, + "end": 10974, "loc": { "start": { - "line": 321, + "line": 322, "column": 16 }, "end": { - "line": 321, + "line": 322, "column": 29 }, "identifierName": "diffuseFactor" @@ -17563,15 +17614,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 10939, - "end": 10943, + "start": 10979, + "end": 10983, "loc": { "start": { - "line": 321, + "line": 322, "column": 34 }, "end": { - "line": 321, + "line": 322, "column": 38 } } @@ -17580,29 +17631,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 10947, - "end": 10974, + "start": 10987, + "end": 11014, "loc": { "start": { - "line": 321, + "line": 322, "column": 42 }, "end": { - "line": 321, + "line": 322, "column": 69 } }, "left": { "type": "Identifier", - "start": 10947, - "end": 10960, + "start": 10987, + "end": 11000, "loc": { "start": { - "line": 321, + "line": 322, "column": 42 }, "end": { - "line": 321, + "line": 322, "column": 55 }, "identifierName": "diffuseFactor" @@ -17612,15 +17663,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 10965, - "end": 10974, + "start": 11005, + "end": 11014, "loc": { "start": { - "line": 321, + "line": 322, "column": 60 }, "end": { - "line": 321, + "line": 322, "column": 69 }, "identifierName": "undefined" @@ -17631,86 +17682,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 10976, - "end": 11052, + "start": 11016, + "end": 11092, "loc": { "start": { - "line": 321, + "line": 322, "column": 71 }, "end": { - "line": 323, + "line": 324, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 10994, - "end": 11038, + "start": 11034, + "end": 11078, "loc": { "start": { - "line": 322, + "line": 323, "column": 16 }, "end": { - "line": 322, + "line": 323, "column": 60 } }, "expression": { "type": "CallExpression", - "start": 10994, - "end": 11037, + "start": 11034, + "end": 11077, "loc": { "start": { - "line": 322, + "line": 323, "column": 16 }, "end": { - "line": 322, + "line": 323, "column": 59 } }, "callee": { "type": "MemberExpression", - "start": 10994, - "end": 11022, + "start": 11034, + "end": 11062, "loc": { "start": { - "line": 322, + "line": 323, "column": 16 }, "end": { - "line": 322, + "line": 323, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 10994, - "end": 11018, + "start": 11034, + "end": 11058, "loc": { "start": { - "line": 322, + "line": 323, "column": 16 }, "end": { - "line": 322, + "line": 323, "column": 40 } }, "object": { "type": "Identifier", - "start": 10994, - "end": 11012, + "start": 11034, + "end": 11052, "loc": { "start": { - "line": 322, + "line": 323, "column": 16 }, "end": { - "line": 322, + "line": 323, "column": 34 }, "identifierName": "materialAttributes" @@ -17719,15 +17770,15 @@ }, "property": { "type": "Identifier", - "start": 11013, - "end": 11018, + "start": 11053, + "end": 11058, "loc": { "start": { - "line": 322, + "line": 323, "column": 35 }, "end": { - "line": 322, + "line": 323, "column": 40 }, "identifierName": "color" @@ -17738,15 +17789,15 @@ }, "property": { "type": "Identifier", - "start": 11019, - "end": 11022, + "start": 11059, + "end": 11062, "loc": { "start": { - "line": 322, + "line": 323, "column": 41 }, "end": { - "line": 322, + "line": 323, "column": 44 }, "identifierName": "set" @@ -17758,15 +17809,15 @@ "arguments": [ { "type": "Identifier", - "start": 11023, - "end": 11036, + "start": 11063, + "end": 11076, "loc": { "start": { - "line": 322, + "line": 323, "column": 45 }, "end": { - "line": 322, + "line": 323, "column": 58 }, "identifierName": "diffuseFactor" @@ -17788,44 +17839,44 @@ }, { "type": "VariableDeclaration", - "start": 11071, - "end": 11121, + "start": 11111, + "end": 11161, "loc": { "start": { - "line": 325, + "line": 326, "column": 8 }, "end": { - "line": 325, + "line": 326, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11077, - "end": 11120, + "start": 11117, + "end": 11160, "loc": { "start": { - "line": 325, + "line": 326, "column": 14 }, "end": { - "line": 325, + "line": 326, "column": 57 } }, "id": { "type": "Identifier", - "start": 11077, - "end": 11083, + "start": 11117, + "end": 11123, "loc": { "start": { - "line": 325, + "line": 326, "column": 14 }, "end": { - "line": 325, + "line": 326, "column": 20 }, "identifierName": "common" @@ -17834,29 +17885,29 @@ }, "init": { "type": "MemberExpression", - "start": 11086, - "end": 11120, + "start": 11126, + "end": 11160, "loc": { "start": { - "line": 325, + "line": 326, "column": 23 }, "end": { - "line": 325, + "line": 326, "column": 57 } }, "object": { "type": "Identifier", - "start": 11086, - "end": 11096, + "start": 11126, + "end": 11136, "loc": { "start": { - "line": 325, + "line": 326, "column": 23 }, "end": { - "line": 325, + "line": 326, "column": 33 }, "identifierName": "extensions" @@ -17865,15 +17916,15 @@ }, "property": { "type": "StringLiteral", - "start": 11097, - "end": 11119, + "start": 11137, + "end": 11159, "loc": { "start": { - "line": 325, + "line": 326, "column": 34 }, "end": { - "line": 325, + "line": 326, "column": 56 } }, @@ -17891,29 +17942,29 @@ }, { "type": "IfStatement", - "start": 11130, - "end": 12032, + "start": 11170, + "end": 12072, "loc": { "start": { - "line": 326, + "line": 327, "column": 8 }, "end": { - "line": 346, + "line": 347, "column": 9 } }, "test": { "type": "Identifier", - "start": 11134, - "end": 11140, + "start": 11174, + "end": 11180, "loc": { "start": { - "line": 326, + "line": 327, "column": 12 }, "end": { - "line": 326, + "line": 327, "column": 18 }, "identifierName": "common" @@ -17922,59 +17973,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 11142, - "end": 12032, + "start": 11182, + "end": 12072, "loc": { "start": { - "line": 326, + "line": 327, "column": 20 }, "end": { - "line": 346, + "line": 347, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 11156, - "end": 11191, + "start": 11196, + "end": 11231, "loc": { "start": { - "line": 327, + "line": 328, "column": 12 }, "end": { - "line": 327, + "line": 328, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11162, - "end": 11190, + "start": 11202, + "end": 11230, "loc": { "start": { - "line": 327, + "line": 328, "column": 18 }, "end": { - "line": 327, + "line": 328, "column": 46 } }, "id": { "type": "Identifier", - "start": 11162, - "end": 11171, + "start": 11202, + "end": 11211, "loc": { "start": { - "line": 327, + "line": 328, "column": 18 }, "end": { - "line": 327, + "line": 328, "column": 27 }, "identifierName": "technique" @@ -17983,29 +18034,29 @@ }, "init": { "type": "MemberExpression", - "start": 11174, - "end": 11190, + "start": 11214, + "end": 11230, "loc": { "start": { - "line": 327, + "line": 328, "column": 30 }, "end": { - "line": 327, + "line": 328, "column": 46 } }, "object": { "type": "Identifier", - "start": 11174, - "end": 11180, + "start": 11214, + "end": 11220, "loc": { "start": { - "line": 327, + "line": 328, "column": 30 }, "end": { - "line": 327, + "line": 328, "column": 36 }, "identifierName": "common" @@ -18014,15 +18065,15 @@ }, "property": { "type": "Identifier", - "start": 11181, - "end": 11190, + "start": 11221, + "end": 11230, "loc": { "start": { - "line": 327, + "line": 328, "column": 37 }, "end": { - "line": 327, + "line": 328, "column": 46 }, "identifierName": "technique" @@ -18037,44 +18088,44 @@ }, { "type": "VariableDeclaration", - "start": 11204, - "end": 11239, + "start": 11244, + "end": 11279, "loc": { "start": { - "line": 328, + "line": 329, "column": 12 }, "end": { - "line": 328, + "line": 329, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11210, - "end": 11238, + "start": 11250, + "end": 11278, "loc": { "start": { - "line": 328, + "line": 329, "column": 18 }, "end": { - "line": 328, + "line": 329, "column": 46 } }, "id": { "type": "Identifier", - "start": 11210, - "end": 11216, + "start": 11250, + "end": 11256, "loc": { "start": { - "line": 328, + "line": 329, "column": 18 }, "end": { - "line": 328, + "line": 329, "column": 24 }, "identifierName": "values" @@ -18083,43 +18134,43 @@ }, "init": { "type": "LogicalExpression", - "start": 11219, - "end": 11238, + "start": 11259, + "end": 11278, "loc": { "start": { - "line": 328, + "line": 329, "column": 27 }, "end": { - "line": 328, + "line": 329, "column": 46 } }, "left": { "type": "MemberExpression", - "start": 11219, - "end": 11232, + "start": 11259, + "end": 11272, "loc": { "start": { - "line": 328, + "line": 329, "column": 27 }, "end": { - "line": 328, + "line": 329, "column": 40 } }, "object": { "type": "Identifier", - "start": 11219, - "end": 11225, + "start": 11259, + "end": 11265, "loc": { "start": { - "line": 328, + "line": 329, "column": 27 }, "end": { - "line": 328, + "line": 329, "column": 33 }, "identifierName": "common" @@ -18128,15 +18179,15 @@ }, "property": { "type": "Identifier", - "start": 11226, - "end": 11232, + "start": 11266, + "end": 11272, "loc": { "start": { - "line": 328, + "line": 329, "column": 34 }, "end": { - "line": 328, + "line": 329, "column": 40 }, "identifierName": "values" @@ -18148,15 +18199,15 @@ "operator": "||", "right": { "type": "ObjectExpression", - "start": 11236, - "end": 11238, + "start": 11276, + "end": 11278, "loc": { "start": { - "line": 328, + "line": 329, "column": 44 }, "end": { - "line": 328, + "line": 329, "column": 46 } }, @@ -18169,44 +18220,44 @@ }, { "type": "VariableDeclaration", - "start": 11252, - "end": 11288, + "start": 11292, + "end": 11328, "loc": { "start": { - "line": 329, + "line": 330, "column": 12 }, "end": { - "line": 329, + "line": 330, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11258, - "end": 11287, + "start": 11298, + "end": 11327, "loc": { "start": { - "line": 329, + "line": 330, "column": 18 }, "end": { - "line": 329, + "line": 330, "column": 47 } }, "id": { "type": "Identifier", - "start": 11258, - "end": 11263, + "start": 11298, + "end": 11303, "loc": { "start": { - "line": 329, + "line": 330, "column": 18 }, "end": { - "line": 329, + "line": 330, "column": 23 }, "identifierName": "blinn" @@ -18215,29 +18266,29 @@ }, "init": { "type": "BinaryExpression", - "start": 11266, - "end": 11287, + "start": 11306, + "end": 11327, "loc": { "start": { - "line": 329, + "line": 330, "column": 26 }, "end": { - "line": 329, + "line": 330, "column": 47 } }, "left": { "type": "Identifier", - "start": 11266, - "end": 11275, + "start": 11306, + "end": 11315, "loc": { "start": { - "line": 329, + "line": 330, "column": 26 }, "end": { - "line": 329, + "line": 330, "column": 35 }, "identifierName": "technique" @@ -18247,15 +18298,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 11280, - "end": 11287, + "start": 11320, + "end": 11327, "loc": { "start": { - "line": 329, + "line": 330, "column": 40 }, "end": { - "line": 329, + "line": 330, "column": 47 } }, @@ -18272,44 +18323,44 @@ }, { "type": "VariableDeclaration", - "start": 11301, - "end": 11337, + "start": 11341, + "end": 11377, "loc": { "start": { - "line": 330, + "line": 331, "column": 12 }, "end": { - "line": 330, + "line": 331, "column": 48 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11307, - "end": 11336, + "start": 11347, + "end": 11376, "loc": { "start": { - "line": 330, + "line": 331, "column": 18 }, "end": { - "line": 330, + "line": 331, "column": 47 } }, "id": { "type": "Identifier", - "start": 11307, - "end": 11312, + "start": 11347, + "end": 11352, "loc": { "start": { - "line": 330, + "line": 331, "column": 18 }, "end": { - "line": 330, + "line": 331, "column": 23 }, "identifierName": "phong" @@ -18318,29 +18369,29 @@ }, "init": { "type": "BinaryExpression", - "start": 11315, - "end": 11336, + "start": 11355, + "end": 11376, "loc": { "start": { - "line": 330, + "line": 331, "column": 26 }, "end": { - "line": 330, + "line": 331, "column": 47 } }, "left": { "type": "Identifier", - "start": 11315, - "end": 11324, + "start": 11355, + "end": 11364, "loc": { "start": { - "line": 330, + "line": 331, "column": 26 }, "end": { - "line": 330, + "line": 331, "column": 35 }, "identifierName": "technique" @@ -18350,15 +18401,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 11329, - "end": 11336, + "start": 11369, + "end": 11376, "loc": { "start": { - "line": 330, + "line": 331, "column": 40 }, "end": { - "line": 330, + "line": 331, "column": 47 } }, @@ -18375,44 +18426,44 @@ }, { "type": "VariableDeclaration", - "start": 11350, - "end": 11390, + "start": 11390, + "end": 11430, "loc": { "start": { - "line": 331, + "line": 332, "column": 12 }, "end": { - "line": 331, + "line": 332, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11356, - "end": 11389, + "start": 11396, + "end": 11429, "loc": { "start": { - "line": 331, + "line": 332, "column": 18 }, "end": { - "line": 331, + "line": 332, "column": 51 } }, "id": { "type": "Identifier", - "start": 11356, - "end": 11363, + "start": 11396, + "end": 11403, "loc": { "start": { - "line": 331, + "line": 332, "column": 18 }, "end": { - "line": 331, + "line": 332, "column": 25 }, "identifierName": "lambert" @@ -18421,29 +18472,29 @@ }, "init": { "type": "BinaryExpression", - "start": 11366, - "end": 11389, + "start": 11406, + "end": 11429, "loc": { "start": { - "line": 331, + "line": 332, "column": 28 }, "end": { - "line": 331, + "line": 332, "column": 51 } }, "left": { "type": "Identifier", - "start": 11366, - "end": 11375, + "start": 11406, + "end": 11415, "loc": { "start": { - "line": 331, + "line": 332, "column": 28 }, "end": { - "line": 331, + "line": 332, "column": 37 }, "identifierName": "technique" @@ -18453,15 +18504,15 @@ "operator": "===", "right": { "type": "StringLiteral", - "start": 11380, - "end": 11389, + "start": 11420, + "end": 11429, "loc": { "start": { - "line": 331, + "line": 332, "column": 42 }, "end": { - "line": 331, + "line": 332, "column": 51 } }, @@ -18478,44 +18529,44 @@ }, { "type": "VariableDeclaration", - "start": 11403, - "end": 11434, + "start": 11443, + "end": 11474, "loc": { "start": { - "line": 332, + "line": 333, "column": 12 }, "end": { - "line": 332, + "line": 333, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11409, - "end": 11433, + "start": 11449, + "end": 11473, "loc": { "start": { - "line": 332, + "line": 333, "column": 18 }, "end": { - "line": 332, + "line": 333, "column": 42 } }, "id": { "type": "Identifier", - "start": 11409, - "end": 11416, + "start": 11449, + "end": 11456, "loc": { "start": { - "line": 332, + "line": 333, "column": 18 }, "end": { - "line": 332, + "line": 333, "column": 25 }, "identifierName": "diffuse" @@ -18524,29 +18575,29 @@ }, "init": { "type": "MemberExpression", - "start": 11419, - "end": 11433, + "start": 11459, + "end": 11473, "loc": { "start": { - "line": 332, + "line": 333, "column": 28 }, "end": { - "line": 332, + "line": 333, "column": 42 } }, "object": { "type": "Identifier", - "start": 11419, - "end": 11425, + "start": 11459, + "end": 11465, "loc": { "start": { - "line": 332, + "line": 333, "column": 28 }, "end": { - "line": 332, + "line": 333, "column": 34 }, "identifierName": "values" @@ -18555,15 +18606,15 @@ }, "property": { "type": "Identifier", - "start": 11426, - "end": 11433, + "start": 11466, + "end": 11473, "loc": { "start": { - "line": 332, + "line": 333, "column": 35 }, "end": { - "line": 332, + "line": 333, "column": 42 }, "identifierName": "diffuse" @@ -18578,43 +18629,43 @@ }, { "type": "IfStatement", - "start": 11447, - "end": 11631, + "start": 11487, + "end": 11671, "loc": { "start": { - "line": 333, + "line": 334, "column": 12 }, "end": { - "line": 337, + "line": 338, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 11451, - "end": 11489, + "start": 11491, + "end": 11529, "loc": { "start": { - "line": 333, + "line": 334, "column": 16 }, "end": { - "line": 333, + "line": 334, "column": 54 } }, "left": { "type": "Identifier", - "start": 11451, - "end": 11458, + "start": 11491, + "end": 11498, "loc": { "start": { - "line": 333, + "line": 334, "column": 16 }, "end": { - "line": 333, + "line": 334, "column": 23 }, "identifierName": "diffuse" @@ -18624,43 +18675,43 @@ "operator": "&&", "right": { "type": "LogicalExpression", - "start": 11463, - "end": 11488, + "start": 11503, + "end": 11528, "loc": { "start": { - "line": 333, + "line": 334, "column": 28 }, "end": { - "line": 333, + "line": 334, "column": 53 } }, "left": { "type": "LogicalExpression", - "start": 11463, - "end": 11477, + "start": 11503, + "end": 11517, "loc": { "start": { - "line": 333, + "line": 334, "column": 28 }, "end": { - "line": 333, + "line": 334, "column": 42 } }, "left": { "type": "Identifier", - "start": 11463, - "end": 11468, + "start": 11503, + "end": 11508, "loc": { "start": { - "line": 333, + "line": 334, "column": 28 }, "end": { - "line": 333, + "line": 334, "column": 33 }, "identifierName": "blinn" @@ -18670,15 +18721,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 11472, - "end": 11477, + "start": 11512, + "end": 11517, "loc": { "start": { - "line": 333, + "line": 334, "column": 37 }, "end": { - "line": 333, + "line": 334, "column": 42 }, "identifierName": "phong" @@ -18689,15 +18740,15 @@ "operator": "||", "right": { "type": "Identifier", - "start": 11481, - "end": 11488, + "start": 11521, + "end": 11528, "loc": { "start": { - "line": 333, + "line": 334, "column": 46 }, "end": { - "line": 333, + "line": 334, "column": 53 }, "identifierName": "lambert" @@ -18706,50 +18757,50 @@ }, "extra": { "parenthesized": true, - "parenStart": 11462 + "parenStart": 11502 } } }, "consequent": { "type": "BlockStatement", - "start": 11491, - "end": 11631, + "start": 11531, + "end": 11671, "loc": { "start": { - "line": 333, + "line": 334, "column": 56 }, "end": { - "line": 337, + "line": 338, "column": 13 } }, "body": [ { "type": "IfStatement", - "start": 11509, - "end": 11617, + "start": 11549, + "end": 11657, "loc": { "start": { - "line": 334, + "line": 335, "column": 16 }, "end": { - "line": 336, + "line": 337, "column": 17 } }, "test": { "type": "UnaryExpression", - "start": 11513, - "end": 11537, + "start": 11553, + "end": 11577, "loc": { "start": { - "line": 334, + "line": 335, "column": 20 }, "end": { - "line": 334, + "line": 335, "column": 44 } }, @@ -18757,43 +18808,43 @@ "prefix": true, "argument": { "type": "CallExpression", - "start": 11514, - "end": 11537, + "start": 11554, + "end": 11577, "loc": { "start": { - "line": 334, + "line": 335, "column": 21 }, "end": { - "line": 334, + "line": 335, "column": 44 } }, "callee": { "type": "MemberExpression", - "start": 11514, - "end": 11528, + "start": 11554, + "end": 11568, "loc": { "start": { - "line": 334, + "line": 335, "column": 21 }, "end": { - "line": 334, + "line": 335, "column": 35 } }, "object": { "type": "Identifier", - "start": 11514, - "end": 11519, + "start": 11554, + "end": 11559, "loc": { "start": { - "line": 334, + "line": 335, "column": 21 }, "end": { - "line": 334, + "line": 335, "column": 26 }, "identifierName": "utils" @@ -18802,15 +18853,15 @@ }, "property": { "type": "Identifier", - "start": 11520, - "end": 11528, + "start": 11560, + "end": 11568, "loc": { "start": { - "line": 334, + "line": 335, "column": 27 }, "end": { - "line": 334, + "line": 335, "column": 35 }, "identifierName": "isString" @@ -18822,15 +18873,15 @@ "arguments": [ { "type": "Identifier", - "start": 11529, - "end": 11536, + "start": 11569, + "end": 11576, "loc": { "start": { - "line": 334, + "line": 335, "column": 36 }, "end": { - "line": 334, + "line": 335, "column": 43 }, "identifierName": "diffuse" @@ -18845,86 +18896,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 11539, - "end": 11617, + "start": 11579, + "end": 11657, "loc": { "start": { - "line": 334, + "line": 335, "column": 46 }, "end": { - "line": 336, + "line": 337, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 11561, - "end": 11599, + "start": 11601, + "end": 11639, "loc": { "start": { - "line": 335, + "line": 336, "column": 20 }, "end": { - "line": 335, + "line": 336, "column": 58 } }, "expression": { "type": "CallExpression", - "start": 11561, - "end": 11598, + "start": 11601, + "end": 11638, "loc": { "start": { - "line": 335, + "line": 336, "column": 20 }, "end": { - "line": 335, + "line": 336, "column": 57 } }, "callee": { "type": "MemberExpression", - "start": 11561, - "end": 11589, + "start": 11601, + "end": 11629, "loc": { "start": { - "line": 335, + "line": 336, "column": 20 }, "end": { - "line": 335, + "line": 336, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 11561, - "end": 11585, + "start": 11601, + "end": 11625, "loc": { "start": { - "line": 335, + "line": 336, "column": 20 }, "end": { - "line": 335, + "line": 336, "column": 44 } }, "object": { "type": "Identifier", - "start": 11561, - "end": 11579, + "start": 11601, + "end": 11619, "loc": { "start": { - "line": 335, + "line": 336, "column": 20 }, "end": { - "line": 335, + "line": 336, "column": 38 }, "identifierName": "materialAttributes" @@ -18933,15 +18984,15 @@ }, "property": { "type": "Identifier", - "start": 11580, - "end": 11585, + "start": 11620, + "end": 11625, "loc": { "start": { - "line": 335, + "line": 336, "column": 39 }, "end": { - "line": 335, + "line": 336, "column": 44 }, "identifierName": "color" @@ -18952,15 +19003,15 @@ }, "property": { "type": "Identifier", - "start": 11586, - "end": 11589, + "start": 11626, + "end": 11629, "loc": { "start": { - "line": 335, + "line": 336, "column": 45 }, "end": { - "line": 335, + "line": 336, "column": 48 }, "identifierName": "set" @@ -18972,15 +19023,15 @@ "arguments": [ { "type": "Identifier", - "start": 11590, - "end": 11597, + "start": 11630, + "end": 11637, "loc": { "start": { - "line": 335, + "line": 336, "column": 49 }, "end": { - "line": 335, + "line": 336, "column": 56 }, "identifierName": "diffuse" @@ -19002,44 +19053,44 @@ }, { "type": "VariableDeclaration", - "start": 11644, - "end": 11685, + "start": 11684, + "end": 11725, "loc": { "start": { - "line": 338, + "line": 339, "column": 12 }, "end": { - "line": 338, + "line": 339, "column": 53 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11650, - "end": 11684, + "start": 11690, + "end": 11724, "loc": { "start": { - "line": 338, + "line": 339, "column": 18 }, "end": { - "line": 338, + "line": 339, "column": 52 } }, "id": { "type": "Identifier", - "start": 11650, - "end": 11662, + "start": 11690, + "end": 11702, "loc": { "start": { - "line": 338, + "line": 339, "column": 18 }, "end": { - "line": 338, + "line": 339, "column": 30 }, "identifierName": "transparency" @@ -19048,29 +19099,29 @@ }, "init": { "type": "MemberExpression", - "start": 11665, - "end": 11684, + "start": 11705, + "end": 11724, "loc": { "start": { - "line": 338, + "line": 339, "column": 33 }, "end": { - "line": 338, + "line": 339, "column": 52 } }, "object": { "type": "Identifier", - "start": 11665, - "end": 11671, + "start": 11705, + "end": 11711, "loc": { "start": { - "line": 338, + "line": 339, "column": 33 }, "end": { - "line": 338, + "line": 339, "column": 39 }, "identifierName": "values" @@ -19079,15 +19130,15 @@ }, "property": { "type": "Identifier", - "start": 11672, - "end": 11684, + "start": 11712, + "end": 11724, "loc": { "start": { - "line": 338, + "line": 339, "column": 40 }, "end": { - "line": 338, + "line": 339, "column": 52 }, "identifierName": "transparency" @@ -19102,57 +19153,57 @@ }, { "type": "IfStatement", - "start": 11698, - "end": 11829, + "start": 11738, + "end": 11869, "loc": { "start": { - "line": 339, + "line": 340, "column": 12 }, "end": { - "line": 341, + "line": 342, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 11702, - "end": 11753, + "start": 11742, + "end": 11793, "loc": { "start": { - "line": 339, + "line": 340, "column": 16 }, "end": { - "line": 339, + "line": 340, "column": 67 } }, "left": { "type": "BinaryExpression", - "start": 11702, - "end": 11723, + "start": 11742, + "end": 11763, "loc": { "start": { - "line": 339, + "line": 340, "column": 16 }, "end": { - "line": 339, + "line": 340, "column": 37 } }, "left": { "type": "Identifier", - "start": 11702, - "end": 11714, + "start": 11742, + "end": 11754, "loc": { "start": { - "line": 339, + "line": 340, "column": 16 }, "end": { - "line": 339, + "line": 340, "column": 28 }, "identifierName": "transparency" @@ -19162,15 +19213,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 11719, - "end": 11723, + "start": 11759, + "end": 11763, "loc": { "start": { - "line": 339, + "line": 340, "column": 33 }, "end": { - "line": 339, + "line": 340, "column": 37 } } @@ -19179,29 +19230,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 11727, - "end": 11753, + "start": 11767, + "end": 11793, "loc": { "start": { - "line": 339, + "line": 340, "column": 41 }, "end": { - "line": 339, + "line": 340, "column": 67 } }, "left": { "type": "Identifier", - "start": 11727, - "end": 11739, + "start": 11767, + "end": 11779, "loc": { "start": { - "line": 339, + "line": 340, "column": 41 }, "end": { - "line": 339, + "line": 340, "column": 53 }, "identifierName": "transparency" @@ -19211,15 +19262,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 11744, - "end": 11753, + "start": 11784, + "end": 11793, "loc": { "start": { - "line": 339, + "line": 340, "column": 58 }, "end": { - "line": 339, + "line": 340, "column": 67 }, "identifierName": "undefined" @@ -19230,73 +19281,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 11755, - "end": 11829, + "start": 11795, + "end": 11869, "loc": { "start": { - "line": 339, + "line": 340, "column": 69 }, "end": { - "line": 341, + "line": 342, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 11773, - "end": 11815, + "start": 11813, + "end": 11855, "loc": { "start": { - "line": 340, + "line": 341, "column": 16 }, "end": { - "line": 340, + "line": 341, "column": 58 } }, "expression": { "type": "AssignmentExpression", - "start": 11773, - "end": 11814, + "start": 11813, + "end": 11854, "loc": { "start": { - "line": 340, + "line": 341, "column": 16 }, "end": { - "line": 340, + "line": 341, "column": 57 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 11773, - "end": 11799, + "start": 11813, + "end": 11839, "loc": { "start": { - "line": 340, + "line": 341, "column": 16 }, "end": { - "line": 340, + "line": 341, "column": 42 } }, "object": { "type": "Identifier", - "start": 11773, - "end": 11791, + "start": 11813, + "end": 11831, "loc": { "start": { - "line": 340, + "line": 341, "column": 16 }, "end": { - "line": 340, + "line": 341, "column": 34 }, "identifierName": "materialAttributes" @@ -19305,15 +19356,15 @@ }, "property": { "type": "Identifier", - "start": 11792, - "end": 11799, + "start": 11832, + "end": 11839, "loc": { "start": { - "line": 340, + "line": 341, "column": 35 }, "end": { - "line": 340, + "line": 341, "column": 42 }, "identifierName": "opacity" @@ -19324,15 +19375,15 @@ }, "right": { "type": "Identifier", - "start": 11802, - "end": 11814, + "start": 11842, + "end": 11854, "loc": { "start": { - "line": 340, + "line": 341, "column": 45 }, "end": { - "line": 340, + "line": 341, "column": 57 }, "identifierName": "transparency" @@ -19348,44 +19399,44 @@ }, { "type": "VariableDeclaration", - "start": 11842, - "end": 11881, + "start": 11882, + "end": 11921, "loc": { "start": { - "line": 342, + "line": 343, "column": 12 }, "end": { - "line": 342, + "line": 343, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 11848, - "end": 11880, + "start": 11888, + "end": 11920, "loc": { "start": { - "line": 342, + "line": 343, "column": 18 }, "end": { - "line": 342, + "line": 343, "column": 50 } }, "id": { "type": "Identifier", - "start": 11848, - "end": 11859, + "start": 11888, + "end": 11899, "loc": { "start": { - "line": 342, + "line": 343, "column": 18 }, "end": { - "line": 342, + "line": 343, "column": 29 }, "identifierName": "transparent" @@ -19394,29 +19445,29 @@ }, "init": { "type": "MemberExpression", - "start": 11862, - "end": 11880, + "start": 11902, + "end": 11920, "loc": { "start": { - "line": 342, + "line": 343, "column": 32 }, "end": { - "line": 342, + "line": 343, "column": 50 } }, "object": { "type": "Identifier", - "start": 11862, - "end": 11868, + "start": 11902, + "end": 11908, "loc": { "start": { - "line": 342, + "line": 343, "column": 32 }, "end": { - "line": 342, + "line": 343, "column": 38 }, "identifierName": "values" @@ -19425,15 +19476,15 @@ }, "property": { "type": "Identifier", - "start": 11869, - "end": 11880, + "start": 11909, + "end": 11920, "loc": { "start": { - "line": 342, + "line": 343, "column": 39 }, "end": { - "line": 342, + "line": 343, "column": 50 }, "identifierName": "transparent" @@ -19448,57 +19499,57 @@ }, { "type": "IfStatement", - "start": 11894, - "end": 12022, + "start": 11934, + "end": 12062, "loc": { "start": { - "line": 343, + "line": 344, "column": 12 }, "end": { - "line": 345, + "line": 346, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 11898, - "end": 11947, + "start": 11938, + "end": 11987, "loc": { "start": { - "line": 343, + "line": 344, "column": 16 }, "end": { - "line": 343, + "line": 344, "column": 65 } }, "left": { "type": "BinaryExpression", - "start": 11898, - "end": 11918, + "start": 11938, + "end": 11958, "loc": { "start": { - "line": 343, + "line": 344, "column": 16 }, "end": { - "line": 343, + "line": 344, "column": 36 } }, "left": { "type": "Identifier", - "start": 11898, - "end": 11909, + "start": 11938, + "end": 11949, "loc": { "start": { - "line": 343, + "line": 344, "column": 16 }, "end": { - "line": 343, + "line": 344, "column": 27 }, "identifierName": "transparent" @@ -19508,15 +19559,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 11914, - "end": 11918, + "start": 11954, + "end": 11958, "loc": { "start": { - "line": 343, + "line": 344, "column": 32 }, "end": { - "line": 343, + "line": 344, "column": 36 } } @@ -19525,29 +19576,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 11922, - "end": 11947, + "start": 11962, + "end": 11987, "loc": { "start": { - "line": 343, + "line": 344, "column": 40 }, "end": { - "line": 343, + "line": 344, "column": 65 } }, "left": { "type": "Identifier", - "start": 11922, - "end": 11933, + "start": 11962, + "end": 11973, "loc": { "start": { - "line": 343, + "line": 344, "column": 40 }, "end": { - "line": 343, + "line": 344, "column": 51 }, "identifierName": "transparent" @@ -19557,15 +19608,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 11938, - "end": 11947, + "start": 11978, + "end": 11987, "loc": { "start": { - "line": 343, + "line": 344, "column": 56 }, "end": { - "line": 343, + "line": 344, "column": 65 }, "identifierName": "undefined" @@ -19576,73 +19627,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 11949, - "end": 12022, + "start": 11989, + "end": 12062, "loc": { "start": { - "line": 343, + "line": 344, "column": 67 }, "end": { - "line": 345, + "line": 346, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 11967, - "end": 12008, + "start": 12007, + "end": 12048, "loc": { "start": { - "line": 344, + "line": 345, "column": 16 }, "end": { - "line": 344, + "line": 345, "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 11967, - "end": 12007, + "start": 12007, + "end": 12047, "loc": { "start": { - "line": 344, + "line": 345, "column": 16 }, "end": { - "line": 344, + "line": 345, "column": 56 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 11967, - "end": 11993, + "start": 12007, + "end": 12033, "loc": { "start": { - "line": 344, + "line": 345, "column": 16 }, "end": { - "line": 344, + "line": 345, "column": 42 } }, "object": { "type": "Identifier", - "start": 11967, - "end": 11985, + "start": 12007, + "end": 12025, "loc": { "start": { - "line": 344, + "line": 345, "column": 16 }, "end": { - "line": 344, + "line": 345, "column": 34 }, "identifierName": "materialAttributes" @@ -19651,15 +19702,15 @@ }, "property": { "type": "Identifier", - "start": 11986, - "end": 11993, + "start": 12026, + "end": 12033, "loc": { "start": { - "line": 344, + "line": 345, "column": 35 }, "end": { - "line": 344, + "line": 345, "column": 42 }, "identifierName": "opacity" @@ -19670,15 +19721,15 @@ }, "right": { "type": "Identifier", - "start": 11996, - "end": 12007, + "start": 12036, + "end": 12047, "loc": { "start": { - "line": 344, + "line": 345, "column": 45 }, "end": { - "line": 344, + "line": 345, "column": 56 }, "identifierName": "transparent" @@ -19704,44 +19755,44 @@ }, { "type": "VariableDeclaration", - "start": 12043, - "end": 12093, + "start": 12083, + "end": 12133, "loc": { "start": { - "line": 348, + "line": 349, "column": 4 }, "end": { - "line": 348, + "line": 349, "column": 54 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12049, - "end": 12092, + "start": 12089, + "end": 12132, "loc": { "start": { - "line": 348, + "line": 349, "column": 10 }, "end": { - "line": 348, + "line": 349, "column": 53 } }, "id": { "type": "Identifier", - "start": 12049, - "end": 12060, + "start": 12089, + "end": 12100, "loc": { "start": { - "line": 348, + "line": 349, "column": 10 }, "end": { - "line": 348, + "line": 349, "column": 21 }, "identifierName": "metallicPBR" @@ -19750,29 +19801,29 @@ }, "init": { "type": "MemberExpression", - "start": 12063, - "end": 12092, + "start": 12103, + "end": 12132, "loc": { "start": { - "line": 348, + "line": 349, "column": 24 }, "end": { - "line": 348, + "line": 349, "column": 53 } }, "object": { "type": "Identifier", - "start": 12063, - "end": 12071, + "start": 12103, + "end": 12111, "loc": { "start": { - "line": 348, + "line": 349, "column": 24 }, "end": { - "line": 348, + "line": 349, "column": 32 }, "identifierName": "material" @@ -19781,15 +19832,15 @@ }, "property": { "type": "Identifier", - "start": 12072, - "end": 12092, + "start": 12112, + "end": 12132, "loc": { "start": { - "line": 348, + "line": 349, "column": 33 }, "end": { - "line": 348, + "line": 349, "column": 53 }, "identifierName": "pbrMetallicRoughness" @@ -19804,29 +19855,29 @@ }, { "type": "IfStatement", - "start": 12098, - "end": 12873, + "start": 12138, + "end": 12913, "loc": { "start": { - "line": 349, + "line": 350, "column": 4 }, "end": { - "line": 365, + "line": 366, "column": 5 } }, "test": { "type": "Identifier", - "start": 12102, - "end": 12113, + "start": 12142, + "end": 12153, "loc": { "start": { - "line": 349, + "line": 350, "column": 8 }, "end": { - "line": 349, + "line": 350, "column": 19 }, "identifierName": "metallicPBR" @@ -19835,59 +19886,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 12115, - "end": 12873, + "start": 12155, + "end": 12913, "loc": { "start": { - "line": 349, + "line": 350, "column": 21 }, "end": { - "line": 365, + "line": 366, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 12125, - "end": 12177, + "start": 12165, + "end": 12217, "loc": { "start": { - "line": 350, + "line": 351, "column": 8 }, "end": { - "line": 350, + "line": 351, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12131, - "end": 12176, + "start": 12171, + "end": 12216, "loc": { "start": { - "line": 350, + "line": 351, "column": 14 }, "end": { - "line": 350, + "line": 351, "column": 59 } }, "id": { "type": "Identifier", - "start": 12131, - "end": 12146, + "start": 12171, + "end": 12186, "loc": { "start": { - "line": 350, + "line": 351, "column": 14 }, "end": { - "line": 350, + "line": 351, "column": 29 }, "identifierName": "baseColorFactor" @@ -19896,29 +19947,29 @@ }, "init": { "type": "MemberExpression", - "start": 12149, - "end": 12176, + "start": 12189, + "end": 12216, "loc": { "start": { - "line": 350, + "line": 351, "column": 32 }, "end": { - "line": 350, + "line": 351, "column": 59 } }, "object": { "type": "Identifier", - "start": 12149, - "end": 12160, + "start": 12189, + "end": 12200, "loc": { "start": { - "line": 350, + "line": 351, "column": 32 }, "end": { - "line": 350, + "line": 351, "column": 43 }, "identifierName": "metallicPBR" @@ -19927,15 +19978,15 @@ }, "property": { "type": "Identifier", - "start": 12161, - "end": 12176, + "start": 12201, + "end": 12216, "loc": { "start": { - "line": 350, + "line": 351, "column": 44 }, "end": { - "line": 350, + "line": 351, "column": 59 }, "identifierName": "baseColorFactor" @@ -19950,29 +20001,29 @@ }, { "type": "IfStatement", - "start": 12186, - "end": 12465, + "start": 12226, + "end": 12505, "loc": { "start": { - "line": 351, + "line": 352, "column": 8 }, "end": { - "line": 356, + "line": 357, "column": 9 } }, "test": { "type": "Identifier", - "start": 12190, - "end": 12205, + "start": 12230, + "end": 12245, "loc": { "start": { - "line": 351, + "line": 352, "column": 12 }, "end": { - "line": 351, + "line": 352, "column": 27 }, "identifierName": "baseColorFactor" @@ -19981,87 +20032,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 12207, - "end": 12465, + "start": 12247, + "end": 12505, "loc": { "start": { - "line": 351, + "line": 352, "column": 29 }, "end": { - "line": 356, + "line": 357, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 12221, - "end": 12270, + "start": 12261, + "end": 12310, "loc": { "start": { - "line": 352, + "line": 353, "column": 12 }, "end": { - "line": 352, + "line": 353, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 12221, - "end": 12269, + "start": 12261, + "end": 12309, "loc": { "start": { - "line": 352, + "line": 353, "column": 12 }, "end": { - "line": 352, + "line": 353, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12221, - "end": 12248, + "start": 12261, + "end": 12288, "loc": { "start": { - "line": 352, + "line": 353, "column": 12 }, "end": { - "line": 352, + "line": 353, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 12221, - "end": 12245, + "start": 12261, + "end": 12285, "loc": { "start": { - "line": 352, + "line": 353, "column": 12 }, "end": { - "line": 352, + "line": 353, "column": 36 } }, "object": { "type": "Identifier", - "start": 12221, - "end": 12239, + "start": 12261, + "end": 12279, "loc": { "start": { - "line": 352, + "line": 353, "column": 12 }, "end": { - "line": 352, + "line": 353, "column": 30 }, "identifierName": "materialAttributes" @@ -20070,15 +20121,15 @@ }, "property": { "type": "Identifier", - "start": 12240, - "end": 12245, + "start": 12280, + "end": 12285, "loc": { "start": { - "line": 352, + "line": 353, "column": 31 }, "end": { - "line": 352, + "line": 353, "column": 36 }, "identifierName": "color" @@ -20089,15 +20140,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12246, - "end": 12247, + "start": 12286, + "end": 12287, "loc": { "start": { - "line": 352, + "line": 353, "column": 37 }, "end": { - "line": 352, + "line": 353, "column": 38 } }, @@ -20111,29 +20162,29 @@ }, "right": { "type": "MemberExpression", - "start": 12251, - "end": 12269, + "start": 12291, + "end": 12309, "loc": { "start": { - "line": 352, + "line": 353, "column": 42 }, "end": { - "line": 352, + "line": 353, "column": 60 } }, "object": { "type": "Identifier", - "start": 12251, - "end": 12266, + "start": 12291, + "end": 12306, "loc": { "start": { - "line": 352, + "line": 353, "column": 42 }, "end": { - "line": 352, + "line": 353, "column": 57 }, "identifierName": "baseColorFactor" @@ -20142,15 +20193,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12267, - "end": 12268, + "start": 12307, + "end": 12308, "loc": { "start": { - "line": 352, + "line": 353, "column": 58 }, "end": { - "line": 352, + "line": 353, "column": 59 } }, @@ -20166,72 +20217,72 @@ }, { "type": "ExpressionStatement", - "start": 12283, - "end": 12332, + "start": 12323, + "end": 12372, "loc": { "start": { - "line": 353, + "line": 354, "column": 12 }, "end": { - "line": 353, + "line": 354, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 12283, - "end": 12331, + "start": 12323, + "end": 12371, "loc": { "start": { - "line": 353, + "line": 354, "column": 12 }, "end": { - "line": 353, + "line": 354, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12283, - "end": 12310, + "start": 12323, + "end": 12350, "loc": { "start": { - "line": 353, + "line": 354, "column": 12 }, "end": { - "line": 353, + "line": 354, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 12283, - "end": 12307, + "start": 12323, + "end": 12347, "loc": { "start": { - "line": 353, + "line": 354, "column": 12 }, "end": { - "line": 353, + "line": 354, "column": 36 } }, "object": { "type": "Identifier", - "start": 12283, - "end": 12301, + "start": 12323, + "end": 12341, "loc": { "start": { - "line": 353, + "line": 354, "column": 12 }, "end": { - "line": 353, + "line": 354, "column": 30 }, "identifierName": "materialAttributes" @@ -20240,15 +20291,15 @@ }, "property": { "type": "Identifier", - "start": 12302, - "end": 12307, + "start": 12342, + "end": 12347, "loc": { "start": { - "line": 353, + "line": 354, "column": 31 }, "end": { - "line": 353, + "line": 354, "column": 36 }, "identifierName": "color" @@ -20259,15 +20310,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12308, - "end": 12309, + "start": 12348, + "end": 12349, "loc": { "start": { - "line": 353, + "line": 354, "column": 37 }, "end": { - "line": 353, + "line": 354, "column": 38 } }, @@ -20281,29 +20332,29 @@ }, "right": { "type": "MemberExpression", - "start": 12313, - "end": 12331, + "start": 12353, + "end": 12371, "loc": { "start": { - "line": 353, + "line": 354, "column": 42 }, "end": { - "line": 353, + "line": 354, "column": 60 } }, "object": { "type": "Identifier", - "start": 12313, - "end": 12328, + "start": 12353, + "end": 12368, "loc": { "start": { - "line": 353, + "line": 354, "column": 42 }, "end": { - "line": 353, + "line": 354, "column": 57 }, "identifierName": "baseColorFactor" @@ -20312,15 +20363,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12329, - "end": 12330, + "start": 12369, + "end": 12370, "loc": { "start": { - "line": 353, + "line": 354, "column": 58 }, "end": { - "line": 353, + "line": 354, "column": 59 } }, @@ -20336,72 +20387,72 @@ }, { "type": "ExpressionStatement", - "start": 12345, - "end": 12394, + "start": 12385, + "end": 12434, "loc": { "start": { - "line": 354, + "line": 355, "column": 12 }, "end": { - "line": 354, + "line": 355, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 12345, - "end": 12393, + "start": 12385, + "end": 12433, "loc": { "start": { - "line": 354, + "line": 355, "column": 12 }, "end": { - "line": 354, + "line": 355, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12345, - "end": 12372, + "start": 12385, + "end": 12412, "loc": { "start": { - "line": 354, + "line": 355, "column": 12 }, "end": { - "line": 354, + "line": 355, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 12345, - "end": 12369, + "start": 12385, + "end": 12409, "loc": { "start": { - "line": 354, + "line": 355, "column": 12 }, "end": { - "line": 354, + "line": 355, "column": 36 } }, "object": { "type": "Identifier", - "start": 12345, - "end": 12363, + "start": 12385, + "end": 12403, "loc": { "start": { - "line": 354, + "line": 355, "column": 12 }, "end": { - "line": 354, + "line": 355, "column": 30 }, "identifierName": "materialAttributes" @@ -20410,15 +20461,15 @@ }, "property": { "type": "Identifier", - "start": 12364, - "end": 12369, + "start": 12404, + "end": 12409, "loc": { "start": { - "line": 354, + "line": 355, "column": 31 }, "end": { - "line": 354, + "line": 355, "column": 36 }, "identifierName": "color" @@ -20429,15 +20480,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12370, - "end": 12371, + "start": 12410, + "end": 12411, "loc": { "start": { - "line": 354, + "line": 355, "column": 37 }, "end": { - "line": 354, + "line": 355, "column": 38 } }, @@ -20451,29 +20502,29 @@ }, "right": { "type": "MemberExpression", - "start": 12375, - "end": 12393, + "start": 12415, + "end": 12433, "loc": { "start": { - "line": 354, + "line": 355, "column": 42 }, "end": { - "line": 354, + "line": 355, "column": 60 } }, "object": { "type": "Identifier", - "start": 12375, - "end": 12390, + "start": 12415, + "end": 12430, "loc": { "start": { - "line": 354, + "line": 355, "column": 42 }, "end": { - "line": 354, + "line": 355, "column": 57 }, "identifierName": "baseColorFactor" @@ -20482,15 +20533,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12391, - "end": 12392, + "start": 12431, + "end": 12432, "loc": { "start": { - "line": 354, + "line": 355, "column": 58 }, "end": { - "line": 354, + "line": 355, "column": 59 } }, @@ -20506,58 +20557,58 @@ }, { "type": "ExpressionStatement", - "start": 12407, - "end": 12455, + "start": 12447, + "end": 12495, "loc": { "start": { - "line": 355, + "line": 356, "column": 12 }, "end": { - "line": 355, + "line": 356, "column": 60 } }, "expression": { "type": "AssignmentExpression", - "start": 12407, - "end": 12454, + "start": 12447, + "end": 12494, "loc": { "start": { - "line": 355, + "line": 356, "column": 12 }, "end": { - "line": 355, + "line": 356, "column": 59 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12407, - "end": 12433, + "start": 12447, + "end": 12473, "loc": { "start": { - "line": 355, + "line": 356, "column": 12 }, "end": { - "line": 355, + "line": 356, "column": 38 } }, "object": { "type": "Identifier", - "start": 12407, - "end": 12425, + "start": 12447, + "end": 12465, "loc": { "start": { - "line": 355, + "line": 356, "column": 12 }, "end": { - "line": 355, + "line": 356, "column": 30 }, "identifierName": "materialAttributes" @@ -20566,15 +20617,15 @@ }, "property": { "type": "Identifier", - "start": 12426, - "end": 12433, + "start": 12466, + "end": 12473, "loc": { "start": { - "line": 355, + "line": 356, "column": 31 }, "end": { - "line": 355, + "line": 356, "column": 38 }, "identifierName": "opacity" @@ -20585,29 +20636,29 @@ }, "right": { "type": "MemberExpression", - "start": 12436, - "end": 12454, + "start": 12476, + "end": 12494, "loc": { "start": { - "line": 355, + "line": 356, "column": 41 }, "end": { - "line": 355, + "line": 356, "column": 59 } }, "object": { "type": "Identifier", - "start": 12436, - "end": 12451, + "start": 12476, + "end": 12491, "loc": { "start": { - "line": 355, + "line": 356, "column": 41 }, "end": { - "line": 355, + "line": 356, "column": 56 }, "identifierName": "baseColorFactor" @@ -20616,15 +20667,15 @@ }, "property": { "type": "NumericLiteral", - "start": 12452, - "end": 12453, + "start": 12492, + "end": 12493, "loc": { "start": { - "line": 355, + "line": 356, "column": 57 }, "end": { - "line": 355, + "line": 356, "column": 58 } }, @@ -20645,44 +20696,44 @@ }, { "type": "VariableDeclaration", - "start": 12474, - "end": 12524, + "start": 12514, + "end": 12564, "loc": { "start": { - "line": 357, + "line": 358, "column": 8 }, "end": { - "line": 357, + "line": 358, "column": 58 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12480, - "end": 12523, + "start": 12520, + "end": 12563, "loc": { "start": { - "line": 357, + "line": 358, "column": 14 }, "end": { - "line": 357, + "line": 358, "column": 57 } }, "id": { "type": "Identifier", - "start": 12480, - "end": 12494, + "start": 12520, + "end": 12534, "loc": { "start": { - "line": 357, + "line": 358, "column": 14 }, "end": { - "line": 357, + "line": 358, "column": 28 }, "identifierName": "metallicFactor" @@ -20691,29 +20742,29 @@ }, "init": { "type": "MemberExpression", - "start": 12497, - "end": 12523, + "start": 12537, + "end": 12563, "loc": { "start": { - "line": 357, + "line": 358, "column": 31 }, "end": { - "line": 357, + "line": 358, "column": 57 } }, "object": { "type": "Identifier", - "start": 12497, - "end": 12508, + "start": 12537, + "end": 12548, "loc": { "start": { - "line": 357, + "line": 358, "column": 31 }, "end": { - "line": 357, + "line": 358, "column": 42 }, "identifierName": "metallicPBR" @@ -20722,15 +20773,15 @@ }, "property": { "type": "Identifier", - "start": 12509, - "end": 12523, + "start": 12549, + "end": 12563, "loc": { "start": { - "line": 357, + "line": 358, "column": 43 }, "end": { - "line": 357, + "line": 358, "column": 57 }, "identifierName": "metallicFactor" @@ -20745,57 +20796,57 @@ }, { "type": "IfStatement", - "start": 12533, - "end": 12663, + "start": 12573, + "end": 12703, "loc": { "start": { - "line": 358, + "line": 359, "column": 8 }, "end": { - "line": 360, + "line": 361, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 12537, - "end": 12592, + "start": 12577, + "end": 12632, "loc": { "start": { - "line": 358, + "line": 359, "column": 12 }, "end": { - "line": 358, + "line": 359, "column": 67 } }, "left": { "type": "BinaryExpression", - "start": 12537, - "end": 12560, + "start": 12577, + "end": 12600, "loc": { "start": { - "line": 358, + "line": 359, "column": 12 }, "end": { - "line": 358, + "line": 359, "column": 35 } }, "left": { "type": "Identifier", - "start": 12537, - "end": 12551, + "start": 12577, + "end": 12591, "loc": { "start": { - "line": 358, + "line": 359, "column": 12 }, "end": { - "line": 358, + "line": 359, "column": 26 }, "identifierName": "metallicFactor" @@ -20805,15 +20856,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 12556, - "end": 12560, + "start": 12596, + "end": 12600, "loc": { "start": { - "line": 358, + "line": 359, "column": 31 }, "end": { - "line": 358, + "line": 359, "column": 35 } } @@ -20822,29 +20873,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 12564, - "end": 12592, + "start": 12604, + "end": 12632, "loc": { "start": { - "line": 358, + "line": 359, "column": 39 }, "end": { - "line": 358, + "line": 359, "column": 67 } }, "left": { "type": "Identifier", - "start": 12564, - "end": 12578, + "start": 12604, + "end": 12618, "loc": { "start": { - "line": 358, + "line": 359, "column": 39 }, "end": { - "line": 358, + "line": 359, "column": 53 }, "identifierName": "metallicFactor" @@ -20854,15 +20905,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 12583, - "end": 12592, + "start": 12623, + "end": 12632, "loc": { "start": { - "line": 358, + "line": 359, "column": 58 }, "end": { - "line": 358, + "line": 359, "column": 67 }, "identifierName": "undefined" @@ -20873,73 +20924,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 12594, - "end": 12663, + "start": 12634, + "end": 12703, "loc": { "start": { - "line": 358, + "line": 359, "column": 69 }, "end": { - "line": 360, + "line": 361, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 12608, - "end": 12653, + "start": 12648, + "end": 12693, "loc": { "start": { - "line": 359, + "line": 360, "column": 12 }, "end": { - "line": 359, + "line": 360, "column": 57 } }, "expression": { "type": "AssignmentExpression", - "start": 12608, - "end": 12652, + "start": 12648, + "end": 12692, "loc": { "start": { - "line": 359, + "line": 360, "column": 12 }, "end": { - "line": 359, + "line": 360, "column": 56 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12608, - "end": 12635, + "start": 12648, + "end": 12675, "loc": { "start": { - "line": 359, + "line": 360, "column": 12 }, "end": { - "line": 359, + "line": 360, "column": 39 } }, "object": { "type": "Identifier", - "start": 12608, - "end": 12626, + "start": 12648, + "end": 12666, "loc": { "start": { - "line": 359, + "line": 360, "column": 12 }, "end": { - "line": 359, + "line": 360, "column": 30 }, "identifierName": "materialAttributes" @@ -20948,15 +20999,15 @@ }, "property": { "type": "Identifier", - "start": 12627, - "end": 12635, + "start": 12667, + "end": 12675, "loc": { "start": { - "line": 359, + "line": 360, "column": 31 }, "end": { - "line": 359, + "line": 360, "column": 39 }, "identifierName": "metallic" @@ -20967,15 +21018,15 @@ }, "right": { "type": "Identifier", - "start": 12638, - "end": 12652, + "start": 12678, + "end": 12692, "loc": { "start": { - "line": 359, + "line": 360, "column": 42 }, "end": { - "line": 359, + "line": 360, "column": 56 }, "identifierName": "metallicFactor" @@ -20991,44 +21042,44 @@ }, { "type": "VariableDeclaration", - "start": 12672, - "end": 12724, + "start": 12712, + "end": 12764, "loc": { "start": { - "line": 361, + "line": 362, "column": 8 }, "end": { - "line": 361, + "line": 362, "column": 60 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12678, - "end": 12723, + "start": 12718, + "end": 12763, "loc": { "start": { - "line": 361, + "line": 362, "column": 14 }, "end": { - "line": 361, + "line": 362, "column": 59 } }, "id": { "type": "Identifier", - "start": 12678, - "end": 12693, + "start": 12718, + "end": 12733, "loc": { "start": { - "line": 361, + "line": 362, "column": 14 }, "end": { - "line": 361, + "line": 362, "column": 29 }, "identifierName": "roughnessFactor" @@ -21037,29 +21088,29 @@ }, "init": { "type": "MemberExpression", - "start": 12696, - "end": 12723, + "start": 12736, + "end": 12763, "loc": { "start": { - "line": 361, + "line": 362, "column": 32 }, "end": { - "line": 361, + "line": 362, "column": 59 } }, "object": { "type": "Identifier", - "start": 12696, - "end": 12707, + "start": 12736, + "end": 12747, "loc": { "start": { - "line": 361, + "line": 362, "column": 32 }, "end": { - "line": 361, + "line": 362, "column": 43 }, "identifierName": "metallicPBR" @@ -21068,15 +21119,15 @@ }, "property": { "type": "Identifier", - "start": 12708, - "end": 12723, + "start": 12748, + "end": 12763, "loc": { "start": { - "line": 361, + "line": 362, "column": 44 }, "end": { - "line": 361, + "line": 362, "column": 59 }, "identifierName": "roughnessFactor" @@ -21091,57 +21142,57 @@ }, { "type": "IfStatement", - "start": 12733, - "end": 12867, + "start": 12773, + "end": 12907, "loc": { "start": { - "line": 362, + "line": 363, "column": 8 }, "end": { - "line": 364, + "line": 365, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 12737, - "end": 12794, + "start": 12777, + "end": 12834, "loc": { "start": { - "line": 362, + "line": 363, "column": 12 }, "end": { - "line": 362, + "line": 363, "column": 69 } }, "left": { "type": "BinaryExpression", - "start": 12737, - "end": 12761, + "start": 12777, + "end": 12801, "loc": { "start": { - "line": 362, + "line": 363, "column": 12 }, "end": { - "line": 362, + "line": 363, "column": 36 } }, "left": { "type": "Identifier", - "start": 12737, - "end": 12752, + "start": 12777, + "end": 12792, "loc": { "start": { - "line": 362, + "line": 363, "column": 12 }, "end": { - "line": 362, + "line": 363, "column": 27 }, "identifierName": "roughnessFactor" @@ -21151,15 +21202,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 12757, - "end": 12761, + "start": 12797, + "end": 12801, "loc": { "start": { - "line": 362, + "line": 363, "column": 32 }, "end": { - "line": 362, + "line": 363, "column": 36 } } @@ -21168,29 +21219,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 12765, - "end": 12794, + "start": 12805, + "end": 12834, "loc": { "start": { - "line": 362, + "line": 363, "column": 40 }, "end": { - "line": 362, + "line": 363, "column": 69 } }, "left": { "type": "Identifier", - "start": 12765, - "end": 12780, + "start": 12805, + "end": 12820, "loc": { "start": { - "line": 362, + "line": 363, "column": 40 }, "end": { - "line": 362, + "line": 363, "column": 55 }, "identifierName": "roughnessFactor" @@ -21200,15 +21251,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 12785, - "end": 12794, + "start": 12825, + "end": 12834, "loc": { "start": { - "line": 362, + "line": 363, "column": 60 }, "end": { - "line": 362, + "line": 363, "column": 69 }, "identifierName": "undefined" @@ -21219,73 +21270,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 12796, - "end": 12867, + "start": 12836, + "end": 12907, "loc": { "start": { - "line": 362, + "line": 363, "column": 71 }, "end": { - "line": 364, + "line": 365, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 12810, - "end": 12857, + "start": 12850, + "end": 12897, "loc": { "start": { - "line": 363, + "line": 364, "column": 12 }, "end": { - "line": 363, + "line": 364, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 12810, - "end": 12856, + "start": 12850, + "end": 12896, "loc": { "start": { - "line": 363, + "line": 364, "column": 12 }, "end": { - "line": 363, + "line": 364, "column": 58 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 12810, - "end": 12838, + "start": 12850, + "end": 12878, "loc": { "start": { - "line": 363, + "line": 364, "column": 12 }, "end": { - "line": 363, + "line": 364, "column": 40 } }, "object": { "type": "Identifier", - "start": 12810, - "end": 12828, + "start": 12850, + "end": 12868, "loc": { "start": { - "line": 363, + "line": 364, "column": 12 }, "end": { - "line": 363, + "line": 364, "column": 30 }, "identifierName": "materialAttributes" @@ -21294,15 +21345,15 @@ }, "property": { "type": "Identifier", - "start": 12829, - "end": 12838, + "start": 12869, + "end": 12878, "loc": { "start": { - "line": 363, + "line": 364, "column": 31 }, "end": { - "line": 363, + "line": 364, "column": 40 }, "identifierName": "roughness" @@ -21313,15 +21364,15 @@ }, "right": { "type": "Identifier", - "start": 12841, - "end": 12856, + "start": 12881, + "end": 12896, "loc": { "start": { - "line": 363, + "line": 364, "column": 43 }, "end": { - "line": 363, + "line": 364, "column": 58 }, "identifierName": "roughnessFactor" @@ -21342,29 +21393,29 @@ }, { "type": "ReturnStatement", - "start": 12878, - "end": 12904, + "start": 12918, + "end": 12944, "loc": { "start": { - "line": 366, + "line": 367, "column": 4 }, "end": { - "line": 366, + "line": 367, "column": 30 } }, "argument": { "type": "Identifier", - "start": 12885, - "end": 12903, + "start": 12925, + "end": 12943, "loc": { "start": { - "line": 366, + "line": 367, "column": 11 }, "end": { - "line": 366, + "line": 367, "column": 29 }, "identifierName": "materialAttributes" @@ -21378,29 +21429,29 @@ }, { "type": "FunctionDeclaration", - "start": 12908, - "end": 13150, + "start": 12948, + "end": 13190, "loc": { "start": { - "line": 369, + "line": 370, "column": 0 }, "end": { - "line": 377, + "line": 378, "column": 1 } }, "id": { "type": "Identifier", - "start": 12917, - "end": 12934, + "start": 12957, + "end": 12974, "loc": { "start": { - "line": 369, + "line": 370, "column": 9 }, "end": { - "line": 369, + "line": 370, "column": 26 }, "identifierName": "parseDefaultScene" @@ -21413,15 +21464,15 @@ "params": [ { "type": "Identifier", - "start": 12935, - "end": 12938, + "start": 12975, + "end": 12978, "loc": { "start": { - "line": 369, + "line": 370, "column": 27 }, "end": { - "line": 369, + "line": 370, "column": 30 }, "identifierName": "ctx" @@ -21431,59 +21482,59 @@ ], "body": { "type": "BlockStatement", - "start": 12940, - "end": 13150, + "start": 12980, + "end": 13190, "loc": { "start": { - "line": 369, + "line": 370, "column": 32 }, "end": { - "line": 377, + "line": 378, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 12946, - "end": 12976, + "start": 12986, + "end": 13016, "loc": { "start": { - "line": 370, + "line": 371, "column": 4 }, "end": { - "line": 370, + "line": 371, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12952, - "end": 12975, + "start": 12992, + "end": 13015, "loc": { "start": { - "line": 370, + "line": 371, "column": 10 }, "end": { - "line": 370, + "line": 371, "column": 33 } }, "id": { "type": "Identifier", - "start": 12952, - "end": 12960, + "start": 12992, + "end": 13000, "loc": { "start": { - "line": 370, + "line": 371, "column": 10 }, "end": { - "line": 370, + "line": 371, "column": 18 }, "identifierName": "gltfData" @@ -21492,29 +21543,29 @@ }, "init": { "type": "MemberExpression", - "start": 12963, - "end": 12975, + "start": 13003, + "end": 13015, "loc": { "start": { - "line": 370, + "line": 371, "column": 21 }, "end": { - "line": 370, + "line": 371, "column": 33 } }, "object": { "type": "Identifier", - "start": 12963, - "end": 12966, + "start": 13003, + "end": 13006, "loc": { "start": { - "line": 370, + "line": 371, "column": 21 }, "end": { - "line": 370, + "line": 371, "column": 24 }, "identifierName": "ctx" @@ -21523,15 +21574,15 @@ }, "property": { "type": "Identifier", - "start": 12967, - "end": 12975, + "start": 13007, + "end": 13015, "loc": { "start": { - "line": 370, + "line": 371, "column": 25 }, "end": { - "line": 370, + "line": 371, "column": 33 }, "identifierName": "gltfData" @@ -21546,44 +21597,44 @@ }, { "type": "VariableDeclaration", - "start": 12981, - "end": 13032, + "start": 13021, + "end": 13072, "loc": { "start": { - "line": 371, + "line": 372, "column": 4 }, "end": { - "line": 371, + "line": 372, "column": 55 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 12987, - "end": 13031, + "start": 13027, + "end": 13071, "loc": { "start": { - "line": 371, + "line": 372, "column": 10 }, "end": { - "line": 371, + "line": 372, "column": 54 } }, "id": { "type": "Identifier", - "start": 12987, - "end": 12992, + "start": 13027, + "end": 13032, "loc": { "start": { - "line": 371, + "line": 372, "column": 10 }, "end": { - "line": 371, + "line": 372, "column": 15 }, "identifierName": "scene" @@ -21592,43 +21643,43 @@ }, "init": { "type": "LogicalExpression", - "start": 12995, - "end": 13031, + "start": 13035, + "end": 13071, "loc": { "start": { - "line": 371, + "line": 372, "column": 18 }, "end": { - "line": 371, + "line": 372, "column": 54 } }, "left": { "type": "MemberExpression", - "start": 12995, - "end": 13009, + "start": 13035, + "end": 13049, "loc": { "start": { - "line": 371, + "line": 372, "column": 18 }, "end": { - "line": 371, + "line": 372, "column": 32 } }, "object": { "type": "Identifier", - "start": 12995, - "end": 13003, + "start": 13035, + "end": 13043, "loc": { "start": { - "line": 371, + "line": 372, "column": 18 }, "end": { - "line": 371, + "line": 372, "column": 26 }, "identifierName": "gltfData" @@ -21637,15 +21688,15 @@ }, "property": { "type": "Identifier", - "start": 13004, - "end": 13009, + "start": 13044, + "end": 13049, "loc": { "start": { - "line": 371, + "line": 372, "column": 27 }, "end": { - "line": 371, + "line": 372, "column": 32 }, "identifierName": "scene" @@ -21657,43 +21708,43 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 13013, - "end": 13031, + "start": 13053, + "end": 13071, "loc": { "start": { - "line": 371, + "line": 372, "column": 36 }, "end": { - "line": 371, + "line": 372, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 13013, - "end": 13028, + "start": 13053, + "end": 13068, "loc": { "start": { - "line": 371, + "line": 372, "column": 36 }, "end": { - "line": 371, + "line": 372, "column": 51 } }, "object": { "type": "Identifier", - "start": 13013, - "end": 13021, + "start": 13053, + "end": 13061, "loc": { "start": { - "line": 371, + "line": 372, "column": 36 }, "end": { - "line": 371, + "line": 372, "column": 44 }, "identifierName": "gltfData" @@ -21702,15 +21753,15 @@ }, "property": { "type": "Identifier", - "start": 13022, - "end": 13028, + "start": 13062, + "end": 13068, "loc": { "start": { - "line": 371, + "line": 372, "column": 45 }, "end": { - "line": 371, + "line": 372, "column": 51 }, "identifierName": "scenes" @@ -21721,15 +21772,15 @@ }, "property": { "type": "NumericLiteral", - "start": 13029, - "end": 13030, + "start": 13069, + "end": 13070, "loc": { "start": { - "line": 371, + "line": 372, "column": 52 }, "end": { - "line": 371, + "line": 372, "column": 53 } }, @@ -21748,29 +21799,29 @@ }, { "type": "IfStatement", - "start": 13037, - "end": 13120, + "start": 13077, + "end": 13160, "loc": { "start": { - "line": 372, + "line": 373, "column": 4 }, "end": { - "line": 375, + "line": 376, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 13041, - "end": 13047, + "start": 13081, + "end": 13087, "loc": { "start": { - "line": 372, + "line": 373, "column": 8 }, "end": { - "line": 372, + "line": 373, "column": 14 } }, @@ -21778,15 +21829,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 13042, - "end": 13047, + "start": 13082, + "end": 13087, "loc": { "start": { - "line": 372, + "line": 373, "column": 9 }, "end": { - "line": 372, + "line": 373, "column": 14 }, "identifierName": "scene" @@ -21799,72 +21850,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 13049, - "end": 13120, + "start": 13089, + "end": 13160, "loc": { "start": { - "line": 372, + "line": 373, "column": 16 }, "end": { - "line": 375, + "line": 376, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 13059, - "end": 13098, + "start": 13099, + "end": 13138, "loc": { "start": { - "line": 373, + "line": 374, "column": 8 }, "end": { - "line": 373, + "line": 374, "column": 47 } }, "expression": { "type": "CallExpression", - "start": 13059, - "end": 13097, + "start": 13099, + "end": 13137, "loc": { "start": { - "line": 373, + "line": 374, "column": 8 }, "end": { - "line": 373, + "line": 374, "column": 46 } }, "callee": { "type": "MemberExpression", - "start": 13059, - "end": 13068, + "start": 13099, + "end": 13108, "loc": { "start": { - "line": 373, + "line": 374, "column": 8 }, "end": { - "line": 373, + "line": 374, "column": 17 } }, "object": { "type": "Identifier", - "start": 13059, - "end": 13062, + "start": 13099, + "end": 13102, "loc": { "start": { - "line": 373, + "line": 374, "column": 8 }, "end": { - "line": 373, + "line": 374, "column": 11 }, "identifierName": "ctx" @@ -21873,15 +21924,15 @@ }, "property": { "type": "Identifier", - "start": 13063, - "end": 13068, + "start": 13103, + "end": 13108, "loc": { "start": { - "line": 373, + "line": 374, "column": 12 }, "end": { - "line": 373, + "line": 374, "column": 17 }, "identifierName": "error" @@ -21893,15 +21944,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 13069, - "end": 13096, + "start": 13109, + "end": 13136, "loc": { "start": { - "line": 373, + "line": 374, "column": 18 }, "end": { - "line": 373, + "line": 374, "column": 45 } }, @@ -21916,15 +21967,15 @@ }, { "type": "ReturnStatement", - "start": 13107, - "end": 13114, + "start": 13147, + "end": 13154, "loc": { "start": { - "line": 374, + "line": 375, "column": 8 }, "end": { - "line": 374, + "line": 375, "column": 15 } }, @@ -21937,43 +21988,43 @@ }, { "type": "ExpressionStatement", - "start": 13125, - "end": 13148, + "start": 13165, + "end": 13188, "loc": { "start": { - "line": 376, + "line": 377, "column": 4 }, "end": { - "line": 376, + "line": 377, "column": 27 } }, "expression": { "type": "CallExpression", - "start": 13125, - "end": 13147, + "start": 13165, + "end": 13187, "loc": { "start": { - "line": 376, + "line": 377, "column": 4 }, "end": { - "line": 376, + "line": 377, "column": 26 } }, "callee": { "type": "Identifier", - "start": 13125, - "end": 13135, + "start": 13165, + "end": 13175, "loc": { "start": { - "line": 376, + "line": 377, "column": 4 }, "end": { - "line": 376, + "line": 377, "column": 14 }, "identifierName": "parseScene" @@ -21983,15 +22034,15 @@ "arguments": [ { "type": "Identifier", - "start": 13136, - "end": 13139, + "start": 13176, + "end": 13179, "loc": { "start": { - "line": 376, + "line": 377, "column": 15 }, "end": { - "line": 376, + "line": 377, "column": 18 }, "identifierName": "ctx" @@ -22000,15 +22051,15 @@ }, { "type": "Identifier", - "start": 13141, - "end": 13146, + "start": 13181, + "end": 13186, "loc": { "start": { - "line": 376, + "line": 377, "column": 20 }, "end": { - "line": 376, + "line": 377, "column": 25 }, "identifierName": "scene" @@ -22024,29 +22075,29 @@ }, { "type": "FunctionDeclaration", - "start": 13152, - "end": 14082, + "start": 13192, + "end": 14122, "loc": { "start": { - "line": 379, + "line": 380, "column": 0 }, "end": { - "line": 406, + "line": 407, "column": 1 } }, "id": { "type": "Identifier", - "start": 13161, - "end": 13171, + "start": 13201, + "end": 13211, "loc": { "start": { - "line": 379, + "line": 380, "column": 9 }, "end": { - "line": 379, + "line": 380, "column": 19 }, "identifierName": "parseScene" @@ -22059,15 +22110,15 @@ "params": [ { "type": "Identifier", - "start": 13172, - "end": 13175, + "start": 13212, + "end": 13215, "loc": { "start": { - "line": 379, + "line": 380, "column": 20 }, "end": { - "line": 379, + "line": 380, "column": 23 }, "identifierName": "ctx" @@ -22076,15 +22127,15 @@ }, { "type": "Identifier", - "start": 13177, - "end": 13182, + "start": 13217, + "end": 13222, "loc": { "start": { - "line": 379, + "line": 380, "column": 25 }, "end": { - "line": 379, + "line": 380, "column": 30 }, "identifierName": "scene" @@ -22094,59 +22145,59 @@ ], "body": { "type": "BlockStatement", - "start": 13184, - "end": 14082, + "start": 13224, + "end": 14122, "loc": { "start": { - "line": 379, + "line": 380, "column": 32 }, "end": { - "line": 406, + "line": 407, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 13190, - "end": 13216, + "start": 13230, + "end": 13256, "loc": { "start": { - "line": 380, + "line": 381, "column": 4 }, "end": { - "line": 380, + "line": 381, "column": 30 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13196, - "end": 13215, + "start": 13236, + "end": 13255, "loc": { "start": { - "line": 380, + "line": 381, "column": 10 }, "end": { - "line": 380, + "line": 381, "column": 29 } }, "id": { "type": "Identifier", - "start": 13196, - "end": 13201, + "start": 13236, + "end": 13241, "loc": { "start": { - "line": 380, + "line": 381, "column": 10 }, "end": { - "line": 380, + "line": 381, "column": 15 }, "identifierName": "nodes" @@ -22155,29 +22206,29 @@ }, "init": { "type": "MemberExpression", - "start": 13204, - "end": 13215, + "start": 13244, + "end": 13255, "loc": { "start": { - "line": 380, + "line": 381, "column": 18 }, "end": { - "line": 380, + "line": 381, "column": 29 } }, "object": { "type": "Identifier", - "start": 13204, - "end": 13209, + "start": 13244, + "end": 13249, "loc": { "start": { - "line": 380, + "line": 381, "column": 18 }, "end": { - "line": 380, + "line": 381, "column": 23 }, "identifierName": "scene" @@ -22186,15 +22237,15 @@ }, "property": { "type": "Identifier", - "start": 13210, - "end": 13215, + "start": 13250, + "end": 13255, "loc": { "start": { - "line": 380, + "line": 381, "column": 24 }, "end": { - "line": 380, + "line": 381, "column": 29 }, "identifierName": "nodes" @@ -22209,29 +22260,29 @@ }, { "type": "IfStatement", - "start": 13221, - "end": 13256, + "start": 13261, + "end": 13296, "loc": { "start": { - "line": 381, + "line": 382, "column": 4 }, "end": { - "line": 383, + "line": 384, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 13225, - "end": 13231, + "start": 13265, + "end": 13271, "loc": { "start": { - "line": 381, + "line": 382, "column": 8 }, "end": { - "line": 381, + "line": 382, "column": 14 } }, @@ -22239,15 +22290,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 13226, - "end": 13231, + "start": 13266, + "end": 13271, "loc": { "start": { - "line": 381, + "line": 382, "column": 9 }, "end": { - "line": 381, + "line": 382, "column": 14 }, "identifierName": "nodes" @@ -22260,30 +22311,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 13233, - "end": 13256, + "start": 13273, + "end": 13296, "loc": { "start": { - "line": 381, + "line": 382, "column": 16 }, "end": { - "line": 383, + "line": 384, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 13243, - "end": 13250, + "start": 13283, + "end": 13290, "loc": { "start": { - "line": 382, + "line": 383, "column": 8 }, "end": { - "line": 382, + "line": 383, "column": 15 } }, @@ -22296,58 +22347,58 @@ }, { "type": "ForStatement", - "start": 13261, - "end": 13384, + "start": 13301, + "end": 13424, "loc": { "start": { - "line": 384, + "line": 385, "column": 4 }, "end": { - "line": 387, + "line": 388, "column": 5 } }, "init": { "type": "VariableDeclaration", - "start": 13266, - "end": 13295, + "start": 13306, + "end": 13335, "loc": { "start": { - "line": 384, + "line": 385, "column": 9 }, "end": { - "line": 384, + "line": 385, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13270, - "end": 13275, + "start": 13310, + "end": 13315, "loc": { "start": { - "line": 384, + "line": 385, "column": 13 }, "end": { - "line": 384, + "line": 385, "column": 18 } }, "id": { "type": "Identifier", - "start": 13270, - "end": 13271, + "start": 13310, + "end": 13311, "loc": { "start": { - "line": 384, + "line": 385, "column": 13 }, "end": { - "line": 384, + "line": 385, "column": 14 }, "identifierName": "i" @@ -22356,15 +22407,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13274, - "end": 13275, + "start": 13314, + "end": 13315, "loc": { "start": { - "line": 384, + "line": 385, "column": 17 }, "end": { - "line": 384, + "line": 385, "column": 18 } }, @@ -22377,29 +22428,29 @@ }, { "type": "VariableDeclarator", - "start": 13277, - "end": 13295, + "start": 13317, + "end": 13335, "loc": { "start": { - "line": 384, + "line": 385, "column": 20 }, "end": { - "line": 384, + "line": 385, "column": 38 } }, "id": { "type": "Identifier", - "start": 13277, - "end": 13280, + "start": 13317, + "end": 13320, "loc": { "start": { - "line": 384, + "line": 385, "column": 20 }, "end": { - "line": 384, + "line": 385, "column": 23 }, "identifierName": "len" @@ -22408,29 +22459,29 @@ }, "init": { "type": "MemberExpression", - "start": 13283, - "end": 13295, + "start": 13323, + "end": 13335, "loc": { "start": { - "line": 384, + "line": 385, "column": 26 }, "end": { - "line": 384, + "line": 385, "column": 38 } }, "object": { "type": "Identifier", - "start": 13283, - "end": 13288, + "start": 13323, + "end": 13328, "loc": { "start": { - "line": 384, + "line": 385, "column": 26 }, "end": { - "line": 384, + "line": 385, "column": 31 }, "identifierName": "nodes" @@ -22439,15 +22490,15 @@ }, "property": { "type": "Identifier", - "start": 13289, - "end": 13295, + "start": 13329, + "end": 13335, "loc": { "start": { - "line": 384, + "line": 385, "column": 32 }, "end": { - "line": 384, + "line": 385, "column": 38 }, "identifierName": "length" @@ -22462,29 +22513,29 @@ }, "test": { "type": "BinaryExpression", - "start": 13297, - "end": 13304, + "start": 13337, + "end": 13344, "loc": { "start": { - "line": 384, + "line": 385, "column": 40 }, "end": { - "line": 384, + "line": 385, "column": 47 } }, "left": { "type": "Identifier", - "start": 13297, - "end": 13298, + "start": 13337, + "end": 13338, "loc": { "start": { - "line": 384, + "line": 385, "column": 40 }, "end": { - "line": 384, + "line": 385, "column": 41 }, "identifierName": "i" @@ -22494,15 +22545,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13301, - "end": 13304, + "start": 13341, + "end": 13344, "loc": { "start": { - "line": 384, + "line": 385, "column": 44 }, "end": { - "line": 384, + "line": 385, "column": 47 }, "identifierName": "len" @@ -22512,15 +22563,15 @@ }, "update": { "type": "UpdateExpression", - "start": 13306, - "end": 13309, + "start": 13346, + "end": 13349, "loc": { "start": { - "line": 384, + "line": 385, "column": 49 }, "end": { - "line": 384, + "line": 385, "column": 52 } }, @@ -22528,15 +22579,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13306, - "end": 13307, + "start": 13346, + "end": 13347, "loc": { "start": { - "line": 384, + "line": 385, "column": 49 }, "end": { - "line": 384, + "line": 385, "column": 50 }, "identifierName": "i" @@ -22546,59 +22597,59 @@ }, "body": { "type": "BlockStatement", - "start": 13311, - "end": 13384, + "start": 13351, + "end": 13424, "loc": { "start": { - "line": 384, + "line": 385, "column": 54 }, "end": { - "line": 387, + "line": 388, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 13321, - "end": 13343, + "start": 13361, + "end": 13383, "loc": { "start": { - "line": 385, + "line": 386, "column": 8 }, "end": { - "line": 385, + "line": 386, "column": 30 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13327, - "end": 13342, + "start": 13367, + "end": 13382, "loc": { "start": { - "line": 385, + "line": 386, "column": 14 }, "end": { - "line": 385, + "line": 386, "column": 29 } }, "id": { "type": "Identifier", - "start": 13327, - "end": 13331, + "start": 13367, + "end": 13371, "loc": { "start": { - "line": 385, + "line": 386, "column": 14 }, "end": { - "line": 385, + "line": 386, "column": 18 }, "identifierName": "node" @@ -22607,29 +22658,29 @@ }, "init": { "type": "MemberExpression", - "start": 13334, - "end": 13342, + "start": 13374, + "end": 13382, "loc": { "start": { - "line": 385, + "line": 386, "column": 21 }, "end": { - "line": 385, + "line": 386, "column": 29 } }, "object": { "type": "Identifier", - "start": 13334, - "end": 13339, + "start": 13374, + "end": 13379, "loc": { "start": { - "line": 385, + "line": 386, "column": 21 }, "end": { - "line": 385, + "line": 386, "column": 26 }, "identifierName": "nodes" @@ -22638,15 +22689,15 @@ }, "property": { "type": "Identifier", - "start": 13340, - "end": 13341, + "start": 13380, + "end": 13381, "loc": { "start": { - "line": 385, + "line": 386, "column": 27 }, "end": { - "line": 385, + "line": 386, "column": 28 }, "identifierName": "i" @@ -22661,43 +22712,43 @@ }, { "type": "ExpressionStatement", - "start": 13352, - "end": 13378, + "start": 13392, + "end": 13418, "loc": { "start": { - "line": 386, + "line": 387, "column": 8 }, "end": { - "line": 386, + "line": 387, "column": 34 } }, "expression": { "type": "CallExpression", - "start": 13352, - "end": 13377, + "start": 13392, + "end": 13417, "loc": { "start": { - "line": 386, + "line": 387, "column": 8 }, "end": { - "line": 386, + "line": 387, "column": 33 } }, "callee": { "type": "Identifier", - "start": 13352, - "end": 13366, + "start": 13392, + "end": 13406, "loc": { "start": { - "line": 386, + "line": 387, "column": 8 }, "end": { - "line": 386, + "line": 387, "column": 22 }, "identifierName": "countMeshUsage" @@ -22707,15 +22758,15 @@ "arguments": [ { "type": "Identifier", - "start": 13367, - "end": 13370, + "start": 13407, + "end": 13410, "loc": { "start": { - "line": 386, + "line": 387, "column": 23 }, "end": { - "line": 386, + "line": 387, "column": 26 }, "identifierName": "ctx" @@ -22724,15 +22775,15 @@ }, { "type": "Identifier", - "start": 13372, - "end": 13376, + "start": 13412, + "end": 13416, "loc": { "start": { - "line": 386, + "line": 387, "column": 28 }, "end": { - "line": 386, + "line": 387, "column": 32 }, "identifierName": "node" @@ -22748,58 +22799,58 @@ }, { "type": "ForStatement", - "start": 13389, - "end": 13591, + "start": 13429, + "end": 13631, "loc": { "start": { - "line": 388, + "line": 389, "column": 4 }, "end": { - "line": 393, + "line": 394, "column": 5 } }, "init": { "type": "VariableDeclaration", - "start": 13394, - "end": 13423, + "start": 13434, + "end": 13463, "loc": { "start": { - "line": 388, + "line": 389, "column": 9 }, "end": { - "line": 388, + "line": 389, "column": 38 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13398, - "end": 13403, + "start": 13438, + "end": 13443, "loc": { "start": { - "line": 388, + "line": 389, "column": 13 }, "end": { - "line": 388, + "line": 389, "column": 18 } }, "id": { "type": "Identifier", - "start": 13398, - "end": 13399, + "start": 13438, + "end": 13439, "loc": { "start": { - "line": 388, + "line": 389, "column": 13 }, "end": { - "line": 388, + "line": 389, "column": 14 }, "identifierName": "i" @@ -22808,15 +22859,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13402, - "end": 13403, + "start": 13442, + "end": 13443, "loc": { "start": { - "line": 388, + "line": 389, "column": 17 }, "end": { - "line": 388, + "line": 389, "column": 18 } }, @@ -22829,29 +22880,29 @@ }, { "type": "VariableDeclarator", - "start": 13405, - "end": 13423, + "start": 13445, + "end": 13463, "loc": { "start": { - "line": 388, + "line": 389, "column": 20 }, "end": { - "line": 388, + "line": 389, "column": 38 } }, "id": { "type": "Identifier", - "start": 13405, - "end": 13408, + "start": 13445, + "end": 13448, "loc": { "start": { - "line": 388, + "line": 389, "column": 20 }, "end": { - "line": 388, + "line": 389, "column": 23 }, "identifierName": "len" @@ -22860,29 +22911,29 @@ }, "init": { "type": "MemberExpression", - "start": 13411, - "end": 13423, + "start": 13451, + "end": 13463, "loc": { "start": { - "line": 388, + "line": 389, "column": 26 }, "end": { - "line": 388, + "line": 389, "column": 38 } }, "object": { "type": "Identifier", - "start": 13411, - "end": 13416, + "start": 13451, + "end": 13456, "loc": { "start": { - "line": 388, + "line": 389, "column": 26 }, "end": { - "line": 388, + "line": 389, "column": 31 }, "identifierName": "nodes" @@ -22891,15 +22942,15 @@ }, "property": { "type": "Identifier", - "start": 13417, - "end": 13423, + "start": 13457, + "end": 13463, "loc": { "start": { - "line": 388, + "line": 389, "column": 32 }, "end": { - "line": 388, + "line": 389, "column": 38 }, "identifierName": "length" @@ -22914,43 +22965,43 @@ }, "test": { "type": "LogicalExpression", - "start": 13425, - "end": 13455, + "start": 13465, + "end": 13495, "loc": { "start": { - "line": 388, + "line": 389, "column": 40 }, "end": { - "line": 388, + "line": 389, "column": 70 } }, "left": { "type": "BinaryExpression", - "start": 13425, - "end": 13432, + "start": 13465, + "end": 13472, "loc": { "start": { - "line": 388, + "line": 389, "column": 40 }, "end": { - "line": 388, + "line": 389, "column": 47 } }, "left": { "type": "Identifier", - "start": 13425, - "end": 13426, + "start": 13465, + "end": 13466, "loc": { "start": { - "line": 388, + "line": 389, "column": 40 }, "end": { - "line": 388, + "line": 389, "column": 41 }, "identifierName": "i" @@ -22960,15 +23011,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13429, - "end": 13432, + "start": 13469, + "end": 13472, "loc": { "start": { - "line": 388, + "line": 389, "column": 44 }, "end": { - "line": 388, + "line": 389, "column": 47 }, "identifierName": "len" @@ -22979,15 +23030,15 @@ "operator": "&&", "right": { "type": "UnaryExpression", - "start": 13436, - "end": 13455, + "start": 13476, + "end": 13495, "loc": { "start": { - "line": 388, + "line": 389, "column": 51 }, "end": { - "line": 388, + "line": 389, "column": 70 } }, @@ -22995,29 +23046,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 13437, - "end": 13455, + "start": 13477, + "end": 13495, "loc": { "start": { - "line": 388, + "line": 389, "column": 52 }, "end": { - "line": 388, + "line": 389, "column": 70 } }, "object": { "type": "Identifier", - "start": 13437, - "end": 13440, + "start": 13477, + "end": 13480, "loc": { "start": { - "line": 388, + "line": 389, "column": 52 }, "end": { - "line": 388, + "line": 389, "column": 55 }, "identifierName": "ctx" @@ -23026,15 +23077,15 @@ }, "property": { "type": "Identifier", - "start": 13441, - "end": 13455, + "start": 13481, + "end": 13495, "loc": { "start": { - "line": 388, + "line": 389, "column": 56 }, "end": { - "line": 388, + "line": 389, "column": 70 }, "identifierName": "nodesHaveNames" @@ -23050,15 +23101,15 @@ }, "update": { "type": "UpdateExpression", - "start": 13457, - "end": 13460, + "start": 13497, + "end": 13500, "loc": { "start": { - "line": 388, + "line": 389, "column": 72 }, "end": { - "line": 388, + "line": 389, "column": 75 } }, @@ -23066,15 +23117,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13457, - "end": 13458, + "start": 13497, + "end": 13498, "loc": { "start": { - "line": 388, + "line": 389, "column": 72 }, "end": { - "line": 388, + "line": 389, "column": 73 }, "identifierName": "i" @@ -23084,59 +23135,59 @@ }, "body": { "type": "BlockStatement", - "start": 13462, - "end": 13591, + "start": 13502, + "end": 13631, "loc": { "start": { - "line": 388, + "line": 389, "column": 77 }, "end": { - "line": 393, + "line": 394, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 13472, - "end": 13494, + "start": 13512, + "end": 13534, "loc": { "start": { - "line": 389, + "line": 390, "column": 8 }, "end": { - "line": 389, + "line": 390, "column": 30 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13478, - "end": 13493, + "start": 13518, + "end": 13533, "loc": { "start": { - "line": 389, + "line": 390, "column": 14 }, "end": { - "line": 389, + "line": 390, "column": 29 } }, "id": { "type": "Identifier", - "start": 13478, - "end": 13482, + "start": 13518, + "end": 13522, "loc": { "start": { - "line": 389, + "line": 390, "column": 14 }, "end": { - "line": 389, + "line": 390, "column": 18 }, "identifierName": "node" @@ -23145,29 +23196,29 @@ }, "init": { "type": "MemberExpression", - "start": 13485, - "end": 13493, + "start": 13525, + "end": 13533, "loc": { "start": { - "line": 389, + "line": 390, "column": 21 }, "end": { - "line": 389, + "line": 390, "column": 29 } }, "object": { "type": "Identifier", - "start": 13485, - "end": 13490, + "start": 13525, + "end": 13530, "loc": { "start": { - "line": 389, + "line": 390, "column": 21 }, "end": { - "line": 389, + "line": 390, "column": 26 }, "identifierName": "nodes" @@ -23176,15 +23227,15 @@ }, "property": { "type": "Identifier", - "start": 13491, - "end": 13492, + "start": 13531, + "end": 13532, "loc": { "start": { - "line": 389, + "line": 390, "column": 27 }, "end": { - "line": 389, + "line": 390, "column": 28 }, "identifierName": "i" @@ -23199,43 +23250,43 @@ }, { "type": "IfStatement", - "start": 13503, - "end": 13585, + "start": 13543, + "end": 13625, "loc": { "start": { - "line": 390, + "line": 391, "column": 8 }, "end": { - "line": 392, + "line": 393, "column": 9 } }, "test": { "type": "CallExpression", - "start": 13507, - "end": 13533, + "start": 13547, + "end": 13573, "loc": { "start": { - "line": 390, + "line": 391, "column": 12 }, "end": { - "line": 390, + "line": 391, "column": 38 } }, "callee": { "type": "Identifier", - "start": 13507, - "end": 13527, + "start": 13547, + "end": 13567, "loc": { "start": { - "line": 390, + "line": 391, "column": 12 }, "end": { - "line": 390, + "line": 391, "column": 32 }, "identifierName": "testIfNodesHaveNames" @@ -23245,15 +23296,15 @@ "arguments": [ { "type": "Identifier", - "start": 13528, - "end": 13532, + "start": 13568, + "end": 13572, "loc": { "start": { - "line": 390, + "line": 391, "column": 33 }, "end": { - "line": 390, + "line": 391, "column": 37 }, "identifierName": "node" @@ -23264,73 +23315,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 13535, - "end": 13585, + "start": 13575, + "end": 13625, "loc": { "start": { - "line": 390, + "line": 391, "column": 40 }, "end": { - "line": 392, + "line": 393, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 13549, - "end": 13575, + "start": 13589, + "end": 13615, "loc": { "start": { - "line": 391, + "line": 392, "column": 12 }, "end": { - "line": 391, + "line": 392, "column": 38 } }, "expression": { "type": "AssignmentExpression", - "start": 13549, - "end": 13574, + "start": 13589, + "end": 13614, "loc": { "start": { - "line": 391, + "line": 392, "column": 12 }, "end": { - "line": 391, + "line": 392, "column": 37 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 13549, - "end": 13567, + "start": 13589, + "end": 13607, "loc": { "start": { - "line": 391, + "line": 392, "column": 12 }, "end": { - "line": 391, + "line": 392, "column": 30 } }, "object": { "type": "Identifier", - "start": 13549, - "end": 13552, + "start": 13589, + "end": 13592, "loc": { "start": { - "line": 391, + "line": 392, "column": 12 }, "end": { - "line": 391, + "line": 392, "column": 15 }, "identifierName": "ctx" @@ -23339,15 +23390,15 @@ }, "property": { "type": "Identifier", - "start": 13553, - "end": 13567, + "start": 13593, + "end": 13607, "loc": { "start": { - "line": 391, + "line": 392, "column": 16 }, "end": { - "line": 391, + "line": 392, "column": 30 }, "identifierName": "nodesHaveNames" @@ -23358,15 +23409,15 @@ }, "right": { "type": "BooleanLiteral", - "start": 13570, - "end": 13574, + "start": 13610, + "end": 13614, "loc": { "start": { - "line": 391, + "line": 392, "column": 33 }, "end": { - "line": 391, + "line": 392, "column": 37 } }, @@ -23385,29 +23436,29 @@ }, { "type": "IfStatement", - "start": 13596, - "end": 14080, + "start": 13636, + "end": 14120, "loc": { "start": { - "line": 394, + "line": 395, "column": 4 }, "end": { - "line": 405, + "line": 406, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 13600, - "end": 13619, + "start": 13640, + "end": 13659, "loc": { "start": { - "line": 394, + "line": 395, "column": 8 }, "end": { - "line": 394, + "line": 395, "column": 27 } }, @@ -23415,29 +23466,29 @@ "prefix": true, "argument": { "type": "MemberExpression", - "start": 13601, - "end": 13619, + "start": 13641, + "end": 13659, "loc": { "start": { - "line": 394, + "line": 395, "column": 9 }, "end": { - "line": 394, + "line": 395, "column": 27 } }, "object": { "type": "Identifier", - "start": 13601, - "end": 13604, + "start": 13641, + "end": 13644, "loc": { "start": { - "line": 394, + "line": 395, "column": 9 }, "end": { - "line": 394, + "line": 395, "column": 12 }, "identifierName": "ctx" @@ -23446,15 +23497,15 @@ }, "property": { "type": "Identifier", - "start": 13605, - "end": 13619, + "start": 13645, + "end": 13659, "loc": { "start": { - "line": 394, + "line": 395, "column": 13 }, "end": { - "line": 394, + "line": 395, "column": 27 }, "identifierName": "nodesHaveNames" @@ -23469,72 +23520,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 13621, - "end": 13909, + "start": 13661, + "end": 13949, "loc": { "start": { - "line": 394, + "line": 395, "column": 29 }, "end": { - "line": 400, + "line": 401, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 13631, - "end": 13742, + "start": 13671, + "end": 13782, "loc": { "start": { - "line": 395, + "line": 396, "column": 8 }, "end": { - "line": 395, + "line": 396, "column": 119 } }, "expression": { "type": "CallExpression", - "start": 13631, - "end": 13741, + "start": 13671, + "end": 13781, "loc": { "start": { - "line": 395, + "line": 396, "column": 8 }, "end": { - "line": 395, + "line": 396, "column": 118 } }, "callee": { "type": "MemberExpression", - "start": 13631, - "end": 13638, + "start": 13671, + "end": 13678, "loc": { "start": { - "line": 395, + "line": 396, "column": 8 }, "end": { - "line": 395, + "line": 396, "column": 15 } }, "object": { "type": "Identifier", - "start": 13631, - "end": 13634, + "start": 13671, + "end": 13674, "loc": { "start": { - "line": 395, + "line": 396, "column": 8 }, "end": { - "line": 395, + "line": 396, "column": 11 }, "identifierName": "ctx" @@ -23543,15 +23594,15 @@ }, "property": { "type": "Identifier", - "start": 13635, - "end": 13638, + "start": 13675, + "end": 13678, "loc": { "start": { - "line": 395, + "line": 396, "column": 12 }, "end": { - "line": 395, + "line": 396, "column": 15 }, "identifierName": "log" @@ -23563,15 +23614,15 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 13639, - "end": 13740, + "start": 13679, + "end": 13780, "loc": { "start": { - "line": 395, + "line": 396, "column": 16 }, "end": { - "line": 395, + "line": 396, "column": 117 } }, @@ -23579,15 +23630,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 13640, - "end": 13739, + "start": 13680, + "end": 13779, "loc": { "start": { - "line": 395, + "line": 396, "column": 17 }, "end": { - "line": 395, + "line": 396, "column": 116 } }, @@ -23604,58 +23655,58 @@ }, { "type": "ForStatement", - "start": 13751, - "end": 13903, + "start": 13791, + "end": 13943, "loc": { "start": { - "line": 396, + "line": 397, "column": 8 }, "end": { - "line": 399, + "line": 400, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 13756, - "end": 13785, + "start": 13796, + "end": 13825, "loc": { "start": { - "line": 396, + "line": 397, "column": 13 }, "end": { - "line": 396, + "line": 397, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13760, - "end": 13765, + "start": 13800, + "end": 13805, "loc": { "start": { - "line": 396, + "line": 397, "column": 17 }, "end": { - "line": 396, + "line": 397, "column": 22 } }, "id": { "type": "Identifier", - "start": 13760, - "end": 13761, + "start": 13800, + "end": 13801, "loc": { "start": { - "line": 396, + "line": 397, "column": 17 }, "end": { - "line": 396, + "line": 397, "column": 18 }, "identifierName": "i" @@ -23664,15 +23715,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13764, - "end": 13765, + "start": 13804, + "end": 13805, "loc": { "start": { - "line": 396, + "line": 397, "column": 21 }, "end": { - "line": 396, + "line": 397, "column": 22 } }, @@ -23685,29 +23736,29 @@ }, { "type": "VariableDeclarator", - "start": 13767, - "end": 13785, + "start": 13807, + "end": 13825, "loc": { "start": { - "line": 396, + "line": 397, "column": 24 }, "end": { - "line": 396, + "line": 397, "column": 42 } }, "id": { "type": "Identifier", - "start": 13767, - "end": 13770, + "start": 13807, + "end": 13810, "loc": { "start": { - "line": 396, + "line": 397, "column": 24 }, "end": { - "line": 396, + "line": 397, "column": 27 }, "identifierName": "len" @@ -23716,29 +23767,29 @@ }, "init": { "type": "MemberExpression", - "start": 13773, - "end": 13785, + "start": 13813, + "end": 13825, "loc": { "start": { - "line": 396, + "line": 397, "column": 30 }, "end": { - "line": 396, + "line": 397, "column": 42 } }, "object": { "type": "Identifier", - "start": 13773, - "end": 13778, + "start": 13813, + "end": 13818, "loc": { "start": { - "line": 396, + "line": 397, "column": 30 }, "end": { - "line": 396, + "line": 397, "column": 35 }, "identifierName": "nodes" @@ -23747,15 +23798,15 @@ }, "property": { "type": "Identifier", - "start": 13779, - "end": 13785, + "start": 13819, + "end": 13825, "loc": { "start": { - "line": 396, + "line": 397, "column": 36 }, "end": { - "line": 396, + "line": 397, "column": 42 }, "identifierName": "length" @@ -23770,29 +23821,29 @@ }, "test": { "type": "BinaryExpression", - "start": 13787, - "end": 13794, + "start": 13827, + "end": 13834, "loc": { "start": { - "line": 396, + "line": 397, "column": 44 }, "end": { - "line": 396, + "line": 397, "column": 51 } }, "left": { "type": "Identifier", - "start": 13787, - "end": 13788, + "start": 13827, + "end": 13828, "loc": { "start": { - "line": 396, + "line": 397, "column": 44 }, "end": { - "line": 396, + "line": 397, "column": 45 }, "identifierName": "i" @@ -23802,15 +23853,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13791, - "end": 13794, + "start": 13831, + "end": 13834, "loc": { "start": { - "line": 396, + "line": 397, "column": 48 }, "end": { - "line": 396, + "line": 397, "column": 51 }, "identifierName": "len" @@ -23820,15 +23871,15 @@ }, "update": { "type": "UpdateExpression", - "start": 13796, - "end": 13799, + "start": 13836, + "end": 13839, "loc": { "start": { - "line": 396, + "line": 397, "column": 53 }, "end": { - "line": 396, + "line": 397, "column": 56 } }, @@ -23836,15 +23887,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13796, - "end": 13797, + "start": 13836, + "end": 13837, "loc": { "start": { - "line": 396, + "line": 397, "column": 53 }, "end": { - "line": 396, + "line": 397, "column": 54 }, "identifierName": "i" @@ -23854,59 +23905,59 @@ }, "body": { "type": "BlockStatement", - "start": 13801, - "end": 13903, + "start": 13841, + "end": 13943, "loc": { "start": { - "line": 396, + "line": 397, "column": 58 }, "end": { - "line": 399, + "line": 400, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13815, - "end": 13837, + "start": 13855, + "end": 13877, "loc": { "start": { - "line": 397, + "line": 398, "column": 12 }, "end": { - "line": 397, + "line": 398, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13821, - "end": 13836, + "start": 13861, + "end": 13876, "loc": { "start": { - "line": 397, + "line": 398, "column": 18 }, "end": { - "line": 397, + "line": 398, "column": 33 } }, "id": { "type": "Identifier", - "start": 13821, - "end": 13825, + "start": 13861, + "end": 13865, "loc": { "start": { - "line": 397, + "line": 398, "column": 18 }, "end": { - "line": 397, + "line": 398, "column": 22 }, "identifierName": "node" @@ -23915,29 +23966,29 @@ }, "init": { "type": "MemberExpression", - "start": 13828, - "end": 13836, + "start": 13868, + "end": 13876, "loc": { "start": { - "line": 397, + "line": 398, "column": 25 }, "end": { - "line": 397, + "line": 398, "column": 33 } }, "object": { "type": "Identifier", - "start": 13828, - "end": 13833, + "start": 13868, + "end": 13873, "loc": { "start": { - "line": 397, + "line": 398, "column": 25 }, "end": { - "line": 397, + "line": 398, "column": 30 }, "identifierName": "nodes" @@ -23946,15 +23997,15 @@ }, "property": { "type": "Identifier", - "start": 13834, - "end": 13835, + "start": 13874, + "end": 13875, "loc": { "start": { - "line": 397, + "line": 398, "column": 31 }, "end": { - "line": 397, + "line": 398, "column": 32 }, "identifierName": "i" @@ -23969,43 +24020,43 @@ }, { "type": "ExpressionStatement", - "start": 13850, - "end": 13893, + "start": 13890, + "end": 13933, "loc": { "start": { - "line": 398, + "line": 399, "column": 12 }, "end": { - "line": 398, + "line": 399, "column": 55 } }, "expression": { "type": "CallExpression", - "start": 13850, - "end": 13892, + "start": 13890, + "end": 13932, "loc": { "start": { - "line": 398, + "line": 399, "column": 12 }, "end": { - "line": 398, + "line": 399, "column": 54 } }, "callee": { "type": "Identifier", - "start": 13850, - "end": 13872, + "start": 13890, + "end": 13912, "loc": { "start": { - "line": 398, + "line": 399, "column": 12 }, "end": { - "line": 398, + "line": 399, "column": 34 }, "identifierName": "parseNodesWithoutNames" @@ -24015,15 +24066,15 @@ "arguments": [ { "type": "Identifier", - "start": 13873, - "end": 13876, + "start": 13913, + "end": 13916, "loc": { "start": { - "line": 398, + "line": 399, "column": 35 }, "end": { - "line": 398, + "line": 399, "column": 38 }, "identifierName": "ctx" @@ -24032,15 +24083,15 @@ }, { "type": "Identifier", - "start": 13878, - "end": 13882, + "start": 13918, + "end": 13922, "loc": { "start": { - "line": 398, + "line": 399, "column": 40 }, "end": { - "line": 398, + "line": 399, "column": 44 }, "identifierName": "node" @@ -24049,15 +24100,15 @@ }, { "type": "NumericLiteral", - "start": 13884, - "end": 13885, + "start": 13924, + "end": 13925, "loc": { "start": { - "line": 398, + "line": 399, "column": 46 }, "end": { - "line": 398, + "line": 399, "column": 47 } }, @@ -24069,15 +24120,15 @@ }, { "type": "NullLiteral", - "start": 13887, - "end": 13891, + "start": 13927, + "end": 13931, "loc": { "start": { - "line": 398, + "line": 399, "column": 49 }, "end": { - "line": 398, + "line": 399, "column": 53 } } @@ -24094,73 +24145,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 13915, - "end": 14080, + "start": 13955, + "end": 14120, "loc": { "start": { - "line": 400, + "line": 401, "column": 11 }, "end": { - "line": 405, + "line": 406, "column": 5 } }, "body": [ { "type": "ForStatement", - "start": 13925, - "end": 14074, + "start": 13965, + "end": 14114, "loc": { "start": { - "line": 401, + "line": 402, "column": 8 }, "end": { - "line": 404, + "line": 405, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 13930, - "end": 13959, + "start": 13970, + "end": 13999, "loc": { "start": { - "line": 401, + "line": 402, "column": 13 }, "end": { - "line": 401, + "line": 402, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13934, - "end": 13939, + "start": 13974, + "end": 13979, "loc": { "start": { - "line": 401, + "line": 402, "column": 17 }, "end": { - "line": 401, + "line": 402, "column": 22 } }, "id": { "type": "Identifier", - "start": 13934, - "end": 13935, + "start": 13974, + "end": 13975, "loc": { "start": { - "line": 401, + "line": 402, "column": 17 }, "end": { - "line": 401, + "line": 402, "column": 18 }, "identifierName": "i" @@ -24169,15 +24220,15 @@ }, "init": { "type": "NumericLiteral", - "start": 13938, - "end": 13939, + "start": 13978, + "end": 13979, "loc": { "start": { - "line": 401, + "line": 402, "column": 21 }, "end": { - "line": 401, + "line": 402, "column": 22 } }, @@ -24190,29 +24241,29 @@ }, { "type": "VariableDeclarator", - "start": 13941, - "end": 13959, + "start": 13981, + "end": 13999, "loc": { "start": { - "line": 401, + "line": 402, "column": 24 }, "end": { - "line": 401, + "line": 402, "column": 42 } }, "id": { "type": "Identifier", - "start": 13941, - "end": 13944, + "start": 13981, + "end": 13984, "loc": { "start": { - "line": 401, + "line": 402, "column": 24 }, "end": { - "line": 401, + "line": 402, "column": 27 }, "identifierName": "len" @@ -24221,29 +24272,29 @@ }, "init": { "type": "MemberExpression", - "start": 13947, - "end": 13959, + "start": 13987, + "end": 13999, "loc": { "start": { - "line": 401, + "line": 402, "column": 30 }, "end": { - "line": 401, + "line": 402, "column": 42 } }, "object": { "type": "Identifier", - "start": 13947, - "end": 13952, + "start": 13987, + "end": 13992, "loc": { "start": { - "line": 401, + "line": 402, "column": 30 }, "end": { - "line": 401, + "line": 402, "column": 35 }, "identifierName": "nodes" @@ -24252,15 +24303,15 @@ }, "property": { "type": "Identifier", - "start": 13953, - "end": 13959, + "start": 13993, + "end": 13999, "loc": { "start": { - "line": 401, + "line": 402, "column": 36 }, "end": { - "line": 401, + "line": 402, "column": 42 }, "identifierName": "length" @@ -24275,29 +24326,29 @@ }, "test": { "type": "BinaryExpression", - "start": 13961, - "end": 13968, + "start": 14001, + "end": 14008, "loc": { "start": { - "line": 401, + "line": 402, "column": 44 }, "end": { - "line": 401, + "line": 402, "column": 51 } }, "left": { "type": "Identifier", - "start": 13961, - "end": 13962, + "start": 14001, + "end": 14002, "loc": { "start": { - "line": 401, + "line": 402, "column": 44 }, "end": { - "line": 401, + "line": 402, "column": 45 }, "identifierName": "i" @@ -24307,15 +24358,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 13965, - "end": 13968, + "start": 14005, + "end": 14008, "loc": { "start": { - "line": 401, + "line": 402, "column": 48 }, "end": { - "line": 401, + "line": 402, "column": 51 }, "identifierName": "len" @@ -24325,15 +24376,15 @@ }, "update": { "type": "UpdateExpression", - "start": 13970, - "end": 13973, + "start": 14010, + "end": 14013, "loc": { "start": { - "line": 401, + "line": 402, "column": 53 }, "end": { - "line": 401, + "line": 402, "column": 56 } }, @@ -24341,15 +24392,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 13970, - "end": 13971, + "start": 14010, + "end": 14011, "loc": { "start": { - "line": 401, + "line": 402, "column": 53 }, "end": { - "line": 401, + "line": 402, "column": 54 }, "identifierName": "i" @@ -24359,59 +24410,59 @@ }, "body": { "type": "BlockStatement", - "start": 13975, - "end": 14074, + "start": 14015, + "end": 14114, "loc": { "start": { - "line": 401, + "line": 402, "column": 58 }, "end": { - "line": 404, + "line": 405, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 13989, - "end": 14011, + "start": 14029, + "end": 14051, "loc": { "start": { - "line": 402, + "line": 403, "column": 12 }, "end": { - "line": 402, + "line": 403, "column": 34 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 13995, - "end": 14010, + "start": 14035, + "end": 14050, "loc": { "start": { - "line": 402, + "line": 403, "column": 18 }, "end": { - "line": 402, + "line": 403, "column": 33 } }, "id": { "type": "Identifier", - "start": 13995, - "end": 13999, + "start": 14035, + "end": 14039, "loc": { "start": { - "line": 402, + "line": 403, "column": 18 }, "end": { - "line": 402, + "line": 403, "column": 22 }, "identifierName": "node" @@ -24420,29 +24471,29 @@ }, "init": { "type": "MemberExpression", - "start": 14002, - "end": 14010, + "start": 14042, + "end": 14050, "loc": { "start": { - "line": 402, + "line": 403, "column": 25 }, "end": { - "line": 402, + "line": 403, "column": 33 } }, "object": { "type": "Identifier", - "start": 14002, - "end": 14007, + "start": 14042, + "end": 14047, "loc": { "start": { - "line": 402, + "line": 403, "column": 25 }, "end": { - "line": 402, + "line": 403, "column": 30 }, "identifierName": "nodes" @@ -24451,15 +24502,15 @@ }, "property": { "type": "Identifier", - "start": 14008, - "end": 14009, + "start": 14048, + "end": 14049, "loc": { "start": { - "line": 402, + "line": 403, "column": 31 }, "end": { - "line": 402, + "line": 403, "column": 32 }, "identifierName": "i" @@ -24474,43 +24525,43 @@ }, { "type": "ExpressionStatement", - "start": 14024, - "end": 14064, + "start": 14064, + "end": 14104, "loc": { "start": { - "line": 403, + "line": 404, "column": 12 }, "end": { - "line": 403, + "line": 404, "column": 52 } }, "expression": { "type": "CallExpression", - "start": 14024, - "end": 14063, + "start": 14064, + "end": 14103, "loc": { "start": { - "line": 403, + "line": 404, "column": 12 }, "end": { - "line": 403, + "line": 404, "column": 51 } }, "callee": { "type": "Identifier", - "start": 14024, - "end": 14043, + "start": 14064, + "end": 14083, "loc": { "start": { - "line": 403, + "line": 404, "column": 12 }, "end": { - "line": 403, + "line": 404, "column": 31 }, "identifierName": "parseNodesWithNames" @@ -24520,15 +24571,15 @@ "arguments": [ { "type": "Identifier", - "start": 14044, - "end": 14047, + "start": 14084, + "end": 14087, "loc": { "start": { - "line": 403, + "line": 404, "column": 32 }, "end": { - "line": 403, + "line": 404, "column": 35 }, "identifierName": "ctx" @@ -24537,15 +24588,15 @@ }, { "type": "Identifier", - "start": 14049, - "end": 14053, + "start": 14089, + "end": 14093, "loc": { "start": { - "line": 403, + "line": 404, "column": 37 }, "end": { - "line": 403, + "line": 404, "column": 41 }, "identifierName": "node" @@ -24554,15 +24605,15 @@ }, { "type": "NumericLiteral", - "start": 14055, - "end": 14056, + "start": 14095, + "end": 14096, "loc": { "start": { - "line": 403, + "line": 404, "column": 43 }, "end": { - "line": 403, + "line": 404, "column": 44 } }, @@ -24574,15 +24625,15 @@ }, { "type": "NullLiteral", - "start": 14058, - "end": 14062, + "start": 14098, + "end": 14102, "loc": { "start": { - "line": 403, + "line": 404, "column": 46 }, "end": { - "line": 403, + "line": 404, "column": 50 } } @@ -24604,29 +24655,29 @@ }, { "type": "FunctionDeclaration", - "start": 14084, - "end": 14647, + "start": 14124, + "end": 14691, "loc": { "start": { - "line": 408, + "line": 409, "column": 0 }, "end": { - "line": 427, + "line": 428, "column": 1 } }, "id": { "type": "Identifier", - "start": 14093, - "end": 14107, + "start": 14133, + "end": 14147, "loc": { "start": { - "line": 408, + "line": 409, "column": 9 }, "end": { - "line": 408, + "line": 409, "column": 23 }, "identifierName": "countMeshUsage" @@ -24639,15 +24690,15 @@ "params": [ { "type": "Identifier", - "start": 14108, - "end": 14111, + "start": 14148, + "end": 14151, "loc": { "start": { - "line": 408, + "line": 409, "column": 24 }, "end": { - "line": 408, + "line": 409, "column": 27 }, "identifierName": "ctx" @@ -24656,15 +24707,15 @@ }, { "type": "Identifier", - "start": 14113, - "end": 14117, + "start": 14153, + "end": 14157, "loc": { "start": { - "line": 408, + "line": 409, "column": 29 }, "end": { - "line": 408, + "line": 409, "column": 33 }, "identifierName": "node" @@ -24673,29 +24724,29 @@ }, { "type": "AssignmentPattern", - "start": 14119, - "end": 14126, + "start": 14159, + "end": 14168, "loc": { "start": { - "line": 408, + "line": 409, "column": 35 }, "end": { - "line": 408, - "column": 42 + "line": 409, + "column": 44 } }, "left": { "type": "Identifier", - "start": 14119, - "end": 14124, + "start": 14159, + "end": 14164, "loc": { "start": { - "line": 408, + "line": 409, "column": 35 }, "end": { - "line": 408, + "line": 409, "column": 40 }, "identifierName": "level" @@ -24704,16 +24755,16 @@ }, "right": { "type": "NumericLiteral", - "start": 14125, - "end": 14126, + "start": 14167, + "end": 14168, "loc": { "start": { - "line": 408, - "column": 41 + "line": 409, + "column": 43 }, "end": { - "line": 408, - "column": 42 + "line": 409, + "column": 44 } }, "extra": { @@ -24726,44 +24777,44 @@ ], "body": { "type": "BlockStatement", - "start": 14128, - "end": 14647, + "start": 14170, + "end": 14691, "loc": { "start": { - "line": 408, - "column": 44 + "line": 409, + "column": 46 }, "end": { - "line": 427, + "line": 428, "column": 1 } }, "body": [ { "type": "IfStatement", - "start": 14134, - "end": 14168, + "start": 14176, + "end": 14210, "loc": { "start": { - "line": 409, + "line": 410, "column": 4 }, "end": { - "line": 411, + "line": 412, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 14138, - "end": 14143, + "start": 14180, + "end": 14185, "loc": { "start": { - "line": 409, + "line": 410, "column": 8 }, "end": { - "line": 409, + "line": 410, "column": 13 } }, @@ -24771,15 +24822,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 14139, - "end": 14143, + "start": 14181, + "end": 14185, "loc": { "start": { - "line": 409, + "line": 410, "column": 9 }, "end": { - "line": 409, + "line": 410, "column": 13 }, "identifierName": "node" @@ -24792,30 +24843,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 14145, - "end": 14168, + "start": 14187, + "end": 14210, "loc": { "start": { - "line": 409, + "line": 410, "column": 15 }, "end": { - "line": 411, + "line": 412, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 14155, - "end": 14162, + "start": 14197, + "end": 14204, "loc": { "start": { - "line": 410, + "line": 411, "column": 8 }, "end": { - "line": 410, + "line": 411, "column": 15 } }, @@ -24828,44 +24879,44 @@ }, { "type": "VariableDeclaration", - "start": 14173, - "end": 14196, + "start": 14215, + "end": 14238, "loc": { "start": { - "line": 412, + "line": 413, "column": 4 }, "end": { - "line": 412, + "line": 413, "column": 27 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14179, - "end": 14195, + "start": 14221, + "end": 14237, "loc": { "start": { - "line": 412, + "line": 413, "column": 10 }, "end": { - "line": 412, + "line": 413, "column": 26 } }, "id": { "type": "Identifier", - "start": 14179, - "end": 14183, + "start": 14221, + "end": 14225, "loc": { "start": { - "line": 412, + "line": 413, "column": 10 }, "end": { - "line": 412, + "line": 413, "column": 14 }, "identifierName": "mesh" @@ -24874,29 +24925,29 @@ }, "init": { "type": "MemberExpression", - "start": 14186, - "end": 14195, + "start": 14228, + "end": 14237, "loc": { "start": { - "line": 412, + "line": 413, "column": 17 }, "end": { - "line": 412, + "line": 413, "column": 26 } }, "object": { "type": "Identifier", - "start": 14186, - "end": 14190, + "start": 14228, + "end": 14232, "loc": { "start": { - "line": 412, + "line": 413, "column": 17 }, "end": { - "line": 412, + "line": 413, "column": 21 }, "identifierName": "node" @@ -24905,15 +24956,15 @@ }, "property": { "type": "Identifier", - "start": 14191, - "end": 14195, + "start": 14233, + "end": 14237, "loc": { "start": { - "line": 412, + "line": 413, "column": 22 }, "end": { - "line": 412, + "line": 413, "column": 26 }, "identifierName": "mesh" @@ -24928,29 +24979,29 @@ }, { "type": "IfStatement", - "start": 14201, - "end": 14284, + "start": 14243, + "end": 14326, "loc": { "start": { - "line": 413, + "line": 414, "column": 4 }, "end": { - "line": 415, + "line": 416, "column": 5 } }, "test": { "type": "Identifier", - "start": 14205, - "end": 14209, + "start": 14247, + "end": 14251, "loc": { "start": { - "line": 413, + "line": 414, "column": 8 }, "end": { - "line": 413, + "line": 414, "column": 12 }, "identifierName": "mesh" @@ -24959,73 +25010,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 14211, - "end": 14284, + "start": 14253, + "end": 14326, "loc": { "start": { - "line": 413, + "line": 414, "column": 14 }, "end": { - "line": 415, + "line": 416, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 14221, - "end": 14278, + "start": 14263, + "end": 14320, "loc": { "start": { - "line": 414, + "line": 415, "column": 8 }, "end": { - "line": 414, + "line": 415, "column": 65 } }, "expression": { "type": "AssignmentExpression", - "start": 14221, - "end": 14277, + "start": 14263, + "end": 14319, "loc": { "start": { - "line": 414, + "line": 415, "column": 8 }, "end": { - "line": 414, + "line": 415, "column": 64 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 14221, - "end": 14235, + "start": 14263, + "end": 14277, "loc": { "start": { - "line": 414, + "line": 415, "column": 8 }, "end": { - "line": 414, + "line": 415, "column": 22 } }, "object": { "type": "Identifier", - "start": 14221, - "end": 14225, + "start": 14263, + "end": 14267, "loc": { "start": { - "line": 414, + "line": 415, "column": 8 }, "end": { - "line": 414, + "line": 415, "column": 12 }, "identifierName": "mesh" @@ -25034,15 +25085,15 @@ }, "property": { "type": "Identifier", - "start": 14226, - "end": 14235, + "start": 14268, + "end": 14277, "loc": { "start": { - "line": 414, + "line": 415, "column": 13 }, "end": { - "line": 414, + "line": 415, "column": 22 }, "identifierName": "instances" @@ -25053,43 +25104,43 @@ }, "right": { "type": "ConditionalExpression", - "start": 14238, - "end": 14277, + "start": 14280, + "end": 14319, "loc": { "start": { - "line": 414, + "line": 415, "column": 25 }, "end": { - "line": 414, + "line": 415, "column": 64 } }, "test": { "type": "MemberExpression", - "start": 14238, - "end": 14252, + "start": 14280, + "end": 14294, "loc": { "start": { - "line": 414, + "line": 415, "column": 25 }, "end": { - "line": 414, + "line": 415, "column": 39 } }, "object": { "type": "Identifier", - "start": 14238, - "end": 14242, + "start": 14280, + "end": 14284, "loc": { "start": { - "line": 414, + "line": 415, "column": 25 }, "end": { - "line": 414, + "line": 415, "column": 29 }, "identifierName": "mesh" @@ -25098,15 +25149,15 @@ }, "property": { "type": "Identifier", - "start": 14243, - "end": 14252, + "start": 14285, + "end": 14294, "loc": { "start": { - "line": 414, + "line": 415, "column": 30 }, "end": { - "line": 414, + "line": 415, "column": 39 }, "identifierName": "instances" @@ -25117,43 +25168,43 @@ }, "consequent": { "type": "BinaryExpression", - "start": 14255, - "end": 14273, + "start": 14297, + "end": 14315, "loc": { "start": { - "line": 414, + "line": 415, "column": 42 }, "end": { - "line": 414, + "line": 415, "column": 60 } }, "left": { "type": "MemberExpression", - "start": 14255, - "end": 14269, + "start": 14297, + "end": 14311, "loc": { "start": { - "line": 414, + "line": 415, "column": 42 }, "end": { - "line": 414, + "line": 415, "column": 56 } }, "object": { "type": "Identifier", - "start": 14255, - "end": 14259, + "start": 14297, + "end": 14301, "loc": { "start": { - "line": 414, + "line": 415, "column": 42 }, "end": { - "line": 414, + "line": 415, "column": 46 }, "identifierName": "mesh" @@ -25162,15 +25213,15 @@ }, "property": { "type": "Identifier", - "start": 14260, - "end": 14269, + "start": 14302, + "end": 14311, "loc": { "start": { - "line": 414, + "line": 415, "column": 47 }, "end": { - "line": 414, + "line": 415, "column": 56 }, "identifierName": "instances" @@ -25182,15 +25233,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14272, - "end": 14273, + "start": 14314, + "end": 14315, "loc": { "start": { - "line": 414, + "line": 415, "column": 59 }, "end": { - "line": 414, + "line": 415, "column": 60 } }, @@ -25203,15 +25254,15 @@ }, "alternate": { "type": "NumericLiteral", - "start": 14276, - "end": 14277, + "start": 14318, + "end": 14319, "loc": { "start": { - "line": 414, + "line": 415, "column": 63 }, "end": { - "line": 414, + "line": 415, "column": 64 } }, @@ -25231,43 +25282,43 @@ }, { "type": "IfStatement", - "start": 14289, - "end": 14645, + "start": 14331, + "end": 14689, "loc": { "start": { - "line": 416, + "line": 417, "column": 4 }, "end": { - "line": 426, + "line": 427, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 14293, - "end": 14306, + "start": 14335, + "end": 14348, "loc": { "start": { - "line": 416, + "line": 417, "column": 8 }, "end": { - "line": 416, + "line": 417, "column": 21 } }, "object": { "type": "Identifier", - "start": 14293, - "end": 14297, + "start": 14335, + "end": 14339, "loc": { "start": { - "line": 416, + "line": 417, "column": 8 }, "end": { - "line": 416, + "line": 417, "column": 12 }, "identifierName": "node" @@ -25276,15 +25327,15 @@ }, "property": { "type": "Identifier", - "start": 14298, - "end": 14306, + "start": 14340, + "end": 14348, "loc": { "start": { - "line": 416, + "line": 417, "column": 13 }, "end": { - "line": 416, + "line": 417, "column": 21 }, "identifierName": "children" @@ -25295,59 +25346,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 14308, - "end": 14645, + "start": 14350, + "end": 14689, "loc": { "start": { - "line": 416, + "line": 417, "column": 23 }, "end": { - "line": 426, + "line": 427, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 14318, - "end": 14349, + "start": 14360, + "end": 14391, "loc": { "start": { - "line": 417, + "line": 418, "column": 8 }, "end": { - "line": 417, + "line": 418, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14324, - "end": 14348, + "start": 14366, + "end": 14390, "loc": { "start": { - "line": 417, + "line": 418, "column": 14 }, "end": { - "line": 417, + "line": 418, "column": 38 } }, "id": { "type": "Identifier", - "start": 14324, - "end": 14332, + "start": 14366, + "end": 14374, "loc": { "start": { - "line": 417, + "line": 418, "column": 14 }, "end": { - "line": 417, + "line": 418, "column": 22 }, "identifierName": "children" @@ -25356,29 +25407,29 @@ }, "init": { "type": "MemberExpression", - "start": 14335, - "end": 14348, + "start": 14377, + "end": 14390, "loc": { "start": { - "line": 417, + "line": 418, "column": 25 }, "end": { - "line": 417, + "line": 418, "column": 38 } }, "object": { "type": "Identifier", - "start": 14335, - "end": 14339, + "start": 14377, + "end": 14381, "loc": { "start": { - "line": 417, + "line": 418, "column": 25 }, "end": { - "line": 417, + "line": 418, "column": 29 }, "identifierName": "node" @@ -25387,15 +25438,15 @@ }, "property": { "type": "Identifier", - "start": 14340, - "end": 14348, + "start": 14382, + "end": 14390, "loc": { "start": { - "line": 417, + "line": 418, "column": 30 }, "end": { - "line": 417, + "line": 418, "column": 38 }, "identifierName": "children" @@ -25410,58 +25461,58 @@ }, { "type": "ForStatement", - "start": 14358, - "end": 14639, + "start": 14400, + "end": 14683, "loc": { "start": { - "line": 418, + "line": 419, "column": 8 }, "end": { - "line": 425, + "line": 426, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 14363, - "end": 14395, + "start": 14405, + "end": 14437, "loc": { "start": { - "line": 418, + "line": 419, "column": 13 }, "end": { - "line": 418, + "line": 419, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14367, - "end": 14372, + "start": 14409, + "end": 14414, "loc": { "start": { - "line": 418, + "line": 419, "column": 17 }, "end": { - "line": 418, + "line": 419, "column": 22 } }, "id": { "type": "Identifier", - "start": 14367, - "end": 14368, + "start": 14409, + "end": 14410, "loc": { "start": { - "line": 418, + "line": 419, "column": 17 }, "end": { - "line": 418, + "line": 419, "column": 18 }, "identifierName": "i" @@ -25470,15 +25521,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14371, - "end": 14372, + "start": 14413, + "end": 14414, "loc": { "start": { - "line": 418, + "line": 419, "column": 21 }, "end": { - "line": 418, + "line": 419, "column": 22 } }, @@ -25491,29 +25542,29 @@ }, { "type": "VariableDeclarator", - "start": 14374, - "end": 14395, + "start": 14416, + "end": 14437, "loc": { "start": { - "line": 418, + "line": 419, "column": 24 }, "end": { - "line": 418, + "line": 419, "column": 45 } }, "id": { "type": "Identifier", - "start": 14374, - "end": 14377, + "start": 14416, + "end": 14419, "loc": { "start": { - "line": 418, + "line": 419, "column": 24 }, "end": { - "line": 418, + "line": 419, "column": 27 }, "identifierName": "len" @@ -25522,29 +25573,29 @@ }, "init": { "type": "MemberExpression", - "start": 14380, - "end": 14395, + "start": 14422, + "end": 14437, "loc": { "start": { - "line": 418, + "line": 419, "column": 30 }, "end": { - "line": 418, + "line": 419, "column": 45 } }, "object": { "type": "Identifier", - "start": 14380, - "end": 14388, + "start": 14422, + "end": 14430, "loc": { "start": { - "line": 418, + "line": 419, "column": 30 }, "end": { - "line": 418, + "line": 419, "column": 38 }, "identifierName": "children" @@ -25553,15 +25604,15 @@ }, "property": { "type": "Identifier", - "start": 14389, - "end": 14395, + "start": 14431, + "end": 14437, "loc": { "start": { - "line": 418, + "line": 419, "column": 39 }, "end": { - "line": 418, + "line": 419, "column": 45 }, "identifierName": "length" @@ -25576,29 +25627,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14397, - "end": 14404, + "start": 14439, + "end": 14446, "loc": { "start": { - "line": 418, + "line": 419, "column": 47 }, "end": { - "line": 418, + "line": 419, "column": 54 } }, "left": { "type": "Identifier", - "start": 14397, - "end": 14398, + "start": 14439, + "end": 14440, "loc": { "start": { - "line": 418, + "line": 419, "column": 47 }, "end": { - "line": 418, + "line": 419, "column": 48 }, "identifierName": "i" @@ -25608,15 +25659,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14401, - "end": 14404, + "start": 14443, + "end": 14446, "loc": { "start": { - "line": 418, + "line": 419, "column": 51 }, "end": { - "line": 418, + "line": 419, "column": 54 }, "identifierName": "len" @@ -25626,15 +25677,15 @@ }, "update": { "type": "UpdateExpression", - "start": 14406, - "end": 14409, + "start": 14448, + "end": 14451, "loc": { "start": { - "line": 418, + "line": 419, "column": 56 }, "end": { - "line": 418, + "line": 419, "column": 59 } }, @@ -25642,15 +25693,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14406, - "end": 14407, + "start": 14448, + "end": 14449, "loc": { "start": { - "line": 418, + "line": 419, "column": 56 }, "end": { - "line": 418, + "line": 419, "column": 57 }, "identifierName": "i" @@ -25660,59 +25711,59 @@ }, "body": { "type": "BlockStatement", - "start": 14411, - "end": 14639, + "start": 14453, + "end": 14683, "loc": { "start": { - "line": 418, + "line": 419, "column": 61 }, "end": { - "line": 425, + "line": 426, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14425, - "end": 14455, + "start": 14467, + "end": 14497, "loc": { "start": { - "line": 419, + "line": 420, "column": 12 }, "end": { - "line": 419, + "line": 420, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14431, - "end": 14454, + "start": 14473, + "end": 14496, "loc": { "start": { - "line": 419, + "line": 420, "column": 18 }, "end": { - "line": 419, + "line": 420, "column": 41 } }, "id": { "type": "Identifier", - "start": 14431, - "end": 14440, + "start": 14473, + "end": 14482, "loc": { "start": { - "line": 419, + "line": 420, "column": 18 }, "end": { - "line": 419, + "line": 420, "column": 27 }, "identifierName": "childNode" @@ -25721,29 +25772,29 @@ }, "init": { "type": "MemberExpression", - "start": 14443, - "end": 14454, + "start": 14485, + "end": 14496, "loc": { "start": { - "line": 419, + "line": 420, "column": 30 }, "end": { - "line": 419, + "line": 420, "column": 41 } }, "object": { "type": "Identifier", - "start": 14443, - "end": 14451, + "start": 14485, + "end": 14493, "loc": { "start": { - "line": 419, + "line": 420, "column": 30 }, "end": { - "line": 419, + "line": 420, "column": 38 }, "identifierName": "children" @@ -25752,15 +25803,15 @@ }, "property": { "type": "Identifier", - "start": 14452, - "end": 14453, + "start": 14494, + "end": 14495, "loc": { "start": { - "line": 419, + "line": 420, "column": 39 }, "end": { - "line": 419, + "line": 420, "column": 40 }, "identifierName": "i" @@ -25775,29 +25826,29 @@ }, { "type": "IfStatement", - "start": 14468, - "end": 14576, + "start": 14510, + "end": 14618, "loc": { "start": { - "line": 420, + "line": 421, "column": 12 }, "end": { - "line": 423, + "line": 424, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 14472, - "end": 14482, + "start": 14514, + "end": 14524, "loc": { "start": { - "line": 420, + "line": 421, "column": 16 }, "end": { - "line": 420, + "line": 421, "column": 26 } }, @@ -25805,15 +25856,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 14473, - "end": 14482, + "start": 14515, + "end": 14524, "loc": { "start": { - "line": 420, + "line": 421, "column": 17 }, "end": { - "line": 420, + "line": 421, "column": 26 }, "identifierName": "childNode" @@ -25826,72 +25877,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 14484, - "end": 14576, + "start": 14526, + "end": 14618, "loc": { "start": { - "line": 420, + "line": 421, "column": 28 }, "end": { - "line": 423, + "line": 424, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 14502, - "end": 14536, + "start": 14544, + "end": 14578, "loc": { "start": { - "line": 421, + "line": 422, "column": 16 }, "end": { - "line": 421, + "line": 422, "column": 50 } }, "expression": { "type": "CallExpression", - "start": 14502, - "end": 14535, + "start": 14544, + "end": 14577, "loc": { "start": { - "line": 421, + "line": 422, "column": 16 }, "end": { - "line": 421, + "line": 422, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 14502, - "end": 14511, + "start": 14544, + "end": 14553, "loc": { "start": { - "line": 421, + "line": 422, "column": 16 }, "end": { - "line": 421, + "line": 422, "column": 25 } }, "object": { "type": "Identifier", - "start": 14502, - "end": 14505, + "start": 14544, + "end": 14547, "loc": { "start": { - "line": 421, + "line": 422, "column": 16 }, "end": { - "line": 421, + "line": 422, "column": 19 }, "identifierName": "ctx" @@ -25900,15 +25951,15 @@ }, "property": { "type": "Identifier", - "start": 14506, - "end": 14511, + "start": 14548, + "end": 14553, "loc": { "start": { - "line": 421, + "line": 422, "column": 20 }, "end": { - "line": 421, + "line": 422, "column": 25 }, "identifierName": "error" @@ -25920,29 +25971,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 14512, - "end": 14534, + "start": 14554, + "end": 14576, "loc": { "start": { - "line": 421, + "line": 422, "column": 26 }, "end": { - "line": 421, + "line": 422, "column": 48 } }, "left": { "type": "StringLiteral", - "start": 14512, - "end": 14530, + "start": 14554, + "end": 14572, "loc": { "start": { - "line": 421, + "line": 422, "column": 26 }, "end": { - "line": 421, + "line": 422, "column": 44 } }, @@ -25955,15 +26006,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 14533, - "end": 14534, + "start": 14575, + "end": 14576, "loc": { "start": { - "line": 421, + "line": 422, "column": 47 }, "end": { - "line": 421, + "line": 422, "column": 48 }, "identifierName": "i" @@ -25976,15 +26027,15 @@ }, { "type": "ContinueStatement", - "start": 14553, - "end": 14562, + "start": 14595, + "end": 14604, "loc": { "start": { - "line": 422, + "line": 423, "column": 16 }, "end": { - "line": 422, + "line": 423, "column": 25 } }, @@ -25997,43 +26048,43 @@ }, { "type": "ExpressionStatement", - "start": 14589, - "end": 14629, + "start": 14631, + "end": 14673, "loc": { "start": { - "line": 424, + "line": 425, "column": 12 }, "end": { - "line": 424, - "column": 52 + "line": 425, + "column": 54 } }, "expression": { "type": "CallExpression", - "start": 14589, - "end": 14628, + "start": 14631, + "end": 14672, "loc": { "start": { - "line": 424, + "line": 425, "column": 12 }, "end": { - "line": 424, - "column": 51 + "line": 425, + "column": 53 } }, "callee": { "type": "Identifier", - "start": 14589, - "end": 14603, + "start": 14631, + "end": 14645, "loc": { "start": { - "line": 424, + "line": 425, "column": 12 }, "end": { - "line": 424, + "line": 425, "column": 26 }, "identifierName": "countMeshUsage" @@ -26043,15 +26094,15 @@ "arguments": [ { "type": "Identifier", - "start": 14604, - "end": 14607, + "start": 14646, + "end": 14649, "loc": { "start": { - "line": 424, + "line": 425, "column": 27 }, "end": { - "line": 424, + "line": 425, "column": 30 }, "identifierName": "ctx" @@ -26060,15 +26111,15 @@ }, { "type": "Identifier", - "start": 14609, - "end": 14618, + "start": 14651, + "end": 14660, "loc": { "start": { - "line": 424, + "line": 425, "column": 32 }, "end": { - "line": 424, + "line": 425, "column": 41 }, "identifierName": "childNode" @@ -26077,29 +26128,29 @@ }, { "type": "BinaryExpression", - "start": 14620, - "end": 14627, + "start": 14662, + "end": 14671, "loc": { "start": { - "line": 424, + "line": 425, "column": 43 }, "end": { - "line": 424, - "column": 50 + "line": 425, + "column": 52 } }, "left": { "type": "Identifier", - "start": 14620, - "end": 14625, + "start": 14662, + "end": 14667, "loc": { "start": { - "line": 424, + "line": 425, "column": 43 }, "end": { - "line": 424, + "line": 425, "column": 48 }, "identifierName": "level" @@ -26109,16 +26160,16 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 14626, - "end": 14627, + "start": 14670, + "end": 14671, "loc": { "start": { - "line": 424, - "column": 49 + "line": 425, + "column": 51 }, "end": { - "line": 424, - "column": 50 + "line": 425, + "column": 52 } }, "extra": { @@ -26146,29 +26197,29 @@ }, { "type": "FunctionDeclaration", - "start": 14649, - "end": 15092, + "start": 14693, + "end": 15140, "loc": { "start": { - "line": 429, + "line": 430, "column": 0 }, "end": { - "line": 446, + "line": 447, "column": 1 } }, "id": { "type": "Identifier", - "start": 14658, - "end": 14678, + "start": 14702, + "end": 14722, "loc": { "start": { - "line": 429, + "line": 430, "column": 9 }, "end": { - "line": 429, + "line": 430, "column": 29 }, "identifierName": "testIfNodesHaveNames" @@ -26181,15 +26232,15 @@ "params": [ { "type": "Identifier", - "start": 14679, - "end": 14683, + "start": 14723, + "end": 14727, "loc": { "start": { - "line": 429, + "line": 430, "column": 30 }, "end": { - "line": 429, + "line": 430, "column": 34 }, "identifierName": "node" @@ -26198,29 +26249,29 @@ }, { "type": "AssignmentPattern", - "start": 14685, - "end": 14692, + "start": 14729, + "end": 14738, "loc": { "start": { - "line": 429, + "line": 430, "column": 36 }, "end": { - "line": 429, - "column": 43 + "line": 430, + "column": 45 } }, "left": { "type": "Identifier", - "start": 14685, - "end": 14690, + "start": 14729, + "end": 14734, "loc": { "start": { - "line": 429, + "line": 430, "column": 36 }, "end": { - "line": 429, + "line": 430, "column": 41 }, "identifierName": "level" @@ -26229,16 +26280,16 @@ }, "right": { "type": "NumericLiteral", - "start": 14691, - "end": 14692, + "start": 14737, + "end": 14738, "loc": { "start": { - "line": 429, - "column": 42 + "line": 430, + "column": 44 }, "end": { - "line": 429, - "column": 43 + "line": 430, + "column": 45 } }, "extra": { @@ -26251,44 +26302,44 @@ ], "body": { "type": "BlockStatement", - "start": 14694, - "end": 15092, + "start": 14740, + "end": 15140, "loc": { "start": { - "line": 429, - "column": 45 + "line": 430, + "column": 47 }, "end": { - "line": 446, + "line": 447, "column": 1 } }, "body": [ { "type": "IfStatement", - "start": 14700, - "end": 14734, + "start": 14746, + "end": 14780, "loc": { "start": { - "line": 430, + "line": 431, "column": 4 }, "end": { - "line": 432, + "line": 433, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 14704, - "end": 14709, + "start": 14750, + "end": 14755, "loc": { "start": { - "line": 430, + "line": 431, "column": 8 }, "end": { - "line": 430, + "line": 431, "column": 13 } }, @@ -26296,15 +26347,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 14705, - "end": 14709, + "start": 14751, + "end": 14755, "loc": { "start": { - "line": 430, + "line": 431, "column": 9 }, "end": { - "line": 430, + "line": 431, "column": 13 }, "identifierName": "node" @@ -26317,30 +26368,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 14711, - "end": 14734, + "start": 14757, + "end": 14780, "loc": { "start": { - "line": 430, + "line": 431, "column": 15 }, "end": { - "line": 432, + "line": 433, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 14721, - "end": 14728, + "start": 14767, + "end": 14774, "loc": { "start": { - "line": 431, + "line": 432, "column": 8 }, "end": { - "line": 431, + "line": 432, "column": 15 } }, @@ -26353,43 +26404,43 @@ }, { "type": "IfStatement", - "start": 14739, - "end": 14782, + "start": 14785, + "end": 14828, "loc": { "start": { - "line": 433, + "line": 434, "column": 4 }, "end": { - "line": 435, + "line": 436, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 14743, - "end": 14752, + "start": 14789, + "end": 14798, "loc": { "start": { - "line": 433, + "line": 434, "column": 8 }, "end": { - "line": 433, + "line": 434, "column": 17 } }, "object": { "type": "Identifier", - "start": 14743, - "end": 14747, + "start": 14789, + "end": 14793, "loc": { "start": { - "line": 433, + "line": 434, "column": 8 }, "end": { - "line": 433, + "line": 434, "column": 12 }, "identifierName": "node" @@ -26398,15 +26449,15 @@ }, "property": { "type": "Identifier", - "start": 14748, - "end": 14752, + "start": 14794, + "end": 14798, "loc": { "start": { - "line": 433, + "line": 434, "column": 13 }, "end": { - "line": 433, + "line": 434, "column": 17 }, "identifierName": "name" @@ -26417,44 +26468,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 14754, - "end": 14782, + "start": 14800, + "end": 14828, "loc": { "start": { - "line": 433, + "line": 434, "column": 19 }, "end": { - "line": 435, + "line": 436, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 14764, - "end": 14776, + "start": 14810, + "end": 14822, "loc": { "start": { - "line": 434, + "line": 435, "column": 8 }, "end": { - "line": 434, + "line": 435, "column": 20 } }, "argument": { "type": "BooleanLiteral", - "start": 14771, - "end": 14775, + "start": 14817, + "end": 14821, "loc": { "start": { - "line": 434, + "line": 435, "column": 15 }, "end": { - "line": 434, + "line": 435, "column": 19 } }, @@ -26468,43 +26519,43 @@ }, { "type": "IfStatement", - "start": 14787, - "end": 15072, + "start": 14833, + "end": 15120, "loc": { "start": { - "line": 436, + "line": 437, "column": 4 }, "end": { - "line": 444, + "line": 445, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 14791, - "end": 14804, + "start": 14837, + "end": 14850, "loc": { "start": { - "line": 436, + "line": 437, "column": 8 }, "end": { - "line": 436, + "line": 437, "column": 21 } }, "object": { "type": "Identifier", - "start": 14791, - "end": 14795, + "start": 14837, + "end": 14841, "loc": { "start": { - "line": 436, + "line": 437, "column": 8 }, "end": { - "line": 436, + "line": 437, "column": 12 }, "identifierName": "node" @@ -26513,15 +26564,15 @@ }, "property": { "type": "Identifier", - "start": 14796, - "end": 14804, + "start": 14842, + "end": 14850, "loc": { "start": { - "line": 436, + "line": 437, "column": 13 }, "end": { - "line": 436, + "line": 437, "column": 21 }, "identifierName": "children" @@ -26532,59 +26583,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 14806, - "end": 15072, + "start": 14852, + "end": 15120, "loc": { "start": { - "line": 436, + "line": 437, "column": 23 }, "end": { - "line": 444, + "line": 445, "column": 5 } }, "body": [ { "type": "VariableDeclaration", - "start": 14816, - "end": 14847, + "start": 14862, + "end": 14893, "loc": { "start": { - "line": 437, + "line": 438, "column": 8 }, "end": { - "line": 437, + "line": 438, "column": 39 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14822, - "end": 14846, + "start": 14868, + "end": 14892, "loc": { "start": { - "line": 437, + "line": 438, "column": 14 }, "end": { - "line": 437, + "line": 438, "column": 38 } }, "id": { "type": "Identifier", - "start": 14822, - "end": 14830, + "start": 14868, + "end": 14876, "loc": { "start": { - "line": 437, + "line": 438, "column": 14 }, "end": { - "line": 437, + "line": 438, "column": 22 }, "identifierName": "children" @@ -26593,29 +26644,29 @@ }, "init": { "type": "MemberExpression", - "start": 14833, - "end": 14846, + "start": 14879, + "end": 14892, "loc": { "start": { - "line": 437, + "line": 438, "column": 25 }, "end": { - "line": 437, + "line": 438, "column": 38 } }, "object": { "type": "Identifier", - "start": 14833, - "end": 14837, + "start": 14879, + "end": 14883, "loc": { "start": { - "line": 437, + "line": 438, "column": 25 }, "end": { - "line": 437, + "line": 438, "column": 29 }, "identifierName": "node" @@ -26624,15 +26675,15 @@ }, "property": { "type": "Identifier", - "start": 14838, - "end": 14846, + "start": 14884, + "end": 14892, "loc": { "start": { - "line": 437, + "line": 438, "column": 30 }, "end": { - "line": 437, + "line": 438, "column": 38 }, "identifierName": "children" @@ -26647,58 +26698,58 @@ }, { "type": "ForStatement", - "start": 14856, - "end": 15066, + "start": 14902, + "end": 15114, "loc": { "start": { - "line": 438, + "line": 439, "column": 8 }, "end": { - "line": 443, + "line": 444, "column": 9 } }, "init": { "type": "VariableDeclaration", - "start": 14861, - "end": 14893, + "start": 14907, + "end": 14939, "loc": { "start": { - "line": 438, + "line": 439, "column": 13 }, "end": { - "line": 438, + "line": 439, "column": 45 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14865, - "end": 14870, + "start": 14911, + "end": 14916, "loc": { "start": { - "line": 438, + "line": 439, "column": 17 }, "end": { - "line": 438, + "line": 439, "column": 22 } }, "id": { "type": "Identifier", - "start": 14865, - "end": 14866, + "start": 14911, + "end": 14912, "loc": { "start": { - "line": 438, + "line": 439, "column": 17 }, "end": { - "line": 438, + "line": 439, "column": 18 }, "identifierName": "i" @@ -26707,15 +26758,15 @@ }, "init": { "type": "NumericLiteral", - "start": 14869, - "end": 14870, + "start": 14915, + "end": 14916, "loc": { "start": { - "line": 438, + "line": 439, "column": 21 }, "end": { - "line": 438, + "line": 439, "column": 22 } }, @@ -26728,29 +26779,29 @@ }, { "type": "VariableDeclarator", - "start": 14872, - "end": 14893, + "start": 14918, + "end": 14939, "loc": { "start": { - "line": 438, + "line": 439, "column": 24 }, "end": { - "line": 438, + "line": 439, "column": 45 } }, "id": { "type": "Identifier", - "start": 14872, - "end": 14875, + "start": 14918, + "end": 14921, "loc": { "start": { - "line": 438, + "line": 439, "column": 24 }, "end": { - "line": 438, + "line": 439, "column": 27 }, "identifierName": "len" @@ -26759,29 +26810,29 @@ }, "init": { "type": "MemberExpression", - "start": 14878, - "end": 14893, + "start": 14924, + "end": 14939, "loc": { "start": { - "line": 438, + "line": 439, "column": 30 }, "end": { - "line": 438, + "line": 439, "column": 45 } }, "object": { "type": "Identifier", - "start": 14878, - "end": 14886, + "start": 14924, + "end": 14932, "loc": { "start": { - "line": 438, + "line": 439, "column": 30 }, "end": { - "line": 438, + "line": 439, "column": 38 }, "identifierName": "children" @@ -26790,15 +26841,15 @@ }, "property": { "type": "Identifier", - "start": 14887, - "end": 14893, + "start": 14933, + "end": 14939, "loc": { "start": { - "line": 438, + "line": 439, "column": 39 }, "end": { - "line": 438, + "line": 439, "column": 45 }, "identifierName": "length" @@ -26813,29 +26864,29 @@ }, "test": { "type": "BinaryExpression", - "start": 14895, - "end": 14902, + "start": 14941, + "end": 14948, "loc": { "start": { - "line": 438, + "line": 439, "column": 47 }, "end": { - "line": 438, + "line": 439, "column": 54 } }, "left": { "type": "Identifier", - "start": 14895, - "end": 14896, + "start": 14941, + "end": 14942, "loc": { "start": { - "line": 438, + "line": 439, "column": 47 }, "end": { - "line": 438, + "line": 439, "column": 48 }, "identifierName": "i" @@ -26845,15 +26896,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 14899, - "end": 14902, + "start": 14945, + "end": 14948, "loc": { "start": { - "line": 438, + "line": 439, "column": 51 }, "end": { - "line": 438, + "line": 439, "column": 54 }, "identifierName": "len" @@ -26863,15 +26914,15 @@ }, "update": { "type": "UpdateExpression", - "start": 14904, - "end": 14907, + "start": 14950, + "end": 14953, "loc": { "start": { - "line": 438, + "line": 439, "column": 56 }, "end": { - "line": 438, + "line": 439, "column": 59 } }, @@ -26879,15 +26930,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 14904, - "end": 14905, + "start": 14950, + "end": 14951, "loc": { "start": { - "line": 438, + "line": 439, "column": 56 }, "end": { - "line": 438, + "line": 439, "column": 57 }, "identifierName": "i" @@ -26897,59 +26948,59 @@ }, "body": { "type": "BlockStatement", - "start": 14909, - "end": 15066, + "start": 14955, + "end": 15114, "loc": { "start": { - "line": 438, + "line": 439, "column": 61 }, "end": { - "line": 443, + "line": 444, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 14923, - "end": 14953, + "start": 14969, + "end": 14999, "loc": { "start": { - "line": 439, + "line": 440, "column": 12 }, "end": { - "line": 439, + "line": 440, "column": 42 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 14929, - "end": 14952, + "start": 14975, + "end": 14998, "loc": { "start": { - "line": 439, + "line": 440, "column": 18 }, "end": { - "line": 439, + "line": 440, "column": 41 } }, "id": { "type": "Identifier", - "start": 14929, - "end": 14938, + "start": 14975, + "end": 14984, "loc": { "start": { - "line": 439, + "line": 440, "column": 18 }, "end": { - "line": 439, + "line": 440, "column": 27 }, "identifierName": "childNode" @@ -26958,29 +27009,29 @@ }, "init": { "type": "MemberExpression", - "start": 14941, - "end": 14952, + "start": 14987, + "end": 14998, "loc": { "start": { - "line": 439, + "line": 440, "column": 30 }, "end": { - "line": 439, + "line": 440, "column": 41 } }, "object": { "type": "Identifier", - "start": 14941, - "end": 14949, + "start": 14987, + "end": 14995, "loc": { "start": { - "line": 439, + "line": 440, "column": 30 }, "end": { - "line": 439, + "line": 440, "column": 38 }, "identifierName": "children" @@ -26989,15 +27040,15 @@ }, "property": { "type": "Identifier", - "start": 14950, - "end": 14951, + "start": 14996, + "end": 14997, "loc": { "start": { - "line": 439, + "line": 440, "column": 39 }, "end": { - "line": 439, + "line": 440, "column": 40 }, "identifierName": "i" @@ -27012,43 +27063,43 @@ }, { "type": "IfStatement", - "start": 14966, - "end": 15056, + "start": 15012, + "end": 15104, "loc": { "start": { - "line": 440, + "line": 441, "column": 12 }, "end": { - "line": 442, + "line": 443, "column": 13 } }, "test": { "type": "CallExpression", - "start": 14970, - "end": 15010, + "start": 15016, + "end": 15058, "loc": { "start": { - "line": 440, + "line": 441, "column": 16 }, "end": { - "line": 440, - "column": 56 + "line": 441, + "column": 58 } }, "callee": { "type": "Identifier", - "start": 14970, - "end": 14990, + "start": 15016, + "end": 15036, "loc": { "start": { - "line": 440, + "line": 441, "column": 16 }, "end": { - "line": 440, + "line": 441, "column": 36 }, "identifierName": "testIfNodesHaveNames" @@ -27058,15 +27109,15 @@ "arguments": [ { "type": "Identifier", - "start": 14991, - "end": 15000, + "start": 15037, + "end": 15046, "loc": { "start": { - "line": 440, + "line": 441, "column": 37 }, "end": { - "line": 440, + "line": 441, "column": 46 }, "identifierName": "childNode" @@ -27075,29 +27126,29 @@ }, { "type": "BinaryExpression", - "start": 15002, - "end": 15009, + "start": 15048, + "end": 15057, "loc": { "start": { - "line": 440, + "line": 441, "column": 48 }, "end": { - "line": 440, - "column": 55 + "line": 441, + "column": 57 } }, "left": { "type": "Identifier", - "start": 15002, - "end": 15007, + "start": 15048, + "end": 15053, "loc": { "start": { - "line": 440, + "line": 441, "column": 48 }, "end": { - "line": 440, + "line": 441, "column": 53 }, "identifierName": "level" @@ -27107,16 +27158,16 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 15008, - "end": 15009, + "start": 15056, + "end": 15057, "loc": { "start": { - "line": 440, - "column": 54 + "line": 441, + "column": 56 }, "end": { - "line": 440, - "column": 55 + "line": 441, + "column": 57 } }, "extra": { @@ -27130,44 +27181,44 @@ }, "consequent": { "type": "BlockStatement", - "start": 15012, - "end": 15056, + "start": 15060, + "end": 15104, "loc": { "start": { - "line": 440, - "column": 58 + "line": 441, + "column": 60 }, "end": { - "line": 442, + "line": 443, "column": 13 } }, "body": [ { "type": "ReturnStatement", - "start": 15030, - "end": 15042, + "start": 15078, + "end": 15090, "loc": { "start": { - "line": 441, + "line": 442, "column": 16 }, "end": { - "line": 441, + "line": 442, "column": 28 } }, "argument": { "type": "BooleanLiteral", - "start": 15037, - "end": 15041, + "start": 15085, + "end": 15089, "loc": { "start": { - "line": 441, + "line": 442, "column": 23 }, "end": { - "line": 441, + "line": 442, "column": 27 } }, @@ -27190,29 +27241,29 @@ }, { "type": "ReturnStatement", - "start": 15077, - "end": 15090, + "start": 15125, + "end": 15138, "loc": { "start": { - "line": 445, + "line": 446, "column": 4 }, "end": { - "line": 445, + "line": 446, "column": 17 } }, "argument": { "type": "BooleanLiteral", - "start": 15084, - "end": 15089, + "start": 15132, + "end": 15137, "loc": { "start": { - "line": 445, + "line": 446, "column": 11 }, "end": { - "line": 445, + "line": 446, "column": 16 } }, @@ -27227,15 +27278,15 @@ { "type": "CommentBlock", "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", - "start": 15094, - "end": 15263, + "start": 15142, + "end": 15311, "loc": { "start": { - "line": 448, + "line": 449, "column": 0 }, "end": { - "line": 451, + "line": 452, "column": 3 } } @@ -27244,44 +27295,44 @@ }, { "type": "VariableDeclaration", - "start": 15264, - "end": 16294, + "start": 15312, + "end": 16342, "loc": { "start": { - "line": 452, + "line": 453, "column": 0 }, "end": { - "line": 484, + "line": 485, "column": 5 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15270, - "end": 16293, + "start": 15318, + "end": 16341, "loc": { "start": { - "line": 452, + "line": 453, "column": 6 }, "end": { - "line": 484, + "line": 485, "column": 4 } }, "id": { "type": "Identifier", - "start": 15270, - "end": 15292, + "start": 15318, + "end": 15340, "loc": { "start": { - "line": 452, + "line": 453, "column": 6 }, "end": { - "line": 452, + "line": 453, "column": 28 }, "identifierName": "parseNodesWithoutNames" @@ -27291,29 +27342,29 @@ }, "init": { "type": "CallExpression", - "start": 15295, - "end": 16293, + "start": 15343, + "end": 16341, "loc": { "start": { - "line": 452, + "line": 453, "column": 31 }, "end": { - "line": 484, + "line": 485, "column": 4 } }, "callee": { "type": "FunctionExpression", - "start": 15296, - "end": 16290, + "start": 15344, + "end": 16338, "loc": { "start": { - "line": 452, + "line": 453, "column": 32 }, "end": { - "line": 484, + "line": 485, "column": 1 } }, @@ -27324,59 +27375,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 15308, - "end": 16290, + "start": 15356, + "end": 16338, "loc": { "start": { - "line": 452, + "line": 453, "column": 44 }, "end": { - "line": 484, + "line": 485, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 15315, - "end": 15334, + "start": 15363, + "end": 15382, "loc": { "start": { - "line": 454, + "line": 455, "column": 4 }, "end": { - "line": 454, + "line": 455, "column": 23 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15321, - "end": 15333, + "start": 15369, + "end": 15381, "loc": { "start": { - "line": 454, + "line": 455, "column": 10 }, "end": { - "line": 454, + "line": 455, "column": 22 } }, "id": { "type": "Identifier", - "start": 15321, - "end": 15328, + "start": 15369, + "end": 15376, "loc": { "start": { - "line": 454, + "line": 455, "column": 10 }, "end": { - "line": 454, + "line": 455, "column": 17 }, "identifierName": "meshIds" @@ -27385,15 +27436,15 @@ }, "init": { "type": "ArrayExpression", - "start": 15331, - "end": 15333, + "start": 15379, + "end": 15381, "loc": { "start": { - "line": 454, + "line": 455, "column": 20 }, "end": { - "line": 454, + "line": 455, "column": 22 } }, @@ -27405,29 +27456,29 @@ }, { "type": "ReturnStatement", - "start": 15340, - "end": 16288, + "start": 15388, + "end": 16336, "loc": { "start": { - "line": 456, + "line": 457, "column": 4 }, "end": { - "line": 483, + "line": 484, "column": 5 } }, "argument": { "type": "FunctionExpression", - "start": 15347, - "end": 16288, + "start": 15395, + "end": 16336, "loc": { "start": { - "line": 456, + "line": 457, "column": 11 }, "end": { - "line": 483, + "line": 484, "column": 5 } }, @@ -27438,15 +27489,15 @@ "params": [ { "type": "Identifier", - "start": 15357, - "end": 15360, + "start": 15405, + "end": 15408, "loc": { "start": { - "line": 456, + "line": 457, "column": 21 }, "end": { - "line": 456, + "line": 457, "column": 24 }, "identifierName": "ctx" @@ -27455,15 +27506,15 @@ }, { "type": "Identifier", - "start": 15362, - "end": 15366, + "start": 15410, + "end": 15414, "loc": { "start": { - "line": 456, + "line": 457, "column": 26 }, "end": { - "line": 456, + "line": 457, "column": 30 }, "identifierName": "node" @@ -27472,15 +27523,15 @@ }, { "type": "Identifier", - "start": 15368, - "end": 15373, + "start": 15416, + "end": 15421, "loc": { "start": { - "line": 456, + "line": 457, "column": 32 }, "end": { - "line": 456, + "line": 457, "column": 37 }, "identifierName": "depth" @@ -27489,15 +27540,15 @@ }, { "type": "Identifier", - "start": 15375, - "end": 15381, + "start": 15423, + "end": 15429, "loc": { "start": { - "line": 456, + "line": 457, "column": 39 }, "end": { - "line": 456, + "line": 457, "column": 45 }, "identifierName": "matrix" @@ -27507,44 +27558,44 @@ ], "body": { "type": "BlockStatement", - "start": 15383, - "end": 16288, + "start": 15431, + "end": 16336, "loc": { "start": { - "line": 456, + "line": 457, "column": 47 }, "end": { - "line": 483, + "line": 484, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 15393, - "end": 15435, + "start": 15441, + "end": 15483, "loc": { "start": { - "line": 457, + "line": 458, "column": 8 }, "end": { - "line": 459, + "line": 460, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 15397, - "end": 15402, + "start": 15445, + "end": 15450, "loc": { "start": { - "line": 457, + "line": 458, "column": 12 }, "end": { - "line": 457, + "line": 458, "column": 17 } }, @@ -27552,15 +27603,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 15398, - "end": 15402, + "start": 15446, + "end": 15450, "loc": { "start": { - "line": 457, + "line": 458, "column": 13 }, "end": { - "line": 457, + "line": 458, "column": 17 }, "identifierName": "node" @@ -27573,30 +27624,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 15404, - "end": 15435, + "start": 15452, + "end": 15483, "loc": { "start": { - "line": 457, + "line": 458, "column": 19 }, "end": { - "line": 459, + "line": 460, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 15418, - "end": 15425, + "start": 15466, + "end": 15473, "loc": { "start": { - "line": 458, + "line": 459, "column": 12 }, "end": { - "line": 458, + "line": 459, "column": 19 } }, @@ -27609,44 +27660,44 @@ }, { "type": "ExpressionStatement", - "start": 15444, - "end": 15483, + "start": 15492, + "end": 15531, "loc": { "start": { - "line": 460, + "line": 461, "column": 8 }, "end": { - "line": 460, + "line": 461, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 15444, - "end": 15482, + "start": 15492, + "end": 15530, "loc": { "start": { - "line": 460, + "line": 461, "column": 8 }, "end": { - "line": 460, + "line": 461, "column": 46 } }, "operator": "=", "left": { "type": "Identifier", - "start": 15444, - "end": 15450, + "start": 15492, + "end": 15498, "loc": { "start": { - "line": 460, + "line": 461, "column": 8 }, "end": { - "line": 460, + "line": 461, "column": 14 }, "identifierName": "matrix" @@ -27655,29 +27706,29 @@ }, "right": { "type": "CallExpression", - "start": 15453, - "end": 15482, + "start": 15501, + "end": 15530, "loc": { "start": { - "line": 460, + "line": 461, "column": 17 }, "end": { - "line": 460, + "line": 461, "column": 46 } }, "callee": { "type": "Identifier", - "start": 15453, - "end": 15468, + "start": 15501, + "end": 15516, "loc": { "start": { - "line": 460, + "line": 461, "column": 17 }, "end": { - "line": 460, + "line": 461, "column": 32 }, "identifierName": "parseNodeMatrix" @@ -27687,15 +27738,15 @@ "arguments": [ { "type": "Identifier", - "start": 15469, - "end": 15473, + "start": 15517, + "end": 15521, "loc": { "start": { - "line": 460, + "line": 461, "column": 33 }, "end": { - "line": 460, + "line": 461, "column": 37 }, "identifierName": "node" @@ -27704,15 +27755,15 @@ }, { "type": "Identifier", - "start": 15475, - "end": 15481, + "start": 15523, + "end": 15529, "loc": { "start": { - "line": 460, + "line": 461, "column": 39 }, "end": { - "line": 460, + "line": 461, "column": 45 }, "identifierName": "matrix" @@ -27725,43 +27776,43 @@ }, { "type": "IfStatement", - "start": 15492, - "end": 15573, + "start": 15540, + "end": 15621, "loc": { "start": { - "line": 461, + "line": 462, "column": 8 }, "end": { - "line": 463, + "line": 464, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 15496, - "end": 15505, + "start": 15544, + "end": 15553, "loc": { "start": { - "line": 461, + "line": 462, "column": 12 }, "end": { - "line": 461, + "line": 462, "column": 21 } }, "object": { "type": "Identifier", - "start": 15496, - "end": 15500, + "start": 15544, + "end": 15548, "loc": { "start": { - "line": 461, + "line": 462, "column": 12 }, "end": { - "line": 461, + "line": 462, "column": 16 }, "identifierName": "node" @@ -27770,15 +27821,15 @@ }, "property": { "type": "Identifier", - "start": 15501, - "end": 15505, + "start": 15549, + "end": 15553, "loc": { "start": { - "line": 461, + "line": 462, "column": 17 }, "end": { - "line": 461, + "line": 462, "column": 21 }, "identifierName": "mesh" @@ -27789,58 +27840,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 15507, - "end": 15573, + "start": 15555, + "end": 15621, "loc": { "start": { - "line": 461, + "line": 462, "column": 23 }, "end": { - "line": 463, + "line": 464, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 15521, - "end": 15563, + "start": 15569, + "end": 15611, "loc": { "start": { - "line": 462, + "line": 463, "column": 12 }, "end": { - "line": 462, + "line": 463, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 15521, - "end": 15562, + "start": 15569, + "end": 15610, "loc": { "start": { - "line": 462, + "line": 463, "column": 12 }, "end": { - "line": 462, + "line": 463, "column": 53 } }, "callee": { "type": "Identifier", - "start": 15521, - "end": 15534, + "start": 15569, + "end": 15582, "loc": { "start": { - "line": 462, + "line": 463, "column": 12 }, "end": { - "line": 462, + "line": 463, "column": 25 }, "identifierName": "parseNodeMesh" @@ -27850,15 +27901,15 @@ "arguments": [ { "type": "Identifier", - "start": 15535, - "end": 15539, + "start": 15583, + "end": 15587, "loc": { "start": { - "line": 462, + "line": 463, "column": 26 }, "end": { - "line": 462, + "line": 463, "column": 30 }, "identifierName": "node" @@ -27867,15 +27918,15 @@ }, { "type": "Identifier", - "start": 15541, - "end": 15544, + "start": 15589, + "end": 15592, "loc": { "start": { - "line": 462, + "line": 463, "column": 32 }, "end": { - "line": 462, + "line": 463, "column": 35 }, "identifierName": "ctx" @@ -27884,15 +27935,15 @@ }, { "type": "Identifier", - "start": 15546, - "end": 15552, + "start": 15594, + "end": 15600, "loc": { "start": { - "line": 462, + "line": 463, "column": 37 }, "end": { - "line": 462, + "line": 463, "column": 43 }, "identifierName": "matrix" @@ -27901,15 +27952,15 @@ }, { "type": "Identifier", - "start": 15554, - "end": 15561, + "start": 15602, + "end": 15609, "loc": { "start": { - "line": 462, + "line": 463, "column": 45 }, "end": { - "line": 462, + "line": 463, "column": 52 }, "identifierName": "meshIds" @@ -27926,43 +27977,43 @@ }, { "type": "IfStatement", - "start": 15582, - "end": 15859, + "start": 15630, + "end": 15907, "loc": { "start": { - "line": 464, + "line": 465, "column": 8 }, "end": { - "line": 470, + "line": 471, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 15586, - "end": 15599, + "start": 15634, + "end": 15647, "loc": { "start": { - "line": 464, + "line": 465, "column": 12 }, "end": { - "line": 464, + "line": 465, "column": 25 } }, "object": { "type": "Identifier", - "start": 15586, - "end": 15590, + "start": 15634, + "end": 15638, "loc": { "start": { - "line": 464, + "line": 465, "column": 12 }, "end": { - "line": 464, + "line": 465, "column": 16 }, "identifierName": "node" @@ -27971,15 +28022,15 @@ }, "property": { "type": "Identifier", - "start": 15591, - "end": 15599, + "start": 15639, + "end": 15647, "loc": { "start": { - "line": 464, + "line": 465, "column": 17 }, "end": { - "line": 464, + "line": 465, "column": 25 }, "identifierName": "children" @@ -27990,59 +28041,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15601, - "end": 15859, + "start": 15649, + "end": 15907, "loc": { "start": { - "line": 464, + "line": 465, "column": 27 }, "end": { - "line": 470, + "line": 471, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 15615, - "end": 15646, + "start": 15663, + "end": 15694, "loc": { "start": { - "line": 465, + "line": 466, "column": 12 }, "end": { - "line": 465, + "line": 466, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15621, - "end": 15645, + "start": 15669, + "end": 15693, "loc": { "start": { - "line": 465, + "line": 466, "column": 18 }, "end": { - "line": 465, + "line": 466, "column": 42 } }, "id": { "type": "Identifier", - "start": 15621, - "end": 15629, + "start": 15669, + "end": 15677, "loc": { "start": { - "line": 465, + "line": 466, "column": 18 }, "end": { - "line": 465, + "line": 466, "column": 26 }, "identifierName": "children" @@ -28051,29 +28102,29 @@ }, "init": { "type": "MemberExpression", - "start": 15632, - "end": 15645, + "start": 15680, + "end": 15693, "loc": { "start": { - "line": 465, + "line": 466, "column": 29 }, "end": { - "line": 465, + "line": 466, "column": 42 } }, "object": { "type": "Identifier", - "start": 15632, - "end": 15636, + "start": 15680, + "end": 15684, "loc": { "start": { - "line": 465, + "line": 466, "column": 29 }, "end": { - "line": 465, + "line": 466, "column": 33 }, "identifierName": "node" @@ -28082,15 +28133,15 @@ }, "property": { "type": "Identifier", - "start": 15637, - "end": 15645, + "start": 15685, + "end": 15693, "loc": { "start": { - "line": 465, + "line": 466, "column": 34 }, "end": { - "line": 465, + "line": 466, "column": 42 }, "identifierName": "children" @@ -28105,58 +28156,58 @@ }, { "type": "ForStatement", - "start": 15659, - "end": 15849, + "start": 15707, + "end": 15897, "loc": { "start": { - "line": 466, + "line": 467, "column": 12 }, "end": { - "line": 469, + "line": 470, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 15664, - "end": 15696, + "start": 15712, + "end": 15744, "loc": { "start": { - "line": 466, + "line": 467, "column": 17 }, "end": { - "line": 466, + "line": 467, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15668, - "end": 15673, + "start": 15716, + "end": 15721, "loc": { "start": { - "line": 466, + "line": 467, "column": 21 }, "end": { - "line": 466, + "line": 467, "column": 26 } }, "id": { "type": "Identifier", - "start": 15668, - "end": 15669, + "start": 15716, + "end": 15717, "loc": { "start": { - "line": 466, + "line": 467, "column": 21 }, "end": { - "line": 466, + "line": 467, "column": 22 }, "identifierName": "i" @@ -28165,15 +28216,15 @@ }, "init": { "type": "NumericLiteral", - "start": 15672, - "end": 15673, + "start": 15720, + "end": 15721, "loc": { "start": { - "line": 466, + "line": 467, "column": 25 }, "end": { - "line": 466, + "line": 467, "column": 26 } }, @@ -28186,29 +28237,29 @@ }, { "type": "VariableDeclarator", - "start": 15675, - "end": 15696, + "start": 15723, + "end": 15744, "loc": { "start": { - "line": 466, + "line": 467, "column": 28 }, "end": { - "line": 466, + "line": 467, "column": 49 } }, "id": { "type": "Identifier", - "start": 15675, - "end": 15678, + "start": 15723, + "end": 15726, "loc": { "start": { - "line": 466, + "line": 467, "column": 28 }, "end": { - "line": 466, + "line": 467, "column": 31 }, "identifierName": "len" @@ -28217,29 +28268,29 @@ }, "init": { "type": "MemberExpression", - "start": 15681, - "end": 15696, + "start": 15729, + "end": 15744, "loc": { "start": { - "line": 466, + "line": 467, "column": 34 }, "end": { - "line": 466, + "line": 467, "column": 49 } }, "object": { "type": "Identifier", - "start": 15681, - "end": 15689, + "start": 15729, + "end": 15737, "loc": { "start": { - "line": 466, + "line": 467, "column": 34 }, "end": { - "line": 466, + "line": 467, "column": 42 }, "identifierName": "children" @@ -28248,15 +28299,15 @@ }, "property": { "type": "Identifier", - "start": 15690, - "end": 15696, + "start": 15738, + "end": 15744, "loc": { "start": { - "line": 466, + "line": 467, "column": 43 }, "end": { - "line": 466, + "line": 467, "column": 49 }, "identifierName": "length" @@ -28271,29 +28322,29 @@ }, "test": { "type": "BinaryExpression", - "start": 15698, - "end": 15705, + "start": 15746, + "end": 15753, "loc": { "start": { - "line": 466, + "line": 467, "column": 51 }, "end": { - "line": 466, + "line": 467, "column": 58 } }, "left": { "type": "Identifier", - "start": 15698, - "end": 15699, + "start": 15746, + "end": 15747, "loc": { "start": { - "line": 466, + "line": 467, "column": 51 }, "end": { - "line": 466, + "line": 467, "column": 52 }, "identifierName": "i" @@ -28303,15 +28354,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 15702, - "end": 15705, + "start": 15750, + "end": 15753, "loc": { "start": { - "line": 466, + "line": 467, "column": 55 }, "end": { - "line": 466, + "line": 467, "column": 58 }, "identifierName": "len" @@ -28321,15 +28372,15 @@ }, "update": { "type": "UpdateExpression", - "start": 15707, - "end": 15710, + "start": 15755, + "end": 15758, "loc": { "start": { - "line": 466, + "line": 467, "column": 60 }, "end": { - "line": 466, + "line": 467, "column": 63 } }, @@ -28337,15 +28388,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 15707, - "end": 15708, + "start": 15755, + "end": 15756, "loc": { "start": { - "line": 466, + "line": 467, "column": 60 }, "end": { - "line": 466, + "line": 467, "column": 61 }, "identifierName": "i" @@ -28355,59 +28406,59 @@ }, "body": { "type": "BlockStatement", - "start": 15712, - "end": 15849, + "start": 15760, + "end": 15897, "loc": { "start": { - "line": 466, + "line": 467, "column": 65 }, "end": { - "line": 469, + "line": 470, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 15730, - "end": 15760, + "start": 15778, + "end": 15808, "loc": { "start": { - "line": 467, + "line": 468, "column": 16 }, "end": { - "line": 467, + "line": 468, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15736, - "end": 15759, + "start": 15784, + "end": 15807, "loc": { "start": { - "line": 467, + "line": 468, "column": 22 }, "end": { - "line": 467, + "line": 468, "column": 45 } }, "id": { "type": "Identifier", - "start": 15736, - "end": 15745, + "start": 15784, + "end": 15793, "loc": { "start": { - "line": 467, + "line": 468, "column": 22 }, "end": { - "line": 467, + "line": 468, "column": 31 }, "identifierName": "childNode" @@ -28416,29 +28467,29 @@ }, "init": { "type": "MemberExpression", - "start": 15748, - "end": 15759, + "start": 15796, + "end": 15807, "loc": { "start": { - "line": 467, + "line": 468, "column": 34 }, "end": { - "line": 467, + "line": 468, "column": 45 } }, "object": { "type": "Identifier", - "start": 15748, - "end": 15756, + "start": 15796, + "end": 15804, "loc": { "start": { - "line": 467, + "line": 468, "column": 34 }, "end": { - "line": 467, + "line": 468, "column": 42 }, "identifierName": "children" @@ -28447,15 +28498,15 @@ }, "property": { "type": "Identifier", - "start": 15757, - "end": 15758, + "start": 15805, + "end": 15806, "loc": { "start": { - "line": 467, + "line": 468, "column": 43 }, "end": { - "line": 467, + "line": 468, "column": 44 }, "identifierName": "i" @@ -28470,43 +28521,43 @@ }, { "type": "ExpressionStatement", - "start": 15777, - "end": 15835, + "start": 15825, + "end": 15883, "loc": { "start": { - "line": 468, + "line": 469, "column": 16 }, "end": { - "line": 468, + "line": 469, "column": 74 } }, "expression": { "type": "CallExpression", - "start": 15777, - "end": 15834, + "start": 15825, + "end": 15882, "loc": { "start": { - "line": 468, + "line": 469, "column": 16 }, "end": { - "line": 468, + "line": 469, "column": 73 } }, "callee": { "type": "Identifier", - "start": 15777, - "end": 15799, + "start": 15825, + "end": 15847, "loc": { "start": { - "line": 468, + "line": 469, "column": 16 }, "end": { - "line": 468, + "line": 469, "column": 38 }, "identifierName": "parseNodesWithoutNames" @@ -28516,15 +28567,15 @@ "arguments": [ { "type": "Identifier", - "start": 15800, - "end": 15803, + "start": 15848, + "end": 15851, "loc": { "start": { - "line": 468, + "line": 469, "column": 39 }, "end": { - "line": 468, + "line": 469, "column": 42 }, "identifierName": "ctx" @@ -28533,15 +28584,15 @@ }, { "type": "Identifier", - "start": 15805, - "end": 15814, + "start": 15853, + "end": 15862, "loc": { "start": { - "line": 468, + "line": 469, "column": 44 }, "end": { - "line": 468, + "line": 469, "column": 53 }, "identifierName": "childNode" @@ -28550,29 +28601,29 @@ }, { "type": "BinaryExpression", - "start": 15816, - "end": 15825, + "start": 15864, + "end": 15873, "loc": { "start": { - "line": 468, + "line": 469, "column": 55 }, "end": { - "line": 468, + "line": 469, "column": 64 } }, "left": { "type": "Identifier", - "start": 15816, - "end": 15821, + "start": 15864, + "end": 15869, "loc": { "start": { - "line": 468, + "line": 469, "column": 55 }, "end": { - "line": 468, + "line": 469, "column": 60 }, "identifierName": "depth" @@ -28582,15 +28633,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 15824, - "end": 15825, + "start": 15872, + "end": 15873, "loc": { "start": { - "line": 468, + "line": 469, "column": 63 }, "end": { - "line": 468, + "line": 469, "column": 64 } }, @@ -28603,15 +28654,15 @@ }, { "type": "Identifier", - "start": 15827, - "end": 15833, + "start": 15875, + "end": 15881, "loc": { "start": { - "line": 468, + "line": 469, "column": 66 }, "end": { - "line": 468, + "line": 469, "column": 72 }, "identifierName": "matrix" @@ -28632,43 +28683,43 @@ }, { "type": "IfStatement", - "start": 15868, - "end": 16282, + "start": 15916, + "end": 16330, "loc": { "start": { - "line": 471, + "line": 472, "column": 8 }, "end": { - "line": 482, + "line": 483, "column": 9 } }, "test": { "type": "BinaryExpression", - "start": 15872, - "end": 15883, + "start": 15920, + "end": 15931, "loc": { "start": { - "line": 471, + "line": 472, "column": 12 }, "end": { - "line": 471, + "line": 472, "column": 23 } }, "left": { "type": "Identifier", - "start": 15872, - "end": 15877, + "start": 15920, + "end": 15925, "loc": { "start": { - "line": 471, + "line": 472, "column": 12 }, "end": { - "line": 471, + "line": 472, "column": 17 }, "identifierName": "depth" @@ -28678,15 +28729,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 15882, - "end": 15883, + "start": 15930, + "end": 15931, "loc": { "start": { - "line": 471, + "line": 472, "column": 22 }, "end": { - "line": 471, + "line": 472, "column": 23 } }, @@ -28699,59 +28750,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 15885, - "end": 16282, + "start": 15933, + "end": 16330, "loc": { "start": { - "line": 471, + "line": 472, "column": 25 }, "end": { - "line": 482, + "line": 483, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 15899, - "end": 15939, + "start": 15947, + "end": 15987, "loc": { "start": { - "line": 472, + "line": 473, "column": 12 }, "end": { - "line": 472, + "line": 473, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 15903, - "end": 15938, + "start": 15951, + "end": 15986, "loc": { "start": { - "line": 472, + "line": 473, "column": 16 }, "end": { - "line": 472, + "line": 473, "column": 51 } }, "id": { "type": "Identifier", - "start": 15903, - "end": 15911, + "start": 15951, + "end": 15959, "loc": { "start": { - "line": 472, + "line": 473, "column": 16 }, "end": { - "line": 472, + "line": 473, "column": 24 }, "identifierName": "entityId" @@ -28760,29 +28811,29 @@ }, "init": { "type": "BinaryExpression", - "start": 15914, - "end": 15938, + "start": 15962, + "end": 15986, "loc": { "start": { - "line": 472, + "line": 473, "column": 27 }, "end": { - "line": 472, + "line": 473, "column": 51 } }, "left": { "type": "StringLiteral", - "start": 15914, - "end": 15923, + "start": 15962, + "end": 15971, "loc": { "start": { - "line": 472, + "line": 473, "column": 27 }, "end": { - "line": 472, + "line": 473, "column": 36 } }, @@ -28795,15 +28846,15 @@ "operator": "+", "right": { "type": "UpdateExpression", - "start": 15926, - "end": 15938, + "start": 15974, + "end": 15986, "loc": { "start": { - "line": 472, + "line": 473, "column": 39 }, "end": { - "line": 472, + "line": 473, "column": 51 } }, @@ -28811,29 +28862,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 15926, - "end": 15936, + "start": 15974, + "end": 15984, "loc": { "start": { - "line": 472, + "line": 473, "column": 39 }, "end": { - "line": 472, + "line": 473, "column": 49 } }, "object": { "type": "Identifier", - "start": 15926, - "end": 15929, + "start": 15974, + "end": 15977, "loc": { "start": { - "line": 472, + "line": 473, "column": 39 }, "end": { - "line": 472, + "line": 473, "column": 42 }, "identifierName": "ctx" @@ -28842,15 +28893,15 @@ }, "property": { "type": "Identifier", - "start": 15930, - "end": 15936, + "start": 15978, + "end": 15984, "loc": { "start": { - "line": 472, + "line": 473, "column": 43 }, "end": { - "line": 472, + "line": 473, "column": 49 }, "identifierName": "nextId" @@ -28867,43 +28918,43 @@ }, { "type": "IfStatement", - "start": 15952, - "end": 16236, + "start": 16000, + "end": 16284, "loc": { "start": { - "line": 473, + "line": 474, "column": 12 }, "end": { - "line": 480, + "line": 481, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 15956, - "end": 15985, + "start": 16004, + "end": 16033, "loc": { "start": { - "line": 473, + "line": 474, "column": 16 }, "end": { - "line": 473, + "line": 474, "column": 45 } }, "left": { "type": "Identifier", - "start": 15956, - "end": 15963, + "start": 16004, + "end": 16011, "loc": { "start": { - "line": 473, + "line": 474, "column": 16 }, "end": { - "line": 473, + "line": 474, "column": 23 }, "identifierName": "meshIds" @@ -28913,43 +28964,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 15967, - "end": 15985, + "start": 16015, + "end": 16033, "loc": { "start": { - "line": 473, + "line": 474, "column": 27 }, "end": { - "line": 473, + "line": 474, "column": 45 } }, "left": { "type": "MemberExpression", - "start": 15967, - "end": 15981, + "start": 16015, + "end": 16029, "loc": { "start": { - "line": 473, + "line": 474, "column": 27 }, "end": { - "line": 473, + "line": 474, "column": 41 } }, "object": { "type": "Identifier", - "start": 15967, - "end": 15974, + "start": 16015, + "end": 16022, "loc": { "start": { - "line": 473, + "line": 474, "column": 27 }, "end": { - "line": 473, + "line": 474, "column": 34 }, "identifierName": "meshIds" @@ -28958,15 +29009,15 @@ }, "property": { "type": "Identifier", - "start": 15975, - "end": 15981, + "start": 16023, + "end": 16029, "loc": { "start": { - "line": 473, + "line": 474, "column": 35 }, "end": { - "line": 473, + "line": 474, "column": 41 }, "identifierName": "length" @@ -28978,15 +29029,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 15984, - "end": 15985, + "start": 16032, + "end": 16033, "loc": { "start": { - "line": 473, + "line": 474, "column": 44 }, "end": { - "line": 473, + "line": 474, "column": 45 } }, @@ -29000,72 +29051,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 15987, - "end": 16236, + "start": 16035, + "end": 16284, "loc": { "start": { - "line": 473, + "line": 474, "column": 47 }, "end": { - "line": 480, + "line": 481, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 16005, - "end": 16064, + "start": 16053, + "end": 16112, "loc": { "start": { - "line": 474, + "line": 475, "column": 16 }, "end": { - "line": 474, + "line": 475, "column": 75 } }, "expression": { "type": "CallExpression", - "start": 16005, - "end": 16063, + "start": 16053, + "end": 16111, "loc": { "start": { - "line": 474, + "line": 475, "column": 16 }, "end": { - "line": 474, + "line": 475, "column": 74 } }, "callee": { "type": "MemberExpression", - "start": 16005, - "end": 16012, + "start": 16053, + "end": 16060, "loc": { "start": { - "line": 474, + "line": 475, "column": 16 }, "end": { - "line": 474, + "line": 475, "column": 23 } }, "object": { "type": "Identifier", - "start": 16005, - "end": 16008, + "start": 16053, + "end": 16056, "loc": { "start": { - "line": 474, + "line": 475, "column": 16 }, "end": { - "line": 474, + "line": 475, "column": 19 }, "identifierName": "ctx" @@ -29074,15 +29125,15 @@ }, "property": { "type": "Identifier", - "start": 16009, - "end": 16012, + "start": 16057, + "end": 16060, "loc": { "start": { - "line": 474, + "line": 475, "column": 20 }, "end": { - "line": 474, + "line": 475, "column": 23 }, "identifierName": "log" @@ -29094,29 +29145,29 @@ "arguments": [ { "type": "BinaryExpression", - "start": 16013, - "end": 16062, + "start": 16061, + "end": 16110, "loc": { "start": { - "line": 474, + "line": 475, "column": 24 }, "end": { - "line": 474, + "line": 475, "column": 73 } }, "left": { "type": "StringLiteral", - "start": 16013, - "end": 16051, + "start": 16061, + "end": 16099, "loc": { "start": { - "line": 474, + "line": 475, "column": 24 }, "end": { - "line": 474, + "line": 475, "column": 62 } }, @@ -29129,15 +29180,15 @@ "operator": "+", "right": { "type": "Identifier", - "start": 16054, - "end": 16062, + "start": 16102, + "end": 16110, "loc": { "start": { - "line": 474, + "line": 475, "column": 65 }, "end": { - "line": 474, + "line": 475, "column": 73 }, "identifierName": "entityId" @@ -29150,71 +29201,71 @@ }, { "type": "ExpressionStatement", - "start": 16081, - "end": 16186, + "start": 16129, + "end": 16234, "loc": { "start": { - "line": 475, + "line": 476, "column": 16 }, "end": { - "line": 478, + "line": 479, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 16081, - "end": 16185, + "start": 16129, + "end": 16233, "loc": { "start": { - "line": 475, + "line": 476, "column": 16 }, "end": { - "line": 478, + "line": 479, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 16081, - "end": 16106, + "start": 16129, + "end": 16154, "loc": { "start": { - "line": 475, + "line": 476, "column": 16 }, "end": { - "line": 475, + "line": 476, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 16081, - "end": 16093, + "start": 16129, + "end": 16141, "loc": { "start": { - "line": 475, + "line": 476, "column": 16 }, "end": { - "line": 475, + "line": 476, "column": 28 } }, "object": { "type": "Identifier", - "start": 16081, - "end": 16084, + "start": 16129, + "end": 16132, "loc": { "start": { - "line": 475, + "line": 476, "column": 16 }, "end": { - "line": 475, + "line": 476, "column": 19 }, "identifierName": "ctx" @@ -29223,15 +29274,15 @@ }, "property": { "type": "Identifier", - "start": 16085, - "end": 16093, + "start": 16133, + "end": 16141, "loc": { "start": { - "line": 475, + "line": 476, "column": 20 }, "end": { - "line": 475, + "line": 476, "column": 28 }, "identifierName": "xktModel" @@ -29242,15 +29293,15 @@ }, "property": { "type": "Identifier", - "start": 16094, - "end": 16106, + "start": 16142, + "end": 16154, "loc": { "start": { - "line": 475, + "line": 476, "column": 29 }, "end": { - "line": 475, + "line": 476, "column": 41 }, "identifierName": "createEntity" @@ -29262,30 +29313,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 16107, - "end": 16184, + "start": 16155, + "end": 16232, "loc": { "start": { - "line": 475, + "line": 476, "column": 42 }, "end": { - "line": 478, + "line": 479, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 16129, - "end": 16137, + "start": 16177, + "end": 16185, "loc": { "start": { - "line": 476, + "line": 477, "column": 20 }, "end": { - "line": 476, + "line": 477, "column": 28 } }, @@ -29294,15 +29345,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16129, - "end": 16137, + "start": 16177, + "end": 16185, "loc": { "start": { - "line": 476, + "line": 477, "column": 20 }, "end": { - "line": 476, + "line": 477, "column": 28 }, "identifierName": "entityId" @@ -29311,15 +29362,15 @@ }, "value": { "type": "Identifier", - "start": 16129, - "end": 16137, + "start": 16177, + "end": 16185, "loc": { "start": { - "line": 476, + "line": 477, "column": 20 }, "end": { - "line": 476, + "line": 477, "column": 28 }, "identifierName": "entityId" @@ -29332,15 +29383,15 @@ }, { "type": "ObjectProperty", - "start": 16159, - "end": 16166, + "start": 16207, + "end": 16214, "loc": { "start": { - "line": 477, + "line": 478, "column": 20 }, "end": { - "line": 477, + "line": 478, "column": 27 } }, @@ -29349,15 +29400,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 16159, - "end": 16166, + "start": 16207, + "end": 16214, "loc": { "start": { - "line": 477, + "line": 478, "column": 20 }, "end": { - "line": 477, + "line": 478, "column": 27 }, "identifierName": "meshIds" @@ -29366,15 +29417,15 @@ }, "value": { "type": "Identifier", - "start": 16159, - "end": 16166, + "start": 16207, + "end": 16214, "loc": { "start": { - "line": 477, + "line": 478, "column": 20 }, "end": { - "line": 477, + "line": 478, "column": 27 }, "identifierName": "meshIds" @@ -29392,58 +29443,58 @@ }, { "type": "ExpressionStatement", - "start": 16203, - "end": 16222, + "start": 16251, + "end": 16270, "loc": { "start": { - "line": 479, + "line": 480, "column": 16 }, "end": { - "line": 479, + "line": 480, "column": 35 } }, "expression": { "type": "AssignmentExpression", - "start": 16203, - "end": 16221, + "start": 16251, + "end": 16269, "loc": { "start": { - "line": 479, + "line": 480, "column": 16 }, "end": { - "line": 479, + "line": 480, "column": 34 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 16203, - "end": 16217, + "start": 16251, + "end": 16265, "loc": { "start": { - "line": 479, + "line": 480, "column": 16 }, "end": { - "line": 479, + "line": 480, "column": 30 } }, "object": { "type": "Identifier", - "start": 16203, - "end": 16210, + "start": 16251, + "end": 16258, "loc": { "start": { - "line": 479, + "line": 480, "column": 16 }, "end": { - "line": 479, + "line": 480, "column": 23 }, "identifierName": "meshIds" @@ -29452,15 +29503,15 @@ }, "property": { "type": "Identifier", - "start": 16211, - "end": 16217, + "start": 16259, + "end": 16265, "loc": { "start": { - "line": 479, + "line": 480, "column": 24 }, "end": { - "line": 479, + "line": 480, "column": 30 }, "identifierName": "length" @@ -29471,15 +29522,15 @@ }, "right": { "type": "NumericLiteral", - "start": 16220, - "end": 16221, + "start": 16268, + "end": 16269, "loc": { "start": { - "line": 479, + "line": 480, "column": 33 }, "end": { - "line": 479, + "line": 480, "column": 34 } }, @@ -29498,29 +29549,29 @@ }, { "type": "ExpressionStatement", - "start": 16249, - "end": 16272, + "start": 16297, + "end": 16320, "loc": { "start": { - "line": 481, + "line": 482, "column": 12 }, "end": { - "line": 481, + "line": 482, "column": 35 } }, "expression": { "type": "UpdateExpression", - "start": 16249, - "end": 16271, + "start": 16297, + "end": 16319, "loc": { "start": { - "line": 481, + "line": 482, "column": 12 }, "end": { - "line": 481, + "line": 482, "column": 34 } }, @@ -29528,43 +29579,43 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 16249, - "end": 16269, + "start": 16297, + "end": 16317, "loc": { "start": { - "line": 481, + "line": 482, "column": 12 }, "end": { - "line": 481, + "line": 482, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 16249, - "end": 16258, + "start": 16297, + "end": 16306, "loc": { "start": { - "line": 481, + "line": 482, "column": 12 }, "end": { - "line": 481, + "line": 482, "column": 21 } }, "object": { "type": "Identifier", - "start": 16249, - "end": 16252, + "start": 16297, + "end": 16300, "loc": { "start": { - "line": 481, + "line": 482, "column": 12 }, "end": { - "line": 481, + "line": 482, "column": 15 }, "identifierName": "ctx" @@ -29573,15 +29624,15 @@ }, "property": { "type": "Identifier", - "start": 16253, - "end": 16258, + "start": 16301, + "end": 16306, "loc": { "start": { - "line": 481, + "line": 482, "column": 16 }, "end": { - "line": 481, + "line": 482, "column": 21 }, "identifierName": "stats" @@ -29592,15 +29643,15 @@ }, "property": { "type": "Identifier", - "start": 16259, - "end": 16269, + "start": 16307, + "end": 16317, "loc": { "start": { - "line": 481, + "line": 482, "column": 22 }, "end": { - "line": 481, + "line": 482, "column": 32 }, "identifierName": "numObjects" @@ -29626,7 +29677,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 15295 + "parenStart": 15343 } }, "arguments": [] @@ -29639,15 +29690,15 @@ { "type": "CommentBlock", "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", - "start": 15094, - "end": 15263, + "start": 15142, + "end": 15311, "loc": { "start": { - "line": 448, + "line": 449, "column": 0 }, "end": { - "line": 451, + "line": 452, "column": 3 } } @@ -29657,15 +29708,15 @@ { "type": "CommentBlock", "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", - "start": 16297, - "end": 16649, + "start": 16345, + "end": 16697, "loc": { "start": { - "line": 487, + "line": 488, "column": 0 }, "end": { - "line": 494, + "line": 495, "column": 3 } } @@ -29674,44 +29725,44 @@ }, { "type": "VariableDeclaration", - "start": 16650, - "end": 18605, + "start": 16698, + "end": 18653, "loc": { "start": { - "line": 495, + "line": 496, "column": 0 }, "end": { - "line": 545, + "line": 546, "column": 5 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16656, - "end": 18604, + "start": 16704, + "end": 18652, "loc": { "start": { - "line": 495, + "line": 496, "column": 6 }, "end": { - "line": 545, + "line": 546, "column": 4 } }, "id": { "type": "Identifier", - "start": 16656, - "end": 16675, + "start": 16704, + "end": 16723, "loc": { "start": { - "line": 495, + "line": 496, "column": 6 }, "end": { - "line": 495, + "line": 496, "column": 25 }, "identifierName": "parseNodesWithNames" @@ -29721,29 +29772,29 @@ }, "init": { "type": "CallExpression", - "start": 16678, - "end": 18604, + "start": 16726, + "end": 18652, "loc": { "start": { - "line": 495, + "line": 496, "column": 28 }, "end": { - "line": 545, + "line": 546, "column": 4 } }, "callee": { "type": "FunctionExpression", - "start": 16679, - "end": 18601, + "start": 16727, + "end": 18649, "loc": { "start": { - "line": 495, + "line": 496, "column": 29 }, "end": { - "line": 545, + "line": 546, "column": 1 } }, @@ -29754,59 +29805,59 @@ "params": [], "body": { "type": "BlockStatement", - "start": 16691, - "end": 18601, + "start": 16739, + "end": 18649, "loc": { "start": { - "line": 495, + "line": 496, "column": 41 }, "end": { - "line": 545, + "line": 546, "column": 1 } }, "body": [ { "type": "VariableDeclaration", - "start": 16698, - "end": 16723, + "start": 16746, + "end": 16771, "loc": { "start": { - "line": 497, + "line": 498, "column": 4 }, "end": { - "line": 497, + "line": 498, "column": 29 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16704, - "end": 16722, + "start": 16752, + "end": 16770, "loc": { "start": { - "line": 497, + "line": 498, "column": 10 }, "end": { - "line": 497, + "line": 498, "column": 28 } }, "id": { "type": "Identifier", - "start": 16704, - "end": 16717, + "start": 16752, + "end": 16765, "loc": { "start": { - "line": 497, + "line": 498, "column": 10 }, "end": { - "line": 497, + "line": 498, "column": 23 }, "identifierName": "objectIdStack" @@ -29815,15 +29866,15 @@ }, "init": { "type": "ArrayExpression", - "start": 16720, - "end": 16722, + "start": 16768, + "end": 16770, "loc": { "start": { - "line": 497, + "line": 498, "column": 26 }, "end": { - "line": 497, + "line": 498, "column": 28 } }, @@ -29835,44 +29886,44 @@ }, { "type": "VariableDeclaration", - "start": 16728, - "end": 16752, + "start": 16776, + "end": 16800, "loc": { "start": { - "line": 498, + "line": 499, "column": 4 }, "end": { - "line": 498, + "line": 499, "column": 28 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16734, - "end": 16751, + "start": 16782, + "end": 16799, "loc": { "start": { - "line": 498, + "line": 499, "column": 10 }, "end": { - "line": 498, + "line": 499, "column": 27 } }, "id": { "type": "Identifier", - "start": 16734, - "end": 16746, + "start": 16782, + "end": 16794, "loc": { "start": { - "line": 498, + "line": 499, "column": 10 }, "end": { - "line": 498, + "line": 499, "column": 22 }, "identifierName": "meshIdsStack" @@ -29881,15 +29932,15 @@ }, "init": { "type": "ArrayExpression", - "start": 16749, - "end": 16751, + "start": 16797, + "end": 16799, "loc": { "start": { - "line": 498, + "line": 499, "column": 25 }, "end": { - "line": 498, + "line": 499, "column": 27 } }, @@ -29901,44 +29952,44 @@ }, { "type": "VariableDeclaration", - "start": 16757, - "end": 16776, + "start": 16805, + "end": 16824, "loc": { "start": { - "line": 499, + "line": 500, "column": 4 }, "end": { - "line": 499, + "line": 500, "column": 23 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16761, - "end": 16775, + "start": 16809, + "end": 16823, "loc": { "start": { - "line": 499, + "line": 500, "column": 8 }, "end": { - "line": 499, + "line": 500, "column": 22 } }, "id": { "type": "Identifier", - "start": 16761, - "end": 16768, + "start": 16809, + "end": 16816, "loc": { "start": { - "line": 499, + "line": 500, "column": 8 }, "end": { - "line": 499, + "line": 500, "column": 15 }, "identifierName": "meshIds" @@ -29947,15 +29998,15 @@ }, "init": { "type": "NullLiteral", - "start": 16771, - "end": 16775, + "start": 16819, + "end": 16823, "loc": { "start": { - "line": 499, + "line": 500, "column": 18 }, "end": { - "line": 499, + "line": 500, "column": 22 } } @@ -29966,29 +30017,29 @@ }, { "type": "ReturnStatement", - "start": 16782, - "end": 18599, + "start": 16830, + "end": 18647, "loc": { "start": { - "line": 501, + "line": 502, "column": 4 }, "end": { - "line": 544, + "line": 545, "column": 5 } }, "argument": { "type": "FunctionExpression", - "start": 16789, - "end": 18599, + "start": 16837, + "end": 18647, "loc": { "start": { - "line": 501, + "line": 502, "column": 11 }, "end": { - "line": 544, + "line": 545, "column": 5 } }, @@ -29999,15 +30050,15 @@ "params": [ { "type": "Identifier", - "start": 16799, - "end": 16802, + "start": 16847, + "end": 16850, "loc": { "start": { - "line": 501, + "line": 502, "column": 21 }, "end": { - "line": 501, + "line": 502, "column": 24 }, "identifierName": "ctx" @@ -30016,15 +30067,15 @@ }, { "type": "Identifier", - "start": 16804, - "end": 16808, + "start": 16852, + "end": 16856, "loc": { "start": { - "line": 501, + "line": 502, "column": 26 }, "end": { - "line": 501, + "line": 502, "column": 30 }, "identifierName": "node" @@ -30033,15 +30084,15 @@ }, { "type": "Identifier", - "start": 16810, - "end": 16815, + "start": 16858, + "end": 16863, "loc": { "start": { - "line": 501, + "line": 502, "column": 32 }, "end": { - "line": 501, + "line": 502, "column": 37 }, "identifierName": "depth" @@ -30050,15 +30101,15 @@ }, { "type": "Identifier", - "start": 16817, - "end": 16823, + "start": 16865, + "end": 16871, "loc": { "start": { - "line": 501, + "line": 502, "column": 39 }, "end": { - "line": 501, + "line": 502, "column": 45 }, "identifierName": "matrix" @@ -30068,44 +30119,44 @@ ], "body": { "type": "BlockStatement", - "start": 16825, - "end": 18599, + "start": 16873, + "end": 18647, "loc": { "start": { - "line": 501, + "line": 502, "column": 47 }, "end": { - "line": 544, + "line": 545, "column": 5 } }, "body": [ { "type": "IfStatement", - "start": 16835, - "end": 16877, + "start": 16883, + "end": 16925, "loc": { "start": { - "line": 502, + "line": 503, "column": 8 }, "end": { - "line": 504, + "line": 505, "column": 9 } }, "test": { "type": "UnaryExpression", - "start": 16839, - "end": 16844, + "start": 16887, + "end": 16892, "loc": { "start": { - "line": 502, + "line": 503, "column": 12 }, "end": { - "line": 502, + "line": 503, "column": 17 } }, @@ -30113,15 +30164,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 16840, - "end": 16844, + "start": 16888, + "end": 16892, "loc": { "start": { - "line": 502, + "line": 503, "column": 13 }, "end": { - "line": 502, + "line": 503, "column": 17 }, "identifierName": "node" @@ -30134,30 +30185,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 16846, - "end": 16877, + "start": 16894, + "end": 16925, "loc": { "start": { - "line": 502, + "line": 503, "column": 19 }, "end": { - "line": 504, + "line": 505, "column": 9 } }, "body": [ { "type": "ReturnStatement", - "start": 16860, - "end": 16867, + "start": 16908, + "end": 16915, "loc": { "start": { - "line": 503, + "line": 504, "column": 12 }, "end": { - "line": 503, + "line": 504, "column": 19 } }, @@ -30170,44 +30221,44 @@ }, { "type": "ExpressionStatement", - "start": 16886, - "end": 16925, + "start": 16934, + "end": 16973, "loc": { "start": { - "line": 505, + "line": 506, "column": 8 }, "end": { - "line": 505, + "line": 506, "column": 47 } }, "expression": { "type": "AssignmentExpression", - "start": 16886, - "end": 16924, + "start": 16934, + "end": 16972, "loc": { "start": { - "line": 505, + "line": 506, "column": 8 }, "end": { - "line": 505, + "line": 506, "column": 46 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16886, - "end": 16892, + "start": 16934, + "end": 16940, "loc": { "start": { - "line": 505, + "line": 506, "column": 8 }, "end": { - "line": 505, + "line": 506, "column": 14 }, "identifierName": "matrix" @@ -30216,29 +30267,29 @@ }, "right": { "type": "CallExpression", - "start": 16895, - "end": 16924, + "start": 16943, + "end": 16972, "loc": { "start": { - "line": 505, + "line": 506, "column": 17 }, "end": { - "line": 505, + "line": 506, "column": 46 } }, "callee": { "type": "Identifier", - "start": 16895, - "end": 16910, + "start": 16943, + "end": 16958, "loc": { "start": { - "line": 505, + "line": 506, "column": 17 }, "end": { - "line": 505, + "line": 506, "column": 32 }, "identifierName": "parseNodeMatrix" @@ -30248,15 +30299,15 @@ "arguments": [ { "type": "Identifier", - "start": 16911, - "end": 16915, + "start": 16959, + "end": 16963, "loc": { "start": { - "line": 505, + "line": 506, "column": 33 }, "end": { - "line": 505, + "line": 506, "column": 37 }, "identifierName": "node" @@ -30265,15 +30316,15 @@ }, { "type": "Identifier", - "start": 16917, - "end": 16923, + "start": 16965, + "end": 16971, "loc": { "start": { - "line": 505, + "line": 506, "column": 39 }, "end": { - "line": 505, + "line": 506, "column": 45 }, "identifierName": "matrix" @@ -30286,43 +30337,43 @@ }, { "type": "IfStatement", - "start": 16934, - "end": 17497, + "start": 16982, + "end": 17545, "loc": { "start": { - "line": 506, + "line": 507, "column": 8 }, "end": { - "line": 517, + "line": 518, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 16938, - "end": 16947, + "start": 16986, + "end": 16995, "loc": { "start": { - "line": 506, + "line": 507, "column": 12 }, "end": { - "line": 506, + "line": 507, "column": 21 } }, "object": { "type": "Identifier", - "start": 16938, - "end": 16942, + "start": 16986, + "end": 16990, "loc": { "start": { - "line": 506, + "line": 507, "column": 12 }, "end": { - "line": 506, + "line": 507, "column": 16 }, "identifierName": "node" @@ -30331,15 +30382,15 @@ }, "property": { "type": "Identifier", - "start": 16943, - "end": 16947, + "start": 16991, + "end": 16995, "loc": { "start": { - "line": 506, + "line": 507, "column": 17 }, "end": { - "line": 506, + "line": 507, "column": 21 }, "identifierName": "name" @@ -30350,59 +30401,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 16949, - "end": 17497, + "start": 16997, + "end": 17545, "loc": { "start": { - "line": 506, + "line": 507, "column": 23 }, "end": { - "line": 517, + "line": 518, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 16963, - "end": 16976, + "start": 17011, + "end": 17024, "loc": { "start": { - "line": 507, + "line": 508, "column": 12 }, "end": { - "line": 507, + "line": 508, "column": 25 } }, "expression": { "type": "AssignmentExpression", - "start": 16963, - "end": 16975, + "start": 17011, + "end": 17023, "loc": { "start": { - "line": 507, + "line": 508, "column": 12 }, "end": { - "line": 507, + "line": 508, "column": 24 } }, "operator": "=", "left": { "type": "Identifier", - "start": 16963, - "end": 16970, + "start": 17011, + "end": 17018, "loc": { "start": { - "line": 507, + "line": 508, "column": 12 }, "end": { - "line": 507, + "line": 508, "column": 19 }, "identifierName": "meshIds" @@ -30411,15 +30462,15 @@ }, "right": { "type": "ArrayExpression", - "start": 16973, - "end": 16975, + "start": 17021, + "end": 17023, "loc": { "start": { - "line": 507, + "line": 508, "column": 22 }, "end": { - "line": 507, + "line": 508, "column": 24 } }, @@ -30429,44 +30480,44 @@ }, { "type": "VariableDeclaration", - "start": 16989, - "end": 17017, + "start": 17037, + "end": 17065, "loc": { "start": { - "line": 508, + "line": 509, "column": 12 }, "end": { - "line": 508, + "line": 509, "column": 40 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 16993, - "end": 17016, + "start": 17041, + "end": 17064, "loc": { "start": { - "line": 508, + "line": 509, "column": 16 }, "end": { - "line": 508, + "line": 509, "column": 39 } }, "id": { "type": "Identifier", - "start": 16993, - "end": 17004, + "start": 17041, + "end": 17052, "loc": { "start": { - "line": 508, + "line": 509, "column": 16 }, "end": { - "line": 508, + "line": 509, "column": 27 }, "identifierName": "xktEntityId" @@ -30475,29 +30526,29 @@ }, "init": { "type": "MemberExpression", - "start": 17007, - "end": 17016, + "start": 17055, + "end": 17064, "loc": { "start": { - "line": 508, + "line": 509, "column": 30 }, "end": { - "line": 508, + "line": 509, "column": 39 } }, "object": { "type": "Identifier", - "start": 17007, - "end": 17011, + "start": 17055, + "end": 17059, "loc": { "start": { - "line": 508, + "line": 509, "column": 30 }, "end": { - "line": 508, + "line": 509, "column": 34 }, "identifierName": "node" @@ -30506,15 +30557,15 @@ }, "property": { "type": "Identifier", - "start": 17012, - "end": 17016, + "start": 17060, + "end": 17064, "loc": { "start": { - "line": 508, + "line": 509, "column": 35 }, "end": { - "line": 508, + "line": 509, "column": 39 }, "identifierName": "name" @@ -30529,43 +30580,43 @@ }, { "type": "IfStatement", - "start": 17030, - "end": 17259, + "start": 17078, + "end": 17307, "loc": { "start": { - "line": 509, + "line": 510, "column": 12 }, "end": { - "line": 511, + "line": 512, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 17034, - "end": 17085, + "start": 17082, + "end": 17133, "loc": { "start": { - "line": 509, + "line": 510, "column": 16 }, "end": { - "line": 509, + "line": 510, "column": 67 } }, "left": { "type": "UnaryExpression", - "start": 17034, - "end": 17047, + "start": 17082, + "end": 17095, "loc": { "start": { - "line": 509, + "line": 510, "column": 16 }, "end": { - "line": 509, + "line": 510, "column": 29 } }, @@ -30573,15 +30624,15 @@ "prefix": true, "argument": { "type": "UnaryExpression", - "start": 17035, - "end": 17047, + "start": 17083, + "end": 17095, "loc": { "start": { - "line": 509, + "line": 510, "column": 17 }, "end": { - "line": 509, + "line": 510, "column": 29 } }, @@ -30589,15 +30640,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 17036, - "end": 17047, + "start": 17084, + "end": 17095, "loc": { "start": { - "line": 509, + "line": 510, "column": 18 }, "end": { - "line": 509, + "line": 510, "column": 29 }, "identifierName": "xktEntityId" @@ -30615,57 +30666,57 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 17051, - "end": 17085, + "start": 17099, + "end": 17133, "loc": { "start": { - "line": 509, + "line": 510, "column": 33 }, "end": { - "line": 509, + "line": 510, "column": 67 } }, "object": { "type": "MemberExpression", - "start": 17051, - "end": 17072, + "start": 17099, + "end": 17120, "loc": { "start": { - "line": 509, + "line": 510, "column": 33 }, "end": { - "line": 509, + "line": 510, "column": 54 } }, "object": { "type": "MemberExpression", - "start": 17051, - "end": 17063, + "start": 17099, + "end": 17111, "loc": { "start": { - "line": 509, + "line": 510, "column": 33 }, "end": { - "line": 509, + "line": 510, "column": 45 } }, "object": { "type": "Identifier", - "start": 17051, - "end": 17054, + "start": 17099, + "end": 17102, "loc": { "start": { - "line": 509, + "line": 510, "column": 33 }, "end": { - "line": 509, + "line": 510, "column": 36 }, "identifierName": "ctx" @@ -30674,15 +30725,15 @@ }, "property": { "type": "Identifier", - "start": 17055, - "end": 17063, + "start": 17103, + "end": 17111, "loc": { "start": { - "line": 509, + "line": 510, "column": 37 }, "end": { - "line": 509, + "line": 510, "column": 45 }, "identifierName": "xktModel" @@ -30693,15 +30744,15 @@ }, "property": { "type": "Identifier", - "start": 17064, - "end": 17072, + "start": 17112, + "end": 17120, "loc": { "start": { - "line": 509, + "line": 510, "column": 46 }, "end": { - "line": 509, + "line": 510, "column": 54 }, "identifierName": "entities" @@ -30712,15 +30763,15 @@ }, "property": { "type": "Identifier", - "start": 17073, - "end": 17084, + "start": 17121, + "end": 17132, "loc": { "start": { - "line": 509, + "line": 510, "column": 55 }, "end": { - "line": 509, + "line": 510, "column": 66 }, "identifierName": "xktEntityId" @@ -30732,72 +30783,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 17087, - "end": 17259, + "start": 17135, + "end": 17307, "loc": { "start": { - "line": 509, + "line": 510, "column": 69 }, "end": { - "line": 511, + "line": 512, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 17105, - "end": 17245, + "start": 17153, + "end": 17293, "loc": { "start": { - "line": 510, + "line": 511, "column": 16 }, "end": { - "line": 510, + "line": 511, "column": 156 } }, "expression": { "type": "CallExpression", - "start": 17105, - "end": 17244, + "start": 17153, + "end": 17292, "loc": { "start": { - "line": 510, + "line": 511, "column": 16 }, "end": { - "line": 510, + "line": 511, "column": 155 } }, "callee": { "type": "MemberExpression", - "start": 17105, - "end": 17112, + "start": 17153, + "end": 17160, "loc": { "start": { - "line": 510, + "line": 511, "column": 16 }, "end": { - "line": 510, + "line": 511, "column": 23 } }, "object": { "type": "Identifier", - "start": 17105, - "end": 17108, + "start": 17153, + "end": 17156, "loc": { "start": { - "line": 510, + "line": 511, "column": 16 }, "end": { - "line": 510, + "line": 511, "column": 19 }, "identifierName": "ctx" @@ -30806,15 +30857,15 @@ }, "property": { "type": "Identifier", - "start": 17109, - "end": 17112, + "start": 17157, + "end": 17160, "loc": { "start": { - "line": 510, + "line": 511, "column": 20 }, "end": { - "line": 510, + "line": 511, "column": 23 }, "identifierName": "log" @@ -30826,30 +30877,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 17113, - "end": 17243, + "start": 17161, + "end": 17291, "loc": { "start": { - "line": 510, + "line": 511, "column": 24 }, "end": { - "line": 510, + "line": 511, "column": 154 } }, "expressions": [ { "type": "Identifier", - "start": 17183, - "end": 17194, + "start": 17231, + "end": 17242, "loc": { "start": { - "line": 510, + "line": 511, "column": 94 }, "end": { - "line": 510, + "line": 511, "column": 105 }, "identifierName": "xktEntityId" @@ -30860,15 +30911,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 17114, - "end": 17181, + "start": 17162, + "end": 17229, "loc": { "start": { - "line": 510, + "line": 511, "column": 25 }, "end": { - "line": 510, + "line": 511, "column": 92 } }, @@ -30880,15 +30931,15 @@ }, { "type": "TemplateElement", - "start": 17195, - "end": 17242, + "start": 17243, + "end": 17290, "loc": { "start": { - "line": 510, + "line": 511, "column": 106 }, "end": { - "line": 510, + "line": 511, "column": 153 } }, @@ -30910,43 +30961,43 @@ }, { "type": "WhileStatement", - "start": 17272, - "end": 17402, + "start": 17320, + "end": 17450, "loc": { "start": { - "line": 512, + "line": 513, "column": 12 }, "end": { - "line": 514, + "line": 515, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 17279, - "end": 17329, + "start": 17327, + "end": 17377, "loc": { "start": { - "line": 512, + "line": 513, "column": 19 }, "end": { - "line": 512, + "line": 513, "column": 69 } }, "left": { "type": "UnaryExpression", - "start": 17279, - "end": 17291, + "start": 17327, + "end": 17339, "loc": { "start": { - "line": 512, + "line": 513, "column": 19 }, "end": { - "line": 512, + "line": 513, "column": 31 } }, @@ -30954,15 +31005,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 17280, - "end": 17291, + "start": 17328, + "end": 17339, "loc": { "start": { - "line": 512, + "line": 513, "column": 20 }, "end": { - "line": 512, + "line": 513, "column": 31 }, "identifierName": "xktEntityId" @@ -30976,57 +31027,57 @@ "operator": "||", "right": { "type": "MemberExpression", - "start": 17295, - "end": 17329, + "start": 17343, + "end": 17377, "loc": { "start": { - "line": 512, + "line": 513, "column": 35 }, "end": { - "line": 512, + "line": 513, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 17295, - "end": 17316, + "start": 17343, + "end": 17364, "loc": { "start": { - "line": 512, + "line": 513, "column": 35 }, "end": { - "line": 512, + "line": 513, "column": 56 } }, "object": { "type": "MemberExpression", - "start": 17295, - "end": 17307, + "start": 17343, + "end": 17355, "loc": { "start": { - "line": 512, + "line": 513, "column": 35 }, "end": { - "line": 512, + "line": 513, "column": 47 } }, "object": { "type": "Identifier", - "start": 17295, - "end": 17298, + "start": 17343, + "end": 17346, "loc": { "start": { - "line": 512, + "line": 513, "column": 35 }, "end": { - "line": 512, + "line": 513, "column": 38 }, "identifierName": "ctx" @@ -31035,15 +31086,15 @@ }, "property": { "type": "Identifier", - "start": 17299, - "end": 17307, + "start": 17347, + "end": 17355, "loc": { "start": { - "line": 512, + "line": 513, "column": 39 }, "end": { - "line": 512, + "line": 513, "column": 47 }, "identifierName": "xktModel" @@ -31054,15 +31105,15 @@ }, "property": { "type": "Identifier", - "start": 17308, - "end": 17316, + "start": 17356, + "end": 17364, "loc": { "start": { - "line": 512, + "line": 513, "column": 48 }, "end": { - "line": 512, + "line": 513, "column": 56 }, "identifierName": "entities" @@ -31073,15 +31124,15 @@ }, "property": { "type": "Identifier", - "start": 17317, - "end": 17328, + "start": 17365, + "end": 17376, "loc": { "start": { - "line": 512, + "line": 513, "column": 57 }, "end": { - "line": 512, + "line": 513, "column": 68 }, "identifierName": "xktEntityId" @@ -31093,59 +31144,59 @@ }, "body": { "type": "BlockStatement", - "start": 17331, - "end": 17402, + "start": 17379, + "end": 17450, "loc": { "start": { - "line": 512, + "line": 513, "column": 71 }, "end": { - "line": 514, + "line": 515, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 17349, - "end": 17388, + "start": 17397, + "end": 17436, "loc": { "start": { - "line": 513, + "line": 514, "column": 16 }, "end": { - "line": 513, + "line": 514, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 17349, - "end": 17387, + "start": 17397, + "end": 17435, "loc": { "start": { - "line": 513, + "line": 514, "column": 16 }, "end": { - "line": 513, + "line": 514, "column": 54 } }, "operator": "=", "left": { "type": "Identifier", - "start": 17349, - "end": 17360, + "start": 17397, + "end": 17408, "loc": { "start": { - "line": 513, + "line": 514, "column": 16 }, "end": { - "line": 513, + "line": 514, "column": 27 }, "identifierName": "xktEntityId" @@ -31154,29 +31205,29 @@ }, "right": { "type": "BinaryExpression", - "start": 17363, - "end": 17387, + "start": 17411, + "end": 17435, "loc": { "start": { - "line": 513, + "line": 514, "column": 30 }, "end": { - "line": 513, + "line": 514, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 17363, - "end": 17372, + "start": 17411, + "end": 17420, "loc": { "start": { - "line": 513, + "line": 514, "column": 30 }, "end": { - "line": 513, + "line": 514, "column": 39 } }, @@ -31189,15 +31240,15 @@ "operator": "+", "right": { "type": "UpdateExpression", - "start": 17375, - "end": 17387, + "start": 17423, + "end": 17435, "loc": { "start": { - "line": 513, + "line": 514, "column": 42 }, "end": { - "line": 513, + "line": 514, "column": 54 } }, @@ -31205,29 +31256,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 17375, - "end": 17385, + "start": 17423, + "end": 17433, "loc": { "start": { - "line": 513, + "line": 514, "column": 42 }, "end": { - "line": 513, + "line": 514, "column": 52 } }, "object": { "type": "Identifier", - "start": 17375, - "end": 17378, + "start": 17423, + "end": 17426, "loc": { "start": { - "line": 513, + "line": 514, "column": 42 }, "end": { - "line": 513, + "line": 514, "column": 45 }, "identifierName": "ctx" @@ -31236,15 +31287,15 @@ }, "property": { "type": "Identifier", - "start": 17379, - "end": 17385, + "start": 17427, + "end": 17433, "loc": { "start": { - "line": 513, + "line": 514, "column": 46 }, "end": { - "line": 513, + "line": 514, "column": 52 }, "identifierName": "nextId" @@ -31263,57 +31314,57 @@ }, { "type": "ExpressionStatement", - "start": 17415, - "end": 17447, + "start": 17463, + "end": 17495, "loc": { "start": { - "line": 515, + "line": 516, "column": 12 }, "end": { - "line": 515, + "line": 516, "column": 44 } }, "expression": { "type": "CallExpression", - "start": 17415, - "end": 17446, + "start": 17463, + "end": 17494, "loc": { "start": { - "line": 515, + "line": 516, "column": 12 }, "end": { - "line": 515, + "line": 516, "column": 43 } }, "callee": { "type": "MemberExpression", - "start": 17415, - "end": 17433, + "start": 17463, + "end": 17481, "loc": { "start": { - "line": 515, + "line": 516, "column": 12 }, "end": { - "line": 515, + "line": 516, "column": 30 } }, "object": { "type": "Identifier", - "start": 17415, - "end": 17428, + "start": 17463, + "end": 17476, "loc": { "start": { - "line": 515, + "line": 516, "column": 12 }, "end": { - "line": 515, + "line": 516, "column": 25 }, "identifierName": "objectIdStack" @@ -31322,15 +31373,15 @@ }, "property": { "type": "Identifier", - "start": 17429, - "end": 17433, + "start": 17477, + "end": 17481, "loc": { "start": { - "line": 515, + "line": 516, "column": 26 }, "end": { - "line": 515, + "line": 516, "column": 30 }, "identifierName": "push" @@ -31342,15 +31393,15 @@ "arguments": [ { "type": "Identifier", - "start": 17434, - "end": 17445, + "start": 17482, + "end": 17493, "loc": { "start": { - "line": 515, + "line": 516, "column": 31 }, "end": { - "line": 515, + "line": 516, "column": 42 }, "identifierName": "xktEntityId" @@ -31362,57 +31413,57 @@ }, { "type": "ExpressionStatement", - "start": 17460, - "end": 17487, + "start": 17508, + "end": 17535, "loc": { "start": { - "line": 516, + "line": 517, "column": 12 }, "end": { - "line": 516, + "line": 517, "column": 39 } }, "expression": { "type": "CallExpression", - "start": 17460, - "end": 17486, + "start": 17508, + "end": 17534, "loc": { "start": { - "line": 516, + "line": 517, "column": 12 }, "end": { - "line": 516, + "line": 517, "column": 38 } }, "callee": { "type": "MemberExpression", - "start": 17460, - "end": 17477, + "start": 17508, + "end": 17525, "loc": { "start": { - "line": 516, + "line": 517, "column": 12 }, "end": { - "line": 516, + "line": 517, "column": 29 } }, "object": { "type": "Identifier", - "start": 17460, - "end": 17472, + "start": 17508, + "end": 17520, "loc": { "start": { - "line": 516, + "line": 517, "column": 12 }, "end": { - "line": 516, + "line": 517, "column": 24 }, "identifierName": "meshIdsStack" @@ -31421,15 +31472,15 @@ }, "property": { "type": "Identifier", - "start": 17473, - "end": 17477, + "start": 17521, + "end": 17525, "loc": { "start": { - "line": 516, + "line": 517, "column": 25 }, "end": { - "line": 516, + "line": 517, "column": 29 }, "identifierName": "push" @@ -31441,15 +31492,15 @@ "arguments": [ { "type": "Identifier", - "start": 17478, - "end": 17485, + "start": 17526, + "end": 17533, "loc": { "start": { - "line": 516, + "line": 517, "column": 30 }, "end": { - "line": 516, + "line": 517, "column": 37 }, "identifierName": "meshIds" @@ -31466,43 +31517,43 @@ }, { "type": "IfStatement", - "start": 17506, - "end": 17598, + "start": 17554, + "end": 17646, "loc": { "start": { - "line": 518, + "line": 519, "column": 8 }, "end": { - "line": 520, + "line": 521, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 17510, - "end": 17530, + "start": 17558, + "end": 17578, "loc": { "start": { - "line": 518, + "line": 519, "column": 12 }, "end": { - "line": 518, + "line": 519, "column": 32 } }, "left": { "type": "Identifier", - "start": 17510, - "end": 17517, + "start": 17558, + "end": 17565, "loc": { "start": { - "line": 518, + "line": 519, "column": 12 }, "end": { - "line": 518, + "line": 519, "column": 19 }, "identifierName": "meshIds" @@ -31512,29 +31563,29 @@ "operator": "&&", "right": { "type": "MemberExpression", - "start": 17521, - "end": 17530, + "start": 17569, + "end": 17578, "loc": { "start": { - "line": 518, + "line": 519, "column": 23 }, "end": { - "line": 518, + "line": 519, "column": 32 } }, "object": { "type": "Identifier", - "start": 17521, - "end": 17525, + "start": 17569, + "end": 17573, "loc": { "start": { - "line": 518, + "line": 519, "column": 23 }, "end": { - "line": 518, + "line": 519, "column": 27 }, "identifierName": "node" @@ -31543,15 +31594,15 @@ }, "property": { "type": "Identifier", - "start": 17526, - "end": 17530, + "start": 17574, + "end": 17578, "loc": { "start": { - "line": 518, + "line": 519, "column": 28 }, "end": { - "line": 518, + "line": 519, "column": 32 }, "identifierName": "mesh" @@ -31563,58 +31614,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 17532, - "end": 17598, + "start": 17580, + "end": 17646, "loc": { "start": { - "line": 518, + "line": 519, "column": 34 }, "end": { - "line": 520, + "line": 521, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 17546, - "end": 17588, + "start": 17594, + "end": 17636, "loc": { "start": { - "line": 519, + "line": 520, "column": 12 }, "end": { - "line": 519, + "line": 520, "column": 54 } }, "expression": { "type": "CallExpression", - "start": 17546, - "end": 17587, + "start": 17594, + "end": 17635, "loc": { "start": { - "line": 519, + "line": 520, "column": 12 }, "end": { - "line": 519, + "line": 520, "column": 53 } }, "callee": { "type": "Identifier", - "start": 17546, - "end": 17559, + "start": 17594, + "end": 17607, "loc": { "start": { - "line": 519, + "line": 520, "column": 12 }, "end": { - "line": 519, + "line": 520, "column": 25 }, "identifierName": "parseNodeMesh" @@ -31624,15 +31675,15 @@ "arguments": [ { "type": "Identifier", - "start": 17560, - "end": 17564, + "start": 17608, + "end": 17612, "loc": { "start": { - "line": 519, + "line": 520, "column": 26 }, "end": { - "line": 519, + "line": 520, "column": 30 }, "identifierName": "node" @@ -31641,15 +31692,15 @@ }, { "type": "Identifier", - "start": 17566, - "end": 17569, + "start": 17614, + "end": 17617, "loc": { "start": { - "line": 519, + "line": 520, "column": 32 }, "end": { - "line": 519, + "line": 520, "column": 35 }, "identifierName": "ctx" @@ -31658,15 +31709,15 @@ }, { "type": "Identifier", - "start": 17571, - "end": 17577, + "start": 17619, + "end": 17625, "loc": { "start": { - "line": 519, + "line": 520, "column": 37 }, "end": { - "line": 519, + "line": 520, "column": 43 }, "identifierName": "matrix" @@ -31675,15 +31726,15 @@ }, { "type": "Identifier", - "start": 17579, - "end": 17586, + "start": 17627, + "end": 17634, "loc": { "start": { - "line": 519, + "line": 520, "column": 45 }, "end": { - "line": 519, + "line": 520, "column": 52 }, "identifierName": "meshIds" @@ -31700,43 +31751,43 @@ }, { "type": "IfStatement", - "start": 17607, - "end": 17881, + "start": 17655, + "end": 17929, "loc": { "start": { - "line": 521, + "line": 522, "column": 8 }, "end": { - "line": 527, + "line": 528, "column": 9 } }, "test": { "type": "MemberExpression", - "start": 17611, - "end": 17624, + "start": 17659, + "end": 17672, "loc": { "start": { - "line": 521, + "line": 522, "column": 12 }, "end": { - "line": 521, + "line": 522, "column": 25 } }, "object": { "type": "Identifier", - "start": 17611, - "end": 17615, + "start": 17659, + "end": 17663, "loc": { "start": { - "line": 521, + "line": 522, "column": 12 }, "end": { - "line": 521, + "line": 522, "column": 16 }, "identifierName": "node" @@ -31745,15 +31796,15 @@ }, "property": { "type": "Identifier", - "start": 17616, - "end": 17624, + "start": 17664, + "end": 17672, "loc": { "start": { - "line": 521, + "line": 522, "column": 17 }, "end": { - "line": 521, + "line": 522, "column": 25 }, "identifierName": "children" @@ -31764,59 +31815,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 17626, - "end": 17881, + "start": 17674, + "end": 17929, "loc": { "start": { - "line": 521, + "line": 522, "column": 27 }, "end": { - "line": 527, + "line": 528, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 17640, - "end": 17671, + "start": 17688, + "end": 17719, "loc": { "start": { - "line": 522, + "line": 523, "column": 12 }, "end": { - "line": 522, + "line": 523, "column": 43 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17646, - "end": 17670, + "start": 17694, + "end": 17718, "loc": { "start": { - "line": 522, + "line": 523, "column": 18 }, "end": { - "line": 522, + "line": 523, "column": 42 } }, "id": { "type": "Identifier", - "start": 17646, - "end": 17654, + "start": 17694, + "end": 17702, "loc": { "start": { - "line": 522, + "line": 523, "column": 18 }, "end": { - "line": 522, + "line": 523, "column": 26 }, "identifierName": "children" @@ -31825,29 +31876,29 @@ }, "init": { "type": "MemberExpression", - "start": 17657, - "end": 17670, + "start": 17705, + "end": 17718, "loc": { "start": { - "line": 522, + "line": 523, "column": 29 }, "end": { - "line": 522, + "line": 523, "column": 42 } }, "object": { "type": "Identifier", - "start": 17657, - "end": 17661, + "start": 17705, + "end": 17709, "loc": { "start": { - "line": 522, + "line": 523, "column": 29 }, "end": { - "line": 522, + "line": 523, "column": 33 }, "identifierName": "node" @@ -31856,15 +31907,15 @@ }, "property": { "type": "Identifier", - "start": 17662, - "end": 17670, + "start": 17710, + "end": 17718, "loc": { "start": { - "line": 522, + "line": 523, "column": 34 }, "end": { - "line": 522, + "line": 523, "column": 42 }, "identifierName": "children" @@ -31879,58 +31930,58 @@ }, { "type": "ForStatement", - "start": 17684, - "end": 17871, + "start": 17732, + "end": 17919, "loc": { "start": { - "line": 523, + "line": 524, "column": 12 }, "end": { - "line": 526, + "line": 527, "column": 13 } }, "init": { "type": "VariableDeclaration", - "start": 17689, - "end": 17721, + "start": 17737, + "end": 17769, "loc": { "start": { - "line": 523, + "line": 524, "column": 17 }, "end": { - "line": 523, + "line": 524, "column": 49 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17693, - "end": 17698, + "start": 17741, + "end": 17746, "loc": { "start": { - "line": 523, + "line": 524, "column": 21 }, "end": { - "line": 523, + "line": 524, "column": 26 } }, "id": { "type": "Identifier", - "start": 17693, - "end": 17694, + "start": 17741, + "end": 17742, "loc": { "start": { - "line": 523, + "line": 524, "column": 21 }, "end": { - "line": 523, + "line": 524, "column": 22 }, "identifierName": "i" @@ -31939,15 +31990,15 @@ }, "init": { "type": "NumericLiteral", - "start": 17697, - "end": 17698, + "start": 17745, + "end": 17746, "loc": { "start": { - "line": 523, + "line": 524, "column": 25 }, "end": { - "line": 523, + "line": 524, "column": 26 } }, @@ -31960,29 +32011,29 @@ }, { "type": "VariableDeclarator", - "start": 17700, - "end": 17721, + "start": 17748, + "end": 17769, "loc": { "start": { - "line": 523, + "line": 524, "column": 28 }, "end": { - "line": 523, + "line": 524, "column": 49 } }, "id": { "type": "Identifier", - "start": 17700, - "end": 17703, + "start": 17748, + "end": 17751, "loc": { "start": { - "line": 523, + "line": 524, "column": 28 }, "end": { - "line": 523, + "line": 524, "column": 31 }, "identifierName": "len" @@ -31991,29 +32042,29 @@ }, "init": { "type": "MemberExpression", - "start": 17706, - "end": 17721, + "start": 17754, + "end": 17769, "loc": { "start": { - "line": 523, + "line": 524, "column": 34 }, "end": { - "line": 523, + "line": 524, "column": 49 } }, "object": { "type": "Identifier", - "start": 17706, - "end": 17714, + "start": 17754, + "end": 17762, "loc": { "start": { - "line": 523, + "line": 524, "column": 34 }, "end": { - "line": 523, + "line": 524, "column": 42 }, "identifierName": "children" @@ -32022,15 +32073,15 @@ }, "property": { "type": "Identifier", - "start": 17715, - "end": 17721, + "start": 17763, + "end": 17769, "loc": { "start": { - "line": 523, + "line": 524, "column": 43 }, "end": { - "line": 523, + "line": 524, "column": 49 }, "identifierName": "length" @@ -32045,29 +32096,29 @@ }, "test": { "type": "BinaryExpression", - "start": 17723, - "end": 17730, + "start": 17771, + "end": 17778, "loc": { "start": { - "line": 523, + "line": 524, "column": 51 }, "end": { - "line": 523, + "line": 524, "column": 58 } }, "left": { "type": "Identifier", - "start": 17723, - "end": 17724, + "start": 17771, + "end": 17772, "loc": { "start": { - "line": 523, + "line": 524, "column": 51 }, "end": { - "line": 523, + "line": 524, "column": 52 }, "identifierName": "i" @@ -32077,15 +32128,15 @@ "operator": "<", "right": { "type": "Identifier", - "start": 17727, - "end": 17730, + "start": 17775, + "end": 17778, "loc": { "start": { - "line": 523, + "line": 524, "column": 55 }, "end": { - "line": 523, + "line": 524, "column": 58 }, "identifierName": "len" @@ -32095,15 +32146,15 @@ }, "update": { "type": "UpdateExpression", - "start": 17732, - "end": 17735, + "start": 17780, + "end": 17783, "loc": { "start": { - "line": 523, + "line": 524, "column": 60 }, "end": { - "line": 523, + "line": 524, "column": 63 } }, @@ -32111,15 +32162,15 @@ "prefix": false, "argument": { "type": "Identifier", - "start": 17732, - "end": 17733, + "start": 17780, + "end": 17781, "loc": { "start": { - "line": 523, + "line": 524, "column": 60 }, "end": { - "line": 523, + "line": 524, "column": 61 }, "identifierName": "i" @@ -32129,59 +32180,59 @@ }, "body": { "type": "BlockStatement", - "start": 17737, - "end": 17871, + "start": 17785, + "end": 17919, "loc": { "start": { - "line": 523, + "line": 524, "column": 65 }, "end": { - "line": 526, + "line": 527, "column": 13 } }, "body": [ { "type": "VariableDeclaration", - "start": 17755, - "end": 17785, + "start": 17803, + "end": 17833, "loc": { "start": { - "line": 524, + "line": 525, "column": 16 }, "end": { - "line": 524, + "line": 525, "column": 46 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17761, - "end": 17784, + "start": 17809, + "end": 17832, "loc": { "start": { - "line": 524, + "line": 525, "column": 22 }, "end": { - "line": 524, + "line": 525, "column": 45 } }, "id": { "type": "Identifier", - "start": 17761, - "end": 17770, + "start": 17809, + "end": 17818, "loc": { "start": { - "line": 524, + "line": 525, "column": 22 }, "end": { - "line": 524, + "line": 525, "column": 31 }, "identifierName": "childNode" @@ -32190,29 +32241,29 @@ }, "init": { "type": "MemberExpression", - "start": 17773, - "end": 17784, + "start": 17821, + "end": 17832, "loc": { "start": { - "line": 524, + "line": 525, "column": 34 }, "end": { - "line": 524, + "line": 525, "column": 45 } }, "object": { "type": "Identifier", - "start": 17773, - "end": 17781, + "start": 17821, + "end": 17829, "loc": { "start": { - "line": 524, + "line": 525, "column": 34 }, "end": { - "line": 524, + "line": 525, "column": 42 }, "identifierName": "children" @@ -32221,15 +32272,15 @@ }, "property": { "type": "Identifier", - "start": 17782, - "end": 17783, + "start": 17830, + "end": 17831, "loc": { "start": { - "line": 524, + "line": 525, "column": 43 }, "end": { - "line": 524, + "line": 525, "column": 44 }, "identifierName": "i" @@ -32244,43 +32295,43 @@ }, { "type": "ExpressionStatement", - "start": 17802, - "end": 17857, + "start": 17850, + "end": 17905, "loc": { "start": { - "line": 525, + "line": 526, "column": 16 }, "end": { - "line": 525, + "line": 526, "column": 71 } }, "expression": { "type": "CallExpression", - "start": 17802, - "end": 17856, + "start": 17850, + "end": 17904, "loc": { "start": { - "line": 525, + "line": 526, "column": 16 }, "end": { - "line": 525, + "line": 526, "column": 70 } }, "callee": { "type": "Identifier", - "start": 17802, - "end": 17821, + "start": 17850, + "end": 17869, "loc": { "start": { - "line": 525, + "line": 526, "column": 16 }, "end": { - "line": 525, + "line": 526, "column": 35 }, "identifierName": "parseNodesWithNames" @@ -32290,15 +32341,15 @@ "arguments": [ { "type": "Identifier", - "start": 17822, - "end": 17825, + "start": 17870, + "end": 17873, "loc": { "start": { - "line": 525, + "line": 526, "column": 36 }, "end": { - "line": 525, + "line": 526, "column": 39 }, "identifierName": "ctx" @@ -32307,15 +32358,15 @@ }, { "type": "Identifier", - "start": 17827, - "end": 17836, + "start": 17875, + "end": 17884, "loc": { "start": { - "line": 525, + "line": 526, "column": 41 }, "end": { - "line": 525, + "line": 526, "column": 50 }, "identifierName": "childNode" @@ -32324,29 +32375,29 @@ }, { "type": "BinaryExpression", - "start": 17838, - "end": 17847, + "start": 17886, + "end": 17895, "loc": { "start": { - "line": 525, + "line": 526, "column": 52 }, "end": { - "line": 525, + "line": 526, "column": 61 } }, "left": { "type": "Identifier", - "start": 17838, - "end": 17843, + "start": 17886, + "end": 17891, "loc": { "start": { - "line": 525, + "line": 526, "column": 52 }, "end": { - "line": 525, + "line": 526, "column": 57 }, "identifierName": "depth" @@ -32356,15 +32407,15 @@ "operator": "+", "right": { "type": "NumericLiteral", - "start": 17846, - "end": 17847, + "start": 17894, + "end": 17895, "loc": { "start": { - "line": 525, + "line": 526, "column": 60 }, "end": { - "line": 525, + "line": 526, "column": 61 } }, @@ -32377,15 +32428,15 @@ }, { "type": "Identifier", - "start": 17849, - "end": 17855, + "start": 17897, + "end": 17903, "loc": { "start": { - "line": 525, + "line": 526, "column": 63 }, "end": { - "line": 525, + "line": 526, "column": 69 }, "identifierName": "matrix" @@ -32406,44 +32457,44 @@ }, { "type": "VariableDeclaration", - "start": 17890, - "end": 17917, + "start": 17938, + "end": 17965, "loc": { "start": { - "line": 528, + "line": 529, "column": 8 }, "end": { - "line": 528, + "line": 529, "column": 35 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 17896, - "end": 17916, + "start": 17944, + "end": 17964, "loc": { "start": { - "line": 528, + "line": 529, "column": 14 }, "end": { - "line": 528, + "line": 529, "column": 34 } }, "id": { "type": "Identifier", - "start": 17896, - "end": 17904, + "start": 17944, + "end": 17952, "loc": { "start": { - "line": 528, + "line": 529, "column": 14 }, "end": { - "line": 528, + "line": 529, "column": 22 }, "identifierName": "nodeName" @@ -32452,29 +32503,29 @@ }, "init": { "type": "MemberExpression", - "start": 17907, - "end": 17916, + "start": 17955, + "end": 17964, "loc": { "start": { - "line": 528, + "line": 529, "column": 25 }, "end": { - "line": 528, + "line": 529, "column": 34 } }, "object": { "type": "Identifier", - "start": 17907, - "end": 17911, + "start": 17955, + "end": 17959, "loc": { "start": { - "line": 528, + "line": 529, "column": 25 }, "end": { - "line": 528, + "line": 529, "column": 29 }, "identifierName": "node" @@ -32483,15 +32534,15 @@ }, "property": { "type": "Identifier", - "start": 17912, - "end": 17916, + "start": 17960, + "end": 17964, "loc": { "start": { - "line": 528, + "line": 529, "column": 30 }, "end": { - "line": 528, + "line": 529, "column": 34 }, "identifierName": "name" @@ -32506,71 +32557,71 @@ }, { "type": "IfStatement", - "start": 17926, - "end": 18593, + "start": 17974, + "end": 18641, "loc": { "start": { - "line": 529, + "line": 530, "column": 8 }, "end": { - "line": 543, + "line": 544, "column": 9 } }, "test": { "type": "LogicalExpression", - "start": 17930, - "end": 17990, + "start": 17978, + "end": 18038, "loc": { "start": { - "line": 529, + "line": 530, "column": 12 }, "end": { - "line": 529, + "line": 530, "column": 72 } }, "left": { "type": "LogicalExpression", - "start": 17931, - "end": 17974, + "start": 17979, + "end": 18022, "loc": { "start": { - "line": 529, + "line": 530, "column": 13 }, "end": { - "line": 529, + "line": 530, "column": 56 } }, "left": { "type": "BinaryExpression", - "start": 17931, - "end": 17953, + "start": 17979, + "end": 18001, "loc": { "start": { - "line": 529, + "line": 530, "column": 13 }, "end": { - "line": 529, + "line": 530, "column": 35 } }, "left": { "type": "Identifier", - "start": 17931, - "end": 17939, + "start": 17979, + "end": 17987, "loc": { "start": { - "line": 529, + "line": 530, "column": 13 }, "end": { - "line": 529, + "line": 530, "column": 21 }, "identifierName": "nodeName" @@ -32580,15 +32631,15 @@ "operator": "!==", "right": { "type": "Identifier", - "start": 17944, - "end": 17953, + "start": 17992, + "end": 18001, "loc": { "start": { - "line": 529, + "line": 530, "column": 26 }, "end": { - "line": 529, + "line": 530, "column": 35 }, "identifierName": "undefined" @@ -32599,29 +32650,29 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 17957, - "end": 17974, + "start": 18005, + "end": 18022, "loc": { "start": { - "line": 529, + "line": 530, "column": 39 }, "end": { - "line": 529, + "line": 530, "column": 56 } }, "left": { "type": "Identifier", - "start": 17957, - "end": 17965, + "start": 18005, + "end": 18013, "loc": { "start": { - "line": 529, + "line": 530, "column": 39 }, "end": { - "line": 529, + "line": 530, "column": 47 }, "identifierName": "nodeName" @@ -32631,15 +32682,15 @@ "operator": "!==", "right": { "type": "NullLiteral", - "start": 17970, - "end": 17974, + "start": 18018, + "end": 18022, "loc": { "start": { - "line": 529, + "line": 530, "column": 52 }, "end": { - "line": 529, + "line": 530, "column": 56 } } @@ -32647,35 +32698,35 @@ }, "extra": { "parenthesized": true, - "parenStart": 17930 + "parenStart": 17978 } }, "operator": "||", "right": { "type": "BinaryExpression", - "start": 17979, - "end": 17990, + "start": 18027, + "end": 18038, "loc": { "start": { - "line": 529, + "line": 530, "column": 61 }, "end": { - "line": 529, + "line": 530, "column": 72 } }, "left": { "type": "Identifier", - "start": 17979, - "end": 17984, + "start": 18027, + "end": 18032, "loc": { "start": { - "line": 529, + "line": 530, "column": 61 }, "end": { - "line": 529, + "line": 530, "column": 66 }, "identifierName": "depth" @@ -32685,15 +32736,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 17989, - "end": 17990, + "start": 18037, + "end": 18038, "loc": { "start": { - "line": 529, + "line": 530, "column": 71 }, "end": { - "line": 529, + "line": 530, "column": 72 } }, @@ -32707,59 +32758,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 17992, - "end": 18593, + "start": 18040, + "end": 18641, "loc": { "start": { - "line": 529, + "line": 530, "column": 74 }, "end": { - "line": 543, + "line": 544, "column": 9 } }, "body": [ { "type": "VariableDeclaration", - "start": 18006, - "end": 18044, + "start": 18054, + "end": 18092, "loc": { "start": { - "line": 530, + "line": 531, "column": 12 }, "end": { - "line": 530, + "line": 531, "column": 50 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18010, - "end": 18043, + "start": 18058, + "end": 18091, "loc": { "start": { - "line": 530, + "line": 531, "column": 16 }, "end": { - "line": 530, + "line": 531, "column": 49 } }, "id": { "type": "Identifier", - "start": 18010, - "end": 18021, + "start": 18058, + "end": 18069, "loc": { "start": { - "line": 530, + "line": 531, "column": 16 }, "end": { - "line": 530, + "line": 531, "column": 27 }, "identifierName": "xktEntityId" @@ -32768,43 +32819,43 @@ }, "init": { "type": "CallExpression", - "start": 18024, - "end": 18043, + "start": 18072, + "end": 18091, "loc": { "start": { - "line": 530, + "line": 531, "column": 30 }, "end": { - "line": 530, + "line": 531, "column": 49 } }, "callee": { "type": "MemberExpression", - "start": 18024, - "end": 18041, + "start": 18072, + "end": 18089, "loc": { "start": { - "line": 530, + "line": 531, "column": 30 }, "end": { - "line": 530, + "line": 531, "column": 47 } }, "object": { "type": "Identifier", - "start": 18024, - "end": 18037, + "start": 18072, + "end": 18085, "loc": { "start": { - "line": 530, + "line": 531, "column": 30 }, "end": { - "line": 530, + "line": 531, "column": 43 }, "identifierName": "objectIdStack" @@ -32813,15 +32864,15 @@ }, "property": { "type": "Identifier", - "start": 18038, - "end": 18041, + "start": 18086, + "end": 18089, "loc": { "start": { - "line": 530, + "line": 531, "column": 44 }, "end": { - "line": 530, + "line": 531, "column": 47 }, "identifierName": "pop" @@ -32838,29 +32889,29 @@ }, { "type": "IfStatement", - "start": 18057, - "end": 18188, + "start": 18105, + "end": 18236, "loc": { "start": { - "line": 531, + "line": 532, "column": 12 }, "end": { - "line": 533, + "line": 534, "column": 13 } }, "test": { "type": "UnaryExpression", - "start": 18061, - "end": 18073, + "start": 18109, + "end": 18121, "loc": { "start": { - "line": 531, + "line": 532, "column": 16 }, "end": { - "line": 531, + "line": 532, "column": 28 } }, @@ -32868,15 +32919,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 18062, - "end": 18073, + "start": 18110, + "end": 18121, "loc": { "start": { - "line": 531, + "line": 532, "column": 17 }, "end": { - "line": 531, + "line": 532, "column": 28 }, "identifierName": "xktEntityId" @@ -32889,59 +32940,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 18075, - "end": 18188, + "start": 18123, + "end": 18236, "loc": { "start": { - "line": 531, + "line": 532, "column": 30 }, "end": { - "line": 533, + "line": 534, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 18135, - "end": 18174, + "start": 18183, + "end": 18222, "loc": { "start": { - "line": 532, + "line": 533, "column": 16 }, "end": { - "line": 532, + "line": 533, "column": 55 } }, "expression": { "type": "AssignmentExpression", - "start": 18135, - "end": 18173, + "start": 18183, + "end": 18221, "loc": { "start": { - "line": 532, + "line": 533, "column": 16 }, "end": { - "line": 532, + "line": 533, "column": 54 } }, "operator": "=", "left": { "type": "Identifier", - "start": 18135, - "end": 18146, + "start": 18183, + "end": 18194, "loc": { "start": { - "line": 532, + "line": 533, "column": 16 }, "end": { - "line": 532, + "line": 533, "column": 27 }, "identifierName": "xktEntityId" @@ -32951,29 +33002,29 @@ }, "right": { "type": "BinaryExpression", - "start": 18149, - "end": 18173, + "start": 18197, + "end": 18221, "loc": { "start": { - "line": 532, + "line": 533, "column": 30 }, "end": { - "line": 532, + "line": 533, "column": 54 } }, "left": { "type": "StringLiteral", - "start": 18149, - "end": 18158, + "start": 18197, + "end": 18206, "loc": { "start": { - "line": 532, + "line": 533, "column": 30 }, "end": { - "line": 532, + "line": 533, "column": 39 } }, @@ -32986,15 +33037,15 @@ "operator": "+", "right": { "type": "UpdateExpression", - "start": 18161, - "end": 18173, + "start": 18209, + "end": 18221, "loc": { "start": { - "line": 532, + "line": 533, "column": 42 }, "end": { - "line": 532, + "line": 533, "column": 54 } }, @@ -33002,29 +33053,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18161, - "end": 18171, + "start": 18209, + "end": 18219, "loc": { "start": { - "line": 532, + "line": 533, "column": 42 }, "end": { - "line": 532, + "line": 533, "column": 52 } }, "object": { "type": "Identifier", - "start": 18161, - "end": 18164, + "start": 18209, + "end": 18212, "loc": { "start": { - "line": 532, + "line": 533, "column": 42 }, "end": { - "line": 532, + "line": 533, "column": 45 }, "identifierName": "ctx" @@ -33033,15 +33084,15 @@ }, "property": { "type": "Identifier", - "start": 18165, - "end": 18171, + "start": 18213, + "end": 18219, "loc": { "start": { - "line": 532, + "line": 533, "column": 46 }, "end": { - "line": 532, + "line": 533, "column": 52 }, "identifierName": "nextId" @@ -33058,15 +33109,15 @@ { "type": "CommentLine", "value": " For when there are no nodes with names", - "start": 18077, - "end": 18118, + "start": 18125, + "end": 18166, "loc": { "start": { - "line": 531, + "line": 532, "column": 32 }, "end": { - "line": 531, + "line": 532, "column": 73 } } @@ -33080,44 +33131,44 @@ }, { "type": "VariableDeclaration", - "start": 18201, - "end": 18240, + "start": 18249, + "end": 18288, "loc": { "start": { - "line": 534, + "line": 535, "column": 12 }, "end": { - "line": 534, + "line": 535, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18205, - "end": 18239, + "start": 18253, + "end": 18287, "loc": { "start": { - "line": 534, + "line": 535, "column": 16 }, "end": { - "line": 534, + "line": 535, "column": 50 } }, "id": { "type": "Identifier", - "start": 18205, - "end": 18218, + "start": 18253, + "end": 18266, "loc": { "start": { - "line": 534, + "line": 535, "column": 16 }, "end": { - "line": 534, + "line": 535, "column": 29 }, "identifierName": "entityMeshIds" @@ -33126,43 +33177,43 @@ }, "init": { "type": "CallExpression", - "start": 18221, - "end": 18239, + "start": 18269, + "end": 18287, "loc": { "start": { - "line": 534, + "line": 535, "column": 32 }, "end": { - "line": 534, + "line": 535, "column": 50 } }, "callee": { "type": "MemberExpression", - "start": 18221, - "end": 18237, + "start": 18269, + "end": 18285, "loc": { "start": { - "line": 534, + "line": 535, "column": 32 }, "end": { - "line": 534, + "line": 535, "column": 48 } }, "object": { "type": "Identifier", - "start": 18221, - "end": 18233, + "start": 18269, + "end": 18281, "loc": { "start": { - "line": 534, + "line": 535, "column": 32 }, "end": { - "line": 534, + "line": 535, "column": 44 }, "identifierName": "meshIdsStack" @@ -33171,15 +33222,15 @@ }, "property": { "type": "Identifier", - "start": 18234, - "end": 18237, + "start": 18282, + "end": 18285, "loc": { "start": { - "line": 534, + "line": 535, "column": 45 }, "end": { - "line": 534, + "line": 535, "column": 48 }, "identifierName": "pop" @@ -33196,43 +33247,43 @@ }, { "type": "IfStatement", - "start": 18253, - "end": 18453, + "start": 18301, + "end": 18501, "loc": { "start": { - "line": 535, + "line": 536, "column": 12 }, "end": { - "line": 540, + "line": 541, "column": 13 } }, "test": { "type": "LogicalExpression", - "start": 18257, - "end": 18286, + "start": 18305, + "end": 18334, "loc": { "start": { - "line": 535, + "line": 536, "column": 16 }, "end": { - "line": 535, + "line": 536, "column": 45 } }, "left": { "type": "Identifier", - "start": 18257, - "end": 18264, + "start": 18305, + "end": 18312, "loc": { "start": { - "line": 535, + "line": 536, "column": 16 }, "end": { - "line": 535, + "line": 536, "column": 23 }, "identifierName": "meshIds" @@ -33242,43 +33293,43 @@ "operator": "&&", "right": { "type": "BinaryExpression", - "start": 18268, - "end": 18286, + "start": 18316, + "end": 18334, "loc": { "start": { - "line": 535, + "line": 536, "column": 27 }, "end": { - "line": 535, + "line": 536, "column": 45 } }, "left": { "type": "MemberExpression", - "start": 18268, - "end": 18282, + "start": 18316, + "end": 18330, "loc": { "start": { - "line": 535, + "line": 536, "column": 27 }, "end": { - "line": 535, + "line": 536, "column": 41 } }, "object": { "type": "Identifier", - "start": 18268, - "end": 18275, + "start": 18316, + "end": 18323, "loc": { "start": { - "line": 535, + "line": 536, "column": 27 }, "end": { - "line": 535, + "line": 536, "column": 34 }, "identifierName": "meshIds" @@ -33287,15 +33338,15 @@ }, "property": { "type": "Identifier", - "start": 18276, - "end": 18282, + "start": 18324, + "end": 18330, "loc": { "start": { - "line": 535, + "line": 536, "column": 35 }, "end": { - "line": 535, + "line": 536, "column": 41 }, "identifierName": "length" @@ -33307,15 +33358,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 18285, - "end": 18286, + "start": 18333, + "end": 18334, "loc": { "start": { - "line": 535, + "line": 536, "column": 44 }, "end": { - "line": 535, + "line": 536, "column": 45 } }, @@ -33329,86 +33380,86 @@ }, "consequent": { "type": "BlockStatement", - "start": 18288, - "end": 18453, + "start": 18336, + "end": 18501, "loc": { "start": { - "line": 535, + "line": 536, "column": 47 }, "end": { - "line": 540, + "line": 541, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 18306, - "end": 18439, + "start": 18354, + "end": 18487, "loc": { "start": { - "line": 536, + "line": 537, "column": 16 }, "end": { - "line": 539, + "line": 540, "column": 19 } }, "expression": { "type": "CallExpression", - "start": 18306, - "end": 18438, + "start": 18354, + "end": 18486, "loc": { "start": { - "line": 536, + "line": 537, "column": 16 }, "end": { - "line": 539, + "line": 540, "column": 18 } }, "callee": { "type": "MemberExpression", - "start": 18306, - "end": 18331, + "start": 18354, + "end": 18379, "loc": { "start": { - "line": 536, + "line": 537, "column": 16 }, "end": { - "line": 536, + "line": 537, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 18306, - "end": 18318, + "start": 18354, + "end": 18366, "loc": { "start": { - "line": 536, + "line": 537, "column": 16 }, "end": { - "line": 536, + "line": 537, "column": 28 } }, "object": { "type": "Identifier", - "start": 18306, - "end": 18309, + "start": 18354, + "end": 18357, "loc": { "start": { - "line": 536, + "line": 537, "column": 16 }, "end": { - "line": 536, + "line": 537, "column": 19 }, "identifierName": "ctx" @@ -33417,15 +33468,15 @@ }, "property": { "type": "Identifier", - "start": 18310, - "end": 18318, + "start": 18358, + "end": 18366, "loc": { "start": { - "line": 536, + "line": 537, "column": 20 }, "end": { - "line": 536, + "line": 537, "column": 28 }, "identifierName": "xktModel" @@ -33436,15 +33487,15 @@ }, "property": { "type": "Identifier", - "start": 18319, - "end": 18331, + "start": 18367, + "end": 18379, "loc": { "start": { - "line": 536, + "line": 537, "column": 29 }, "end": { - "line": 536, + "line": 537, "column": 41 }, "identifierName": "createEntity" @@ -33456,30 +33507,30 @@ "arguments": [ { "type": "ObjectExpression", - "start": 18332, - "end": 18437, + "start": 18380, + "end": 18485, "loc": { "start": { - "line": 536, + "line": 537, "column": 42 }, "end": { - "line": 539, + "line": 540, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 18354, - "end": 18375, + "start": 18402, + "end": 18423, "loc": { "start": { - "line": 537, + "line": 538, "column": 20 }, "end": { - "line": 537, + "line": 538, "column": 41 } }, @@ -33488,15 +33539,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18354, - "end": 18362, + "start": 18402, + "end": 18410, "loc": { "start": { - "line": 537, + "line": 538, "column": 20 }, "end": { - "line": 537, + "line": 538, "column": 28 }, "identifierName": "entityId" @@ -33505,15 +33556,15 @@ }, "value": { "type": "Identifier", - "start": 18364, - "end": 18375, + "start": 18412, + "end": 18423, "loc": { "start": { - "line": 537, + "line": 538, "column": 30 }, "end": { - "line": 537, + "line": 538, "column": 41 }, "identifierName": "xktEntityId" @@ -33523,15 +33574,15 @@ }, { "type": "ObjectProperty", - "start": 18397, - "end": 18419, + "start": 18445, + "end": 18467, "loc": { "start": { - "line": 538, + "line": 539, "column": 20 }, "end": { - "line": 538, + "line": 539, "column": 42 } }, @@ -33540,15 +33591,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 18397, - "end": 18404, + "start": 18445, + "end": 18452, "loc": { "start": { - "line": 538, + "line": 539, "column": 20 }, "end": { - "line": 538, + "line": 539, "column": 27 }, "identifierName": "meshIds" @@ -33557,15 +33608,15 @@ }, "value": { "type": "Identifier", - "start": 18406, - "end": 18419, + "start": 18454, + "end": 18467, "loc": { "start": { - "line": 538, + "line": 539, "column": 29 }, "end": { - "line": 538, + "line": 539, "column": 42 }, "identifierName": "entityMeshIds" @@ -33585,29 +33636,29 @@ }, { "type": "ExpressionStatement", - "start": 18466, - "end": 18489, + "start": 18514, + "end": 18537, "loc": { "start": { - "line": 541, + "line": 542, "column": 12 }, "end": { - "line": 541, + "line": 542, "column": 35 } }, "expression": { "type": "UpdateExpression", - "start": 18466, - "end": 18488, + "start": 18514, + "end": 18536, "loc": { "start": { - "line": 541, + "line": 542, "column": 12 }, "end": { - "line": 541, + "line": 542, "column": 34 } }, @@ -33615,43 +33666,43 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 18466, - "end": 18486, + "start": 18514, + "end": 18534, "loc": { "start": { - "line": 541, + "line": 542, "column": 12 }, "end": { - "line": 541, + "line": 542, "column": 32 } }, "object": { "type": "MemberExpression", - "start": 18466, - "end": 18475, + "start": 18514, + "end": 18523, "loc": { "start": { - "line": 541, + "line": 542, "column": 12 }, "end": { - "line": 541, + "line": 542, "column": 21 } }, "object": { "type": "Identifier", - "start": 18466, - "end": 18469, + "start": 18514, + "end": 18517, "loc": { "start": { - "line": 541, + "line": 542, "column": 12 }, "end": { - "line": 541, + "line": 542, "column": 15 }, "identifierName": "ctx" @@ -33660,15 +33711,15 @@ }, "property": { "type": "Identifier", - "start": 18470, - "end": 18475, + "start": 18518, + "end": 18523, "loc": { "start": { - "line": 541, + "line": 542, "column": 16 }, "end": { - "line": 541, + "line": 542, "column": 21 }, "identifierName": "stats" @@ -33679,15 +33730,15 @@ }, "property": { "type": "Identifier", - "start": 18476, - "end": 18486, + "start": 18524, + "end": 18534, "loc": { "start": { - "line": 541, + "line": 542, "column": 22 }, "end": { - "line": 541, + "line": 542, "column": 32 }, "identifierName": "numObjects" @@ -33700,44 +33751,44 @@ }, { "type": "ExpressionStatement", - "start": 18502, - "end": 18583, + "start": 18550, + "end": 18631, "loc": { "start": { - "line": 542, + "line": 543, "column": 12 }, "end": { - "line": 542, + "line": 543, "column": 93 } }, "expression": { "type": "AssignmentExpression", - "start": 18502, - "end": 18582, + "start": 18550, + "end": 18630, "loc": { "start": { - "line": 542, + "line": 543, "column": 12 }, "end": { - "line": 542, + "line": 543, "column": 92 } }, "operator": "=", "left": { "type": "Identifier", - "start": 18502, - "end": 18509, + "start": 18550, + "end": 18557, "loc": { "start": { - "line": 542, + "line": 543, "column": 12 }, "end": { - "line": 542, + "line": 543, "column": 19 }, "identifierName": "meshIds" @@ -33746,57 +33797,57 @@ }, "right": { "type": "ConditionalExpression", - "start": 18512, - "end": 18582, + "start": 18560, + "end": 18630, "loc": { "start": { - "line": 542, + "line": 543, "column": 22 }, "end": { - "line": 542, + "line": 543, "column": 92 } }, "test": { "type": "BinaryExpression", - "start": 18512, - "end": 18535, + "start": 18560, + "end": 18583, "loc": { "start": { - "line": 542, + "line": 543, "column": 22 }, "end": { - "line": 542, + "line": 543, "column": 45 } }, "left": { "type": "MemberExpression", - "start": 18512, - "end": 18531, + "start": 18560, + "end": 18579, "loc": { "start": { - "line": 542, + "line": 543, "column": 22 }, "end": { - "line": 542, + "line": 543, "column": 41 } }, "object": { "type": "Identifier", - "start": 18512, - "end": 18524, + "start": 18560, + "end": 18572, "loc": { "start": { - "line": 542, + "line": 543, "column": 22 }, "end": { - "line": 542, + "line": 543, "column": 34 }, "identifierName": "meshIdsStack" @@ -33805,15 +33856,15 @@ }, "property": { "type": "Identifier", - "start": 18525, - "end": 18531, + "start": 18573, + "end": 18579, "loc": { "start": { - "line": 542, + "line": 543, "column": 35 }, "end": { - "line": 542, + "line": 543, "column": 41 }, "identifierName": "length" @@ -33825,15 +33876,15 @@ "operator": ">", "right": { "type": "NumericLiteral", - "start": 18534, - "end": 18535, + "start": 18582, + "end": 18583, "loc": { "start": { - "line": 542, + "line": 543, "column": 44 }, "end": { - "line": 542, + "line": 543, "column": 45 } }, @@ -33846,29 +33897,29 @@ }, "consequent": { "type": "MemberExpression", - "start": 18538, - "end": 18575, + "start": 18586, + "end": 18623, "loc": { "start": { - "line": 542, + "line": 543, "column": 48 }, "end": { - "line": 542, + "line": 543, "column": 85 } }, "object": { "type": "Identifier", - "start": 18538, - "end": 18550, + "start": 18586, + "end": 18598, "loc": { "start": { - "line": 542, + "line": 543, "column": 48 }, "end": { - "line": 542, + "line": 543, "column": 60 }, "identifierName": "meshIdsStack" @@ -33877,43 +33928,43 @@ }, "property": { "type": "BinaryExpression", - "start": 18551, - "end": 18574, + "start": 18599, + "end": 18622, "loc": { "start": { - "line": 542, + "line": 543, "column": 61 }, "end": { - "line": 542, + "line": 543, "column": 84 } }, "left": { "type": "MemberExpression", - "start": 18551, - "end": 18570, + "start": 18599, + "end": 18618, "loc": { "start": { - "line": 542, + "line": 543, "column": 61 }, "end": { - "line": 542, + "line": 543, "column": 80 } }, "object": { "type": "Identifier", - "start": 18551, - "end": 18563, + "start": 18599, + "end": 18611, "loc": { "start": { - "line": 542, + "line": 543, "column": 61 }, "end": { - "line": 542, + "line": 543, "column": 73 }, "identifierName": "meshIdsStack" @@ -33922,15 +33973,15 @@ }, "property": { "type": "Identifier", - "start": 18564, - "end": 18570, + "start": 18612, + "end": 18618, "loc": { "start": { - "line": 542, + "line": 543, "column": 74 }, "end": { - "line": 542, + "line": 543, "column": 80 }, "identifierName": "length" @@ -33942,15 +33993,15 @@ "operator": "-", "right": { "type": "NumericLiteral", - "start": 18573, - "end": 18574, + "start": 18621, + "end": 18622, "loc": { "start": { - "line": 542, + "line": 543, "column": 83 }, "end": { - "line": 542, + "line": 543, "column": 84 } }, @@ -33965,15 +34016,15 @@ }, "alternate": { "type": "NullLiteral", - "start": 18578, - "end": 18582, + "start": 18626, + "end": 18630, "loc": { "start": { - "line": 542, + "line": 543, "column": 88 }, "end": { - "line": 542, + "line": 543, "column": 92 } } @@ -33996,7 +34047,7 @@ }, "extra": { "parenthesized": true, - "parenStart": 16678 + "parenStart": 16726 } }, "arguments": [] @@ -34009,15 +34060,15 @@ { "type": "CommentBlock", "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", - "start": 16297, - "end": 16649, + "start": 16345, + "end": 16697, "loc": { "start": { - "line": 487, + "line": 488, "column": 0 }, "end": { - "line": 494, + "line": 495, "column": 3 } } @@ -34027,15 +34078,15 @@ { "type": "CommentBlock", "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", - "start": 18607, - "end": 18787, + "start": 18655, + "end": 18835, "loc": { "start": { - "line": 547, + "line": 548, "column": 0 }, "end": { - "line": 553, + "line": 554, "column": 3 } } @@ -34044,29 +34095,29 @@ }, { "type": "FunctionDeclaration", - "start": 18788, - "end": 19850, + "start": 18836, + "end": 19898, "loc": { "start": { - "line": 554, + "line": 555, "column": 0 }, "end": { - "line": 592, + "line": 593, "column": 1 } }, "id": { "type": "Identifier", - "start": 18797, - "end": 18812, + "start": 18845, + "end": 18860, "loc": { "start": { - "line": 554, + "line": 555, "column": 9 }, "end": { - "line": 554, + "line": 555, "column": 24 }, "identifierName": "parseNodeMatrix" @@ -34080,15 +34131,15 @@ "params": [ { "type": "Identifier", - "start": 18813, - "end": 18817, + "start": 18861, + "end": 18865, "loc": { "start": { - "line": 554, + "line": 555, "column": 25 }, "end": { - "line": 554, + "line": 555, "column": 29 }, "identifierName": "node" @@ -34097,15 +34148,15 @@ }, { "type": "Identifier", - "start": 18819, - "end": 18825, + "start": 18867, + "end": 18873, "loc": { "start": { - "line": 554, + "line": 555, "column": 31 }, "end": { - "line": 554, + "line": 555, "column": 37 }, "identifierName": "matrix" @@ -34115,44 +34166,44 @@ ], "body": { "type": "BlockStatement", - "start": 18827, - "end": 19850, + "start": 18875, + "end": 19898, "loc": { "start": { - "line": 554, + "line": 555, "column": 39 }, "end": { - "line": 592, + "line": 593, "column": 1 } }, "body": [ { "type": "IfStatement", - "start": 18833, - "end": 18867, + "start": 18881, + "end": 18915, "loc": { "start": { - "line": 555, + "line": 556, "column": 4 }, "end": { - "line": 557, + "line": 558, "column": 5 } }, "test": { "type": "UnaryExpression", - "start": 18837, - "end": 18842, + "start": 18885, + "end": 18890, "loc": { "start": { - "line": 555, + "line": 556, "column": 8 }, "end": { - "line": 555, + "line": 556, "column": 13 } }, @@ -34160,15 +34211,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 18838, - "end": 18842, + "start": 18886, + "end": 18890, "loc": { "start": { - "line": 555, + "line": 556, "column": 9 }, "end": { - "line": 555, + "line": 556, "column": 13 }, "identifierName": "node" @@ -34181,30 +34232,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 18844, - "end": 18867, + "start": 18892, + "end": 18915, "loc": { "start": { - "line": 555, + "line": 556, "column": 15 }, "end": { - "line": 557, + "line": 558, "column": 5 } }, "body": [ { "type": "ReturnStatement", - "start": 18854, - "end": 18861, + "start": 18902, + "end": 18909, "loc": { "start": { - "line": 556, + "line": 557, "column": 8 }, "end": { - "line": 556, + "line": 557, "column": 15 } }, @@ -34217,44 +34268,44 @@ }, { "type": "VariableDeclaration", - "start": 18872, - "end": 18888, + "start": 18920, + "end": 18936, "loc": { "start": { - "line": 558, + "line": 559, "column": 4 }, "end": { - "line": 558, + "line": 559, "column": 20 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 18876, - "end": 18887, + "start": 18924, + "end": 18935, "loc": { "start": { - "line": 558, + "line": 559, "column": 8 }, "end": { - "line": 558, + "line": 559, "column": 19 } }, "id": { "type": "Identifier", - "start": 18876, - "end": 18887, + "start": 18924, + "end": 18935, "loc": { "start": { - "line": 558, + "line": 559, "column": 8 }, "end": { - "line": 558, + "line": 559, "column": 19 }, "identifierName": "localMatrix" @@ -34268,43 +34319,43 @@ }, { "type": "IfStatement", - "start": 18893, - "end": 19104, + "start": 18941, + "end": 19152, "loc": { "start": { - "line": 559, + "line": 560, "column": 4 }, "end": { - "line": 566, + "line": 567, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 18897, - "end": 18908, + "start": 18945, + "end": 18956, "loc": { "start": { - "line": 559, + "line": 560, "column": 8 }, "end": { - "line": 559, + "line": 560, "column": 19 } }, "object": { "type": "Identifier", - "start": 18897, - "end": 18901, + "start": 18945, + "end": 18949, "loc": { "start": { - "line": 559, + "line": 560, "column": 8 }, "end": { - "line": 559, + "line": 560, "column": 12 }, "identifierName": "node" @@ -34313,15 +34364,15 @@ }, "property": { "type": "Identifier", - "start": 18902, - "end": 18908, + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 559, + "line": 560, "column": 13 }, "end": { - "line": 559, + "line": 560, "column": 19 }, "identifierName": "matrix" @@ -34332,59 +34383,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 18910, - "end": 19104, + "start": 18958, + "end": 19152, "loc": { "start": { - "line": 559, + "line": 560, "column": 21 }, "end": { - "line": 566, + "line": 567, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 18920, - "end": 18946, + "start": 18968, + "end": 18994, "loc": { "start": { - "line": 560, + "line": 561, "column": 8 }, "end": { - "line": 560, + "line": 561, "column": 34 } }, "expression": { "type": "AssignmentExpression", - "start": 18920, - "end": 18945, + "start": 18968, + "end": 18993, "loc": { "start": { - "line": 560, + "line": 561, "column": 8 }, "end": { - "line": 560, + "line": 561, "column": 33 } }, "operator": "=", "left": { "type": "Identifier", - "start": 18920, - "end": 18931, + "start": 18968, + "end": 18979, "loc": { "start": { - "line": 560, + "line": 561, "column": 8 }, "end": { - "line": 560, + "line": 561, "column": 19 }, "identifierName": "localMatrix" @@ -34393,29 +34444,29 @@ }, "right": { "type": "MemberExpression", - "start": 18934, - "end": 18945, + "start": 18982, + "end": 18993, "loc": { "start": { - "line": 560, + "line": 561, "column": 22 }, "end": { - "line": 560, + "line": 561, "column": 33 } }, "object": { "type": "Identifier", - "start": 18934, - "end": 18938, + "start": 18982, + "end": 18986, "loc": { "start": { - "line": 560, + "line": 561, "column": 22 }, "end": { - "line": 560, + "line": 561, "column": 26 }, "identifierName": "node" @@ -34424,15 +34475,15 @@ }, "property": { "type": "Identifier", - "start": 18939, - "end": 18945, + "start": 18987, + "end": 18993, "loc": { "start": { - "line": 560, + "line": 561, "column": 27 }, "end": { - "line": 560, + "line": 561, "column": 33 }, "identifierName": "matrix" @@ -34445,29 +34496,29 @@ }, { "type": "IfStatement", - "start": 18955, - "end": 19098, + "start": 19003, + "end": 19146, "loc": { "start": { - "line": 561, + "line": 562, "column": 8 }, "end": { - "line": 565, + "line": 566, "column": 9 } }, "test": { "type": "Identifier", - "start": 18959, - "end": 18965, + "start": 19007, + "end": 19013, "loc": { "start": { - "line": 561, + "line": 562, "column": 12 }, "end": { - "line": 561, + "line": 562, "column": 18 }, "identifierName": "matrix" @@ -34476,59 +34527,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 18967, - "end": 19047, + "start": 19015, + "end": 19095, "loc": { "start": { - "line": 561, + "line": 562, "column": 20 }, "end": { - "line": 563, + "line": 564, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 18981, - "end": 19037, + "start": 19029, + "end": 19085, "loc": { "start": { - "line": 562, + "line": 563, "column": 12 }, "end": { - "line": 562, + "line": 563, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 18981, - "end": 19036, + "start": 19029, + "end": 19084, "loc": { "start": { - "line": 562, + "line": 563, "column": 12 }, "end": { - "line": 562, + "line": 563, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 18981, - "end": 18987, + "start": 19029, + "end": 19035, "loc": { "start": { - "line": 562, + "line": 563, "column": 12 }, "end": { - "line": 562, + "line": 563, "column": 18 }, "identifierName": "matrix" @@ -34537,43 +34588,43 @@ }, "right": { "type": "CallExpression", - "start": 18990, - "end": 19036, + "start": 19038, + "end": 19084, "loc": { "start": { - "line": 562, + "line": 563, "column": 21 }, "end": { - "line": 562, + "line": 563, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 18990, - "end": 19002, + "start": 19038, + "end": 19050, "loc": { "start": { - "line": 562, + "line": 563, "column": 21 }, "end": { - "line": 562, + "line": 563, "column": 33 } }, "object": { "type": "Identifier", - "start": 18990, - "end": 18994, + "start": 19038, + "end": 19042, "loc": { "start": { - "line": 562, + "line": 563, "column": 21 }, "end": { - "line": 562, + "line": 563, "column": 25 }, "identifierName": "math" @@ -34582,15 +34633,15 @@ }, "property": { "type": "Identifier", - "start": 18995, - "end": 19002, + "start": 19043, + "end": 19050, "loc": { "start": { - "line": 562, + "line": 563, "column": 26 }, "end": { - "line": 562, + "line": 563, "column": 33 }, "identifierName": "mulMat4" @@ -34602,15 +34653,15 @@ "arguments": [ { "type": "Identifier", - "start": 19003, - "end": 19009, + "start": 19051, + "end": 19057, "loc": { "start": { - "line": 562, + "line": 563, "column": 34 }, "end": { - "line": 562, + "line": 563, "column": 40 }, "identifierName": "matrix" @@ -34619,15 +34670,15 @@ }, { "type": "Identifier", - "start": 19011, - "end": 19022, + "start": 19059, + "end": 19070, "loc": { "start": { - "line": 562, + "line": 563, "column": 42 }, "end": { - "line": 562, + "line": 563, "column": 53 }, "identifierName": "localMatrix" @@ -34636,43 +34687,43 @@ }, { "type": "CallExpression", - "start": 19024, - "end": 19035, + "start": 19072, + "end": 19083, "loc": { "start": { - "line": 562, + "line": 563, "column": 55 }, "end": { - "line": 562, + "line": 563, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 19024, - "end": 19033, + "start": 19072, + "end": 19081, "loc": { "start": { - "line": 562, + "line": 563, "column": 55 }, "end": { - "line": 562, + "line": 563, "column": 64 } }, "object": { "type": "Identifier", - "start": 19024, - "end": 19028, + "start": 19072, + "end": 19076, "loc": { "start": { - "line": 562, + "line": 563, "column": 55 }, "end": { - "line": 562, + "line": 563, "column": 59 }, "identifierName": "math" @@ -34681,15 +34732,15 @@ }, "property": { "type": "Identifier", - "start": 19029, - "end": 19033, + "start": 19077, + "end": 19081, "loc": { "start": { - "line": 562, + "line": 563, "column": 60 }, "end": { - "line": 562, + "line": 563, "column": 64 }, "identifierName": "mat4" @@ -34709,59 +34760,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 19053, - "end": 19098, + "start": 19101, + "end": 19146, "loc": { "start": { - "line": 563, + "line": 564, "column": 15 }, "end": { - "line": 565, + "line": 566, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19067, - "end": 19088, + "start": 19115, + "end": 19136, "loc": { "start": { - "line": 564, + "line": 565, "column": 12 }, "end": { - "line": 564, + "line": 565, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 19067, - "end": 19087, + "start": 19115, + "end": 19135, "loc": { "start": { - "line": 564, + "line": 565, "column": 12 }, "end": { - "line": 564, + "line": 565, "column": 32 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19067, - "end": 19073, + "start": 19115, + "end": 19121, "loc": { "start": { - "line": 564, + "line": 565, "column": 12 }, "end": { - "line": 564, + "line": 565, "column": 18 }, "identifierName": "matrix" @@ -34770,15 +34821,15 @@ }, "right": { "type": "Identifier", - "start": 19076, - "end": 19087, + "start": 19124, + "end": 19135, "loc": { "start": { - "line": 564, + "line": 565, "column": 21 }, "end": { - "line": 564, + "line": 565, "column": 32 }, "identifierName": "localMatrix" @@ -34798,43 +34849,43 @@ }, { "type": "IfStatement", - "start": 19109, - "end": 19353, + "start": 19157, + "end": 19401, "loc": { "start": { - "line": 567, + "line": 568, "column": 4 }, "end": { - "line": 574, + "line": 575, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 19113, - "end": 19129, + "start": 19161, + "end": 19177, "loc": { "start": { - "line": 567, + "line": 568, "column": 8 }, "end": { - "line": 567, + "line": 568, "column": 24 } }, "object": { "type": "Identifier", - "start": 19113, - "end": 19117, + "start": 19161, + "end": 19165, "loc": { "start": { - "line": 567, + "line": 568, "column": 8 }, "end": { - "line": 567, + "line": 568, "column": 12 }, "identifierName": "node" @@ -34843,15 +34894,15 @@ }, "property": { "type": "Identifier", - "start": 19118, - "end": 19129, + "start": 19166, + "end": 19177, "loc": { "start": { - "line": 567, + "line": 568, "column": 13 }, "end": { - "line": 567, + "line": 568, "column": 24 }, "identifierName": "translation" @@ -34862,59 +34913,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19131, - "end": 19353, + "start": 19179, + "end": 19401, "loc": { "start": { - "line": 567, + "line": 568, "column": 26 }, "end": { - "line": 574, + "line": 575, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 19141, - "end": 19195, + "start": 19189, + "end": 19243, "loc": { "start": { - "line": 568, + "line": 569, "column": 8 }, "end": { - "line": 568, + "line": 569, "column": 62 } }, "expression": { "type": "AssignmentExpression", - "start": 19141, - "end": 19194, + "start": 19189, + "end": 19242, "loc": { "start": { - "line": 568, + "line": 569, "column": 8 }, "end": { - "line": 568, + "line": 569, "column": 61 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19141, - "end": 19152, + "start": 19189, + "end": 19200, "loc": { "start": { - "line": 568, + "line": 569, "column": 8 }, "end": { - "line": 568, + "line": 569, "column": 19 }, "identifierName": "localMatrix" @@ -34923,43 +34974,43 @@ }, "right": { "type": "CallExpression", - "start": 19155, - "end": 19194, + "start": 19203, + "end": 19242, "loc": { "start": { - "line": 568, + "line": 569, "column": 22 }, "end": { - "line": 568, + "line": 569, "column": 61 } }, "callee": { "type": "MemberExpression", - "start": 19155, - "end": 19176, + "start": 19203, + "end": 19224, "loc": { "start": { - "line": 568, + "line": 569, "column": 22 }, "end": { - "line": 568, + "line": 569, "column": 43 } }, "object": { "type": "Identifier", - "start": 19155, - "end": 19159, + "start": 19203, + "end": 19207, "loc": { "start": { - "line": 568, + "line": 569, "column": 22 }, "end": { - "line": 568, + "line": 569, "column": 26 }, "identifierName": "math" @@ -34968,15 +35019,15 @@ }, "property": { "type": "Identifier", - "start": 19160, - "end": 19176, + "start": 19208, + "end": 19224, "loc": { "start": { - "line": 568, + "line": 569, "column": 27 }, "end": { - "line": 568, + "line": 569, "column": 43 }, "identifierName": "translationMat4v" @@ -34988,29 +35039,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 19177, - "end": 19193, + "start": 19225, + "end": 19241, "loc": { "start": { - "line": 568, + "line": 569, "column": 44 }, "end": { - "line": 568, + "line": 569, "column": 60 } }, "object": { "type": "Identifier", - "start": 19177, - "end": 19181, + "start": 19225, + "end": 19229, "loc": { "start": { - "line": 568, + "line": 569, "column": 44 }, "end": { - "line": 568, + "line": 569, "column": 48 }, "identifierName": "node" @@ -35019,15 +35070,15 @@ }, "property": { "type": "Identifier", - "start": 19182, - "end": 19193, + "start": 19230, + "end": 19241, "loc": { "start": { - "line": 568, + "line": 569, "column": 49 }, "end": { - "line": 568, + "line": 569, "column": 60 }, "identifierName": "translation" @@ -35042,29 +35093,29 @@ }, { "type": "IfStatement", - "start": 19204, - "end": 19347, + "start": 19252, + "end": 19395, "loc": { "start": { - "line": 569, + "line": 570, "column": 8 }, "end": { - "line": 573, + "line": 574, "column": 9 } }, "test": { "type": "Identifier", - "start": 19208, - "end": 19214, + "start": 19256, + "end": 19262, "loc": { "start": { - "line": 569, + "line": 570, "column": 12 }, "end": { - "line": 569, + "line": 570, "column": 18 }, "identifierName": "matrix" @@ -35073,59 +35124,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19216, - "end": 19296, + "start": 19264, + "end": 19344, "loc": { "start": { - "line": 569, + "line": 570, "column": 20 }, "end": { - "line": 571, + "line": 572, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19230, - "end": 19286, + "start": 19278, + "end": 19334, "loc": { "start": { - "line": 570, + "line": 571, "column": 12 }, "end": { - "line": 570, + "line": 571, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 19230, - "end": 19285, + "start": 19278, + "end": 19333, "loc": { "start": { - "line": 570, + "line": 571, "column": 12 }, "end": { - "line": 570, + "line": 571, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19230, - "end": 19236, + "start": 19278, + "end": 19284, "loc": { "start": { - "line": 570, + "line": 571, "column": 12 }, "end": { - "line": 570, + "line": 571, "column": 18 }, "identifierName": "matrix" @@ -35134,43 +35185,43 @@ }, "right": { "type": "CallExpression", - "start": 19239, - "end": 19285, + "start": 19287, + "end": 19333, "loc": { "start": { - "line": 570, + "line": 571, "column": 21 }, "end": { - "line": 570, + "line": 571, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 19239, - "end": 19251, + "start": 19287, + "end": 19299, "loc": { "start": { - "line": 570, + "line": 571, "column": 21 }, "end": { - "line": 570, + "line": 571, "column": 33 } }, "object": { "type": "Identifier", - "start": 19239, - "end": 19243, + "start": 19287, + "end": 19291, "loc": { "start": { - "line": 570, + "line": 571, "column": 21 }, "end": { - "line": 570, + "line": 571, "column": 25 }, "identifierName": "math" @@ -35179,15 +35230,15 @@ }, "property": { "type": "Identifier", - "start": 19244, - "end": 19251, + "start": 19292, + "end": 19299, "loc": { "start": { - "line": 570, + "line": 571, "column": 26 }, "end": { - "line": 570, + "line": 571, "column": 33 }, "identifierName": "mulMat4" @@ -35199,15 +35250,15 @@ "arguments": [ { "type": "Identifier", - "start": 19252, - "end": 19258, + "start": 19300, + "end": 19306, "loc": { "start": { - "line": 570, + "line": 571, "column": 34 }, "end": { - "line": 570, + "line": 571, "column": 40 }, "identifierName": "matrix" @@ -35216,15 +35267,15 @@ }, { "type": "Identifier", - "start": 19260, - "end": 19271, + "start": 19308, + "end": 19319, "loc": { "start": { - "line": 570, + "line": 571, "column": 42 }, "end": { - "line": 570, + "line": 571, "column": 53 }, "identifierName": "localMatrix" @@ -35233,43 +35284,43 @@ }, { "type": "CallExpression", - "start": 19273, - "end": 19284, + "start": 19321, + "end": 19332, "loc": { "start": { - "line": 570, + "line": 571, "column": 55 }, "end": { - "line": 570, + "line": 571, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 19273, - "end": 19282, + "start": 19321, + "end": 19330, "loc": { "start": { - "line": 570, + "line": 571, "column": 55 }, "end": { - "line": 570, + "line": 571, "column": 64 } }, "object": { "type": "Identifier", - "start": 19273, - "end": 19277, + "start": 19321, + "end": 19325, "loc": { "start": { - "line": 570, + "line": 571, "column": 55 }, "end": { - "line": 570, + "line": 571, "column": 59 }, "identifierName": "math" @@ -35278,15 +35329,15 @@ }, "property": { "type": "Identifier", - "start": 19278, - "end": 19282, + "start": 19326, + "end": 19330, "loc": { "start": { - "line": 570, + "line": 571, "column": 60 }, "end": { - "line": 570, + "line": 571, "column": 64 }, "identifierName": "mat4" @@ -35306,59 +35357,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 19302, - "end": 19347, + "start": 19350, + "end": 19395, "loc": { "start": { - "line": 571, + "line": 572, "column": 15 }, "end": { - "line": 573, + "line": 574, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19316, - "end": 19337, + "start": 19364, + "end": 19385, "loc": { "start": { - "line": 572, + "line": 573, "column": 12 }, "end": { - "line": 572, + "line": 573, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 19316, - "end": 19336, + "start": 19364, + "end": 19384, "loc": { "start": { - "line": 572, + "line": 573, "column": 12 }, "end": { - "line": 572, + "line": 573, "column": 32 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19316, - "end": 19322, + "start": 19364, + "end": 19370, "loc": { "start": { - "line": 572, + "line": 573, "column": 12 }, "end": { - "line": 572, + "line": 573, "column": 18 }, "identifierName": "matrix" @@ -35367,15 +35418,15 @@ }, "right": { "type": "Identifier", - "start": 19325, - "end": 19336, + "start": 19373, + "end": 19384, "loc": { "start": { - "line": 572, + "line": 573, "column": 21 }, "end": { - "line": 572, + "line": 573, "column": 32 }, "identifierName": "localMatrix" @@ -35395,43 +35446,43 @@ }, { "type": "IfStatement", - "start": 19358, - "end": 19596, + "start": 19406, + "end": 19644, "loc": { "start": { - "line": 575, + "line": 576, "column": 4 }, "end": { - "line": 582, + "line": 583, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 19362, - "end": 19375, + "start": 19410, + "end": 19423, "loc": { "start": { - "line": 575, + "line": 576, "column": 8 }, "end": { - "line": 575, + "line": 576, "column": 21 } }, "object": { "type": "Identifier", - "start": 19362, - "end": 19366, + "start": 19410, + "end": 19414, "loc": { "start": { - "line": 575, + "line": 576, "column": 8 }, "end": { - "line": 575, + "line": 576, "column": 12 }, "identifierName": "node" @@ -35440,15 +35491,15 @@ }, "property": { "type": "Identifier", - "start": 19367, - "end": 19375, + "start": 19415, + "end": 19423, "loc": { "start": { - "line": 575, + "line": 576, "column": 13 }, "end": { - "line": 575, + "line": 576, "column": 21 }, "identifierName": "rotation" @@ -35459,59 +35510,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19377, - "end": 19596, + "start": 19425, + "end": 19644, "loc": { "start": { - "line": 575, + "line": 576, "column": 23 }, "end": { - "line": 582, + "line": 583, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 19387, - "end": 19438, + "start": 19435, + "end": 19486, "loc": { "start": { - "line": 576, + "line": 577, "column": 8 }, "end": { - "line": 576, + "line": 577, "column": 59 } }, "expression": { "type": "AssignmentExpression", - "start": 19387, - "end": 19437, + "start": 19435, + "end": 19485, "loc": { "start": { - "line": 576, + "line": 577, "column": 8 }, "end": { - "line": 576, + "line": 577, "column": 58 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19387, - "end": 19398, + "start": 19435, + "end": 19446, "loc": { "start": { - "line": 576, + "line": 577, "column": 8 }, "end": { - "line": 576, + "line": 577, "column": 19 }, "identifierName": "localMatrix" @@ -35520,43 +35571,43 @@ }, "right": { "type": "CallExpression", - "start": 19401, - "end": 19437, + "start": 19449, + "end": 19485, "loc": { "start": { - "line": 576, + "line": 577, "column": 22 }, "end": { - "line": 576, + "line": 577, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 19401, - "end": 19422, + "start": 19449, + "end": 19470, "loc": { "start": { - "line": 576, + "line": 577, "column": 22 }, "end": { - "line": 576, + "line": 577, "column": 43 } }, "object": { "type": "Identifier", - "start": 19401, - "end": 19405, + "start": 19449, + "end": 19453, "loc": { "start": { - "line": 576, + "line": 577, "column": 22 }, "end": { - "line": 576, + "line": 577, "column": 26 }, "identifierName": "math" @@ -35565,15 +35616,15 @@ }, "property": { "type": "Identifier", - "start": 19406, - "end": 19422, + "start": 19454, + "end": 19470, "loc": { "start": { - "line": 576, + "line": 577, "column": 27 }, "end": { - "line": 576, + "line": 577, "column": 43 }, "identifierName": "quaternionToMat4" @@ -35585,29 +35636,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 19423, - "end": 19436, + "start": 19471, + "end": 19484, "loc": { "start": { - "line": 576, + "line": 577, "column": 44 }, "end": { - "line": 576, + "line": 577, "column": 57 } }, "object": { "type": "Identifier", - "start": 19423, - "end": 19427, + "start": 19471, + "end": 19475, "loc": { "start": { - "line": 576, + "line": 577, "column": 44 }, "end": { - "line": 576, + "line": 577, "column": 48 }, "identifierName": "node" @@ -35616,15 +35667,15 @@ }, "property": { "type": "Identifier", - "start": 19428, - "end": 19436, + "start": 19476, + "end": 19484, "loc": { "start": { - "line": 576, + "line": 577, "column": 49 }, "end": { - "line": 576, + "line": 577, "column": 57 }, "identifierName": "rotation" @@ -35639,29 +35690,29 @@ }, { "type": "IfStatement", - "start": 19447, - "end": 19590, + "start": 19495, + "end": 19638, "loc": { "start": { - "line": 577, + "line": 578, "column": 8 }, "end": { - "line": 581, + "line": 582, "column": 9 } }, "test": { "type": "Identifier", - "start": 19451, - "end": 19457, + "start": 19499, + "end": 19505, "loc": { "start": { - "line": 577, + "line": 578, "column": 12 }, "end": { - "line": 577, + "line": 578, "column": 18 }, "identifierName": "matrix" @@ -35670,59 +35721,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19459, - "end": 19539, + "start": 19507, + "end": 19587, "loc": { "start": { - "line": 577, + "line": 578, "column": 20 }, "end": { - "line": 579, + "line": 580, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19473, - "end": 19529, + "start": 19521, + "end": 19577, "loc": { "start": { - "line": 578, + "line": 579, "column": 12 }, "end": { - "line": 578, + "line": 579, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 19473, - "end": 19528, + "start": 19521, + "end": 19576, "loc": { "start": { - "line": 578, + "line": 579, "column": 12 }, "end": { - "line": 578, + "line": 579, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19473, - "end": 19479, + "start": 19521, + "end": 19527, "loc": { "start": { - "line": 578, + "line": 579, "column": 12 }, "end": { - "line": 578, + "line": 579, "column": 18 }, "identifierName": "matrix" @@ -35731,43 +35782,43 @@ }, "right": { "type": "CallExpression", - "start": 19482, - "end": 19528, + "start": 19530, + "end": 19576, "loc": { "start": { - "line": 578, + "line": 579, "column": 21 }, "end": { - "line": 578, + "line": 579, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 19482, - "end": 19494, + "start": 19530, + "end": 19542, "loc": { "start": { - "line": 578, + "line": 579, "column": 21 }, "end": { - "line": 578, + "line": 579, "column": 33 } }, "object": { "type": "Identifier", - "start": 19482, - "end": 19486, + "start": 19530, + "end": 19534, "loc": { "start": { - "line": 578, + "line": 579, "column": 21 }, "end": { - "line": 578, + "line": 579, "column": 25 }, "identifierName": "math" @@ -35776,15 +35827,15 @@ }, "property": { "type": "Identifier", - "start": 19487, - "end": 19494, + "start": 19535, + "end": 19542, "loc": { "start": { - "line": 578, + "line": 579, "column": 26 }, "end": { - "line": 578, + "line": 579, "column": 33 }, "identifierName": "mulMat4" @@ -35796,15 +35847,15 @@ "arguments": [ { "type": "Identifier", - "start": 19495, - "end": 19501, + "start": 19543, + "end": 19549, "loc": { "start": { - "line": 578, + "line": 579, "column": 34 }, "end": { - "line": 578, + "line": 579, "column": 40 }, "identifierName": "matrix" @@ -35813,15 +35864,15 @@ }, { "type": "Identifier", - "start": 19503, - "end": 19514, + "start": 19551, + "end": 19562, "loc": { "start": { - "line": 578, + "line": 579, "column": 42 }, "end": { - "line": 578, + "line": 579, "column": 53 }, "identifierName": "localMatrix" @@ -35830,43 +35881,43 @@ }, { "type": "CallExpression", - "start": 19516, - "end": 19527, + "start": 19564, + "end": 19575, "loc": { "start": { - "line": 578, + "line": 579, "column": 55 }, "end": { - "line": 578, + "line": 579, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 19516, - "end": 19525, + "start": 19564, + "end": 19573, "loc": { "start": { - "line": 578, + "line": 579, "column": 55 }, "end": { - "line": 578, + "line": 579, "column": 64 } }, "object": { "type": "Identifier", - "start": 19516, - "end": 19520, + "start": 19564, + "end": 19568, "loc": { "start": { - "line": 578, + "line": 579, "column": 55 }, "end": { - "line": 578, + "line": 579, "column": 59 }, "identifierName": "math" @@ -35875,15 +35926,15 @@ }, "property": { "type": "Identifier", - "start": 19521, - "end": 19525, + "start": 19569, + "end": 19573, "loc": { "start": { - "line": 578, + "line": 579, "column": 60 }, "end": { - "line": 578, + "line": 579, "column": 64 }, "identifierName": "mat4" @@ -35903,59 +35954,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 19545, - "end": 19590, + "start": 19593, + "end": 19638, "loc": { "start": { - "line": 579, + "line": 580, "column": 15 }, "end": { - "line": 581, + "line": 582, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19559, - "end": 19580, + "start": 19607, + "end": 19628, "loc": { "start": { - "line": 580, + "line": 581, "column": 12 }, "end": { - "line": 580, + "line": 581, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 19559, - "end": 19579, + "start": 19607, + "end": 19627, "loc": { "start": { - "line": 580, + "line": 581, "column": 12 }, "end": { - "line": 580, + "line": 581, "column": 32 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19559, - "end": 19565, + "start": 19607, + "end": 19613, "loc": { "start": { - "line": 580, + "line": 581, "column": 12 }, "end": { - "line": 580, + "line": 581, "column": 18 }, "identifierName": "matrix" @@ -35964,15 +36015,15 @@ }, "right": { "type": "Identifier", - "start": 19568, - "end": 19579, + "start": 19616, + "end": 19627, "loc": { "start": { - "line": 580, + "line": 581, "column": 21 }, "end": { - "line": 580, + "line": 581, "column": 32 }, "identifierName": "localMatrix" @@ -35992,43 +36043,43 @@ }, { "type": "IfStatement", - "start": 19601, - "end": 19829, + "start": 19649, + "end": 19877, "loc": { "start": { - "line": 583, + "line": 584, "column": 4 }, "end": { - "line": 590, + "line": 591, "column": 5 } }, "test": { "type": "MemberExpression", - "start": 19605, - "end": 19615, + "start": 19653, + "end": 19663, "loc": { "start": { - "line": 583, + "line": 584, "column": 8 }, "end": { - "line": 583, + "line": 584, "column": 18 } }, "object": { "type": "Identifier", - "start": 19605, - "end": 19609, + "start": 19653, + "end": 19657, "loc": { "start": { - "line": 583, + "line": 584, "column": 8 }, "end": { - "line": 583, + "line": 584, "column": 12 }, "identifierName": "node" @@ -36037,15 +36088,15 @@ }, "property": { "type": "Identifier", - "start": 19610, - "end": 19615, + "start": 19658, + "end": 19663, "loc": { "start": { - "line": 583, + "line": 584, "column": 13 }, "end": { - "line": 583, + "line": 584, "column": 18 }, "identifierName": "scale" @@ -36056,59 +36107,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19617, - "end": 19829, + "start": 19665, + "end": 19877, "loc": { "start": { - "line": 583, + "line": 584, "column": 20 }, "end": { - "line": 590, + "line": 591, "column": 5 } }, "body": [ { "type": "ExpressionStatement", - "start": 19627, - "end": 19671, + "start": 19675, + "end": 19719, "loc": { "start": { - "line": 584, + "line": 585, "column": 8 }, "end": { - "line": 584, + "line": 585, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 19627, - "end": 19670, + "start": 19675, + "end": 19718, "loc": { "start": { - "line": 584, + "line": 585, "column": 8 }, "end": { - "line": 584, + "line": 585, "column": 51 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19627, - "end": 19638, + "start": 19675, + "end": 19686, "loc": { "start": { - "line": 584, + "line": 585, "column": 8 }, "end": { - "line": 584, + "line": 585, "column": 19 }, "identifierName": "localMatrix" @@ -36117,43 +36168,43 @@ }, "right": { "type": "CallExpression", - "start": 19641, - "end": 19670, + "start": 19689, + "end": 19718, "loc": { "start": { - "line": 584, + "line": 585, "column": 22 }, "end": { - "line": 584, + "line": 585, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 19641, - "end": 19658, + "start": 19689, + "end": 19706, "loc": { "start": { - "line": 584, + "line": 585, "column": 22 }, "end": { - "line": 584, + "line": 585, "column": 39 } }, "object": { "type": "Identifier", - "start": 19641, - "end": 19645, + "start": 19689, + "end": 19693, "loc": { "start": { - "line": 584, + "line": 585, "column": 22 }, "end": { - "line": 584, + "line": 585, "column": 26 }, "identifierName": "math" @@ -36162,15 +36213,15 @@ }, "property": { "type": "Identifier", - "start": 19646, - "end": 19658, + "start": 19694, + "end": 19706, "loc": { "start": { - "line": 584, + "line": 585, "column": 27 }, "end": { - "line": 584, + "line": 585, "column": 39 }, "identifierName": "scalingMat4v" @@ -36182,29 +36233,29 @@ "arguments": [ { "type": "MemberExpression", - "start": 19659, - "end": 19669, + "start": 19707, + "end": 19717, "loc": { "start": { - "line": 584, + "line": 585, "column": 40 }, "end": { - "line": 584, + "line": 585, "column": 50 } }, "object": { "type": "Identifier", - "start": 19659, - "end": 19663, + "start": 19707, + "end": 19711, "loc": { "start": { - "line": 584, + "line": 585, "column": 40 }, "end": { - "line": 584, + "line": 585, "column": 44 }, "identifierName": "node" @@ -36213,15 +36264,15 @@ }, "property": { "type": "Identifier", - "start": 19664, - "end": 19669, + "start": 19712, + "end": 19717, "loc": { "start": { - "line": 584, + "line": 585, "column": 45 }, "end": { - "line": 584, + "line": 585, "column": 50 }, "identifierName": "scale" @@ -36236,29 +36287,29 @@ }, { "type": "IfStatement", - "start": 19680, - "end": 19823, + "start": 19728, + "end": 19871, "loc": { "start": { - "line": 585, + "line": 586, "column": 8 }, "end": { - "line": 589, + "line": 590, "column": 9 } }, "test": { "type": "Identifier", - "start": 19684, - "end": 19690, + "start": 19732, + "end": 19738, "loc": { "start": { - "line": 585, + "line": 586, "column": 12 }, "end": { - "line": 585, + "line": 586, "column": 18 }, "identifierName": "matrix" @@ -36267,59 +36318,59 @@ }, "consequent": { "type": "BlockStatement", - "start": 19692, - "end": 19772, + "start": 19740, + "end": 19820, "loc": { "start": { - "line": 585, + "line": 586, "column": 20 }, "end": { - "line": 587, + "line": 588, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19706, - "end": 19762, + "start": 19754, + "end": 19810, "loc": { "start": { - "line": 586, + "line": 587, "column": 12 }, "end": { - "line": 586, + "line": 587, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 19706, - "end": 19761, + "start": 19754, + "end": 19809, "loc": { "start": { - "line": 586, + "line": 587, "column": 12 }, "end": { - "line": 586, + "line": 587, "column": 67 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19706, - "end": 19712, + "start": 19754, + "end": 19760, "loc": { "start": { - "line": 586, + "line": 587, "column": 12 }, "end": { - "line": 586, + "line": 587, "column": 18 }, "identifierName": "matrix" @@ -36328,43 +36379,43 @@ }, "right": { "type": "CallExpression", - "start": 19715, - "end": 19761, + "start": 19763, + "end": 19809, "loc": { "start": { - "line": 586, + "line": 587, "column": 21 }, "end": { - "line": 586, + "line": 587, "column": 67 } }, "callee": { "type": "MemberExpression", - "start": 19715, - "end": 19727, + "start": 19763, + "end": 19775, "loc": { "start": { - "line": 586, + "line": 587, "column": 21 }, "end": { - "line": 586, + "line": 587, "column": 33 } }, "object": { "type": "Identifier", - "start": 19715, - "end": 19719, + "start": 19763, + "end": 19767, "loc": { "start": { - "line": 586, + "line": 587, "column": 21 }, "end": { - "line": 586, + "line": 587, "column": 25 }, "identifierName": "math" @@ -36373,15 +36424,15 @@ }, "property": { "type": "Identifier", - "start": 19720, - "end": 19727, + "start": 19768, + "end": 19775, "loc": { "start": { - "line": 586, + "line": 587, "column": 26 }, "end": { - "line": 586, + "line": 587, "column": 33 }, "identifierName": "mulMat4" @@ -36393,15 +36444,15 @@ "arguments": [ { "type": "Identifier", - "start": 19728, - "end": 19734, + "start": 19776, + "end": 19782, "loc": { "start": { - "line": 586, + "line": 587, "column": 34 }, "end": { - "line": 586, + "line": 587, "column": 40 }, "identifierName": "matrix" @@ -36410,15 +36461,15 @@ }, { "type": "Identifier", - "start": 19736, - "end": 19747, + "start": 19784, + "end": 19795, "loc": { "start": { - "line": 586, + "line": 587, "column": 42 }, "end": { - "line": 586, + "line": 587, "column": 53 }, "identifierName": "localMatrix" @@ -36427,43 +36478,43 @@ }, { "type": "CallExpression", - "start": 19749, - "end": 19760, + "start": 19797, + "end": 19808, "loc": { "start": { - "line": 586, + "line": 587, "column": 55 }, "end": { - "line": 586, + "line": 587, "column": 66 } }, "callee": { "type": "MemberExpression", - "start": 19749, - "end": 19758, + "start": 19797, + "end": 19806, "loc": { "start": { - "line": 586, + "line": 587, "column": 55 }, "end": { - "line": 586, + "line": 587, "column": 64 } }, "object": { "type": "Identifier", - "start": 19749, - "end": 19753, + "start": 19797, + "end": 19801, "loc": { "start": { - "line": 586, + "line": 587, "column": 55 }, "end": { - "line": 586, + "line": 587, "column": 59 }, "identifierName": "math" @@ -36472,15 +36523,15 @@ }, "property": { "type": "Identifier", - "start": 19754, - "end": 19758, + "start": 19802, + "end": 19806, "loc": { "start": { - "line": 586, + "line": 587, "column": 60 }, "end": { - "line": 586, + "line": 587, "column": 64 }, "identifierName": "mat4" @@ -36500,59 +36551,59 @@ }, "alternate": { "type": "BlockStatement", - "start": 19778, - "end": 19823, + "start": 19826, + "end": 19871, "loc": { "start": { - "line": 587, + "line": 588, "column": 15 }, "end": { - "line": 589, + "line": 590, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 19792, - "end": 19813, + "start": 19840, + "end": 19861, "loc": { "start": { - "line": 588, + "line": 589, "column": 12 }, "end": { - "line": 588, + "line": 589, "column": 33 } }, "expression": { "type": "AssignmentExpression", - "start": 19792, - "end": 19812, + "start": 19840, + "end": 19860, "loc": { "start": { - "line": 588, + "line": 589, "column": 12 }, "end": { - "line": 588, + "line": 589, "column": 32 } }, "operator": "=", "left": { "type": "Identifier", - "start": 19792, - "end": 19798, + "start": 19840, + "end": 19846, "loc": { "start": { - "line": 588, + "line": 589, "column": 12 }, "end": { - "line": 588, + "line": 589, "column": 18 }, "identifierName": "matrix" @@ -36561,15 +36612,15 @@ }, "right": { "type": "Identifier", - "start": 19801, - "end": 19812, + "start": 19849, + "end": 19860, "loc": { "start": { - "line": 588, + "line": 589, "column": 21 }, "end": { - "line": 588, + "line": 589, "column": 32 }, "identifierName": "localMatrix" @@ -36589,29 +36640,29 @@ }, { "type": "ReturnStatement", - "start": 19834, - "end": 19848, + "start": 19882, + "end": 19896, "loc": { "start": { - "line": 591, + "line": 592, "column": 4 }, "end": { - "line": 591, + "line": 592, "column": 18 } }, "argument": { "type": "Identifier", - "start": 19841, - "end": 19847, + "start": 19889, + "end": 19895, "loc": { "start": { - "line": 591, + "line": 592, "column": 11 }, "end": { - "line": 591, + "line": 592, "column": 17 }, "identifierName": "matrix" @@ -36620,40 +36671,21 @@ } } ], - "directives": [], - "trailingComments": null + "directives": [] }, "leadingComments": [ { "type": "CommentBlock", "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", - "start": 18607, - "end": 18787, - "loc": { - "start": { - "line": 547, - "column": 0 - }, - "end": { - "line": 553, - "column": 3 - } - } - } - ], - "trailingComments": [ - { - "type": "CommentBlock", - "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", - "start": 19852, - "end": 20119, + "start": 18655, + "end": 18835, "loc": { "start": { - "line": 594, + "line": 548, "column": 0 }, "end": { - "line": 601, + "line": 554, "column": 3 } } @@ -36662,35 +36694,34 @@ }, { "type": "FunctionDeclaration", - "start": 20120, - "end": 24570, + "start": 19900, + "end": 20155, "loc": { "start": { - "line": 602, + "line": 595, "column": 0 }, "end": { - "line": 700, + "line": 604, "column": 1 } }, "id": { "type": "Identifier", - "start": 20129, - "end": 20142, + "start": 19909, + "end": 19928, "loc": { "start": { - "line": 602, + "line": 595, "column": 9 }, "end": { - "line": 602, - "column": 22 + "line": 595, + "column": 28 }, - "identifierName": "parseNodeMesh" + "identifierName": "createPrimitiveHash" }, - "name": "parseNodeMesh", - "leadingComments": null + "name": "createPrimitiveHash" }, "generator": false, "expression": false, @@ -36698,488 +36729,196 @@ "params": [ { "type": "Identifier", - "start": 20143, - "end": 20147, - "loc": { - "start": { - "line": 602, - "column": 23 - }, - "end": { - "line": 602, - "column": 27 - }, - "identifierName": "node" - }, - "name": "node" - }, - { - "type": "Identifier", - "start": 20149, - "end": 20152, + "start": 19929, + "end": 19938, "loc": { "start": { - "line": 602, + "line": 595, "column": 29 }, "end": { - "line": 602, - "column": 32 - }, - "identifierName": "ctx" - }, - "name": "ctx" - }, - { - "type": "Identifier", - "start": 20154, - "end": 20160, - "loc": { - "start": { - "line": 602, - "column": 34 - }, - "end": { - "line": 602, - "column": 40 - }, - "identifierName": "matrix" - }, - "name": "matrix" - }, - { - "type": "Identifier", - "start": 20162, - "end": 20169, - "loc": { - "start": { - "line": 602, - "column": 42 - }, - "end": { - "line": 602, - "column": 49 + "line": 595, + "column": 38 }, - "identifierName": "meshIds" + "identifierName": "primitive" }, - "name": "meshIds" + "name": "primitive" } ], "body": { "type": "BlockStatement", - "start": 20171, - "end": 24570, + "start": 19940, + "end": 20155, "loc": { "start": { - "line": 602, - "column": 51 + "line": 595, + "column": 40 }, "end": { - "line": 700, + "line": 604, "column": 1 } }, "body": [ - { - "type": "IfStatement", - "start": 20177, - "end": 20211, - "loc": { - "start": { - "line": 603, - "column": 4 - }, - "end": { - "line": 605, - "column": 5 - } - }, - "test": { - "type": "UnaryExpression", - "start": 20181, - "end": 20186, - "loc": { - "start": { - "line": 603, - "column": 8 - }, - "end": { - "line": 603, - "column": 13 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 20182, - "end": 20186, - "loc": { - "start": { - "line": 603, - "column": 9 - }, - "end": { - "line": 603, - "column": 13 - }, - "identifierName": "node" - }, - "name": "node" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 20188, - "end": 20211, - "loc": { - "start": { - "line": 603, - "column": 15 - }, - "end": { - "line": 605, - "column": 5 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 20198, - "end": 20205, - "loc": { - "start": { - "line": 604, - "column": 8 - }, - "end": { - "line": 604, - "column": 15 - } - }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null - }, { "type": "VariableDeclaration", - "start": 20216, - "end": 20239, + "start": 19946, + "end": 19962, "loc": { "start": { - "line": 606, + "line": 596, "column": 4 }, "end": { - "line": 606, - "column": 27 + "line": 596, + "column": 20 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20222, - "end": 20238, + "start": 19952, + "end": 19961, "loc": { "start": { - "line": 606, + "line": 596, "column": 10 }, "end": { - "line": 606, - "column": 26 + "line": 596, + "column": 19 } }, "id": { "type": "Identifier", - "start": 20222, - "end": 20226, + "start": 19952, + "end": 19956, "loc": { "start": { - "line": 606, + "line": 596, "column": 10 }, "end": { - "line": 606, + "line": 596, "column": 14 }, - "identifierName": "mesh" + "identifierName": "hash" }, - "name": "mesh" + "name": "hash" }, "init": { - "type": "MemberExpression", - "start": 20229, - "end": 20238, + "type": "ArrayExpression", + "start": 19959, + "end": 19961, "loc": { "start": { - "line": 606, + "line": 596, "column": 17 }, "end": { - "line": 606, - "column": 26 + "line": 596, + "column": 19 } }, - "object": { - "type": "Identifier", - "start": 20229, - "end": 20233, - "loc": { - "start": { - "line": 606, - "column": 17 - }, - "end": { - "line": 606, - "column": 21 - }, - "identifierName": "node" - }, - "name": "node" - }, - "property": { - "type": "Identifier", - "start": 20234, - "end": 20238, - "loc": { - "start": { - "line": 606, - "column": 22 - }, - "end": { - "line": 606, - "column": 26 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "computed": false + "elements": [] } } ], "kind": "const" }, - { - "type": "IfStatement", - "start": 20244, - "end": 20278, - "loc": { - "start": { - "line": 607, - "column": 4 - }, - "end": { - "line": 609, - "column": 5 - } - }, - "test": { - "type": "UnaryExpression", - "start": 20248, - "end": 20253, - "loc": { - "start": { - "line": 607, - "column": 8 - }, - "end": { - "line": 607, - "column": 13 - } - }, - "operator": "!", - "prefix": true, - "argument": { - "type": "Identifier", - "start": 20249, - "end": 20253, - "loc": { - "start": { - "line": 607, - "column": 9 - }, - "end": { - "line": 607, - "column": 13 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "extra": { - "parenthesizedArgument": false - } - }, - "consequent": { - "type": "BlockStatement", - "start": 20255, - "end": 20278, - "loc": { - "start": { - "line": 607, - "column": 15 - }, - "end": { - "line": 609, - "column": 5 - } - }, - "body": [ - { - "type": "ReturnStatement", - "start": 20265, - "end": 20272, - "loc": { - "start": { - "line": 608, - "column": 8 - }, - "end": { - "line": 608, - "column": 15 - } - }, - "argument": null - } - ], - "directives": [] - }, - "alternate": null - }, { "type": "VariableDeclaration", - "start": 20283, - "end": 20328, + "start": 19967, + "end": 20007, "loc": { "start": { - "line": 610, + "line": 597, "column": 4 }, "end": { - "line": 610, - "column": 49 + "line": 597, + "column": 44 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20289, - "end": 20327, + "start": 19973, + "end": 20006, "loc": { "start": { - "line": 610, + "line": 597, "column": 10 }, "end": { - "line": 610, - "column": 48 + "line": 597, + "column": 43 } }, "id": { "type": "Identifier", - "start": 20289, - "end": 20302, + "start": 19973, + "end": 19983, "loc": { "start": { - "line": 610, + "line": 597, "column": 10 }, "end": { - "line": 610, - "column": 23 + "line": 597, + "column": 20 }, - "identifierName": "numPrimitives" + "identifierName": "attributes" }, - "name": "numPrimitives" + "name": "attributes" }, "init": { "type": "MemberExpression", - "start": 20305, - "end": 20327, + "start": 19986, + "end": 20006, "loc": { "start": { - "line": 610, - "column": 26 + "line": 597, + "column": 23 }, "end": { - "line": 610, - "column": 48 + "line": 597, + "column": 43 } }, "object": { - "type": "MemberExpression", - "start": 20305, - "end": 20320, + "type": "Identifier", + "start": 19986, + "end": 19995, "loc": { "start": { - "line": 610, - "column": 26 + "line": 597, + "column": 23 }, "end": { - "line": 610, - "column": 41 - } - }, - "object": { - "type": "Identifier", - "start": 20305, - "end": 20309, - "loc": { - "start": { - "line": 610, - "column": 26 - }, - "end": { - "line": 610, - "column": 30 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 20310, - "end": 20320, - "loc": { - "start": { - "line": 610, - "column": 31 - }, - "end": { - "line": 610, - "column": 41 - }, - "identifierName": "primitives" + "line": 597, + "column": 32 }, - "name": "primitives" + "identifierName": "primitive" }, - "computed": false + "name": "primitive" }, "property": { "type": "Identifier", - "start": 20321, - "end": 20327, + "start": 19996, + "end": 20006, "loc": { "start": { - "line": 610, - "column": 42 + "line": 597, + "column": 33 }, "end": { - "line": 610, - "column": 48 + "line": 597, + "column": 43 }, - "identifierName": "length" + "identifierName": "attributes" }, - "name": "length" + "name": "attributes" }, "computed": false } @@ -37189,976 +36928,1929 @@ }, { "type": "IfStatement", - "start": 20333, - "end": 24568, + "start": 20012, + "end": 20126, "loc": { "start": { - "line": 611, + "line": 598, "column": 4 }, "end": { - "line": 699, + "line": 602, "column": 5 } }, "test": { - "type": "BinaryExpression", - "start": 20337, - "end": 20354, + "type": "Identifier", + "start": 20016, + "end": 20026, "loc": { "start": { - "line": 611, + "line": 598, "column": 8 }, "end": { - "line": 611, - "column": 25 - } - }, - "left": { - "type": "Identifier", - "start": 20337, - "end": 20350, - "loc": { - "start": { - "line": 611, - "column": 8 - }, - "end": { - "line": 611, - "column": 21 - }, - "identifierName": "numPrimitives" + "line": 598, + "column": 18 }, - "name": "numPrimitives" + "identifierName": "attributes" }, - "operator": ">", - "right": { - "type": "NumericLiteral", - "start": 20353, - "end": 20354, - "loc": { - "start": { - "line": 611, - "column": 24 - }, - "end": { - "line": 611, - "column": 25 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } + "name": "attributes" }, "consequent": { "type": "BlockStatement", - "start": 20356, - "end": 24568, + "start": 20028, + "end": 20126, "loc": { "start": { - "line": 611, - "column": 27 + "line": 598, + "column": 20 }, "end": { - "line": 699, + "line": 602, "column": 5 } }, "body": [ { - "type": "ForStatement", - "start": 20366, - "end": 24562, + "type": "ForInStatement", + "start": 20038, + "end": 20120, "loc": { "start": { - "line": 612, + "line": 599, "column": 8 }, "end": { - "line": 698, + "line": 601, "column": 9 } }, - "init": { + "left": { "type": "VariableDeclaration", - "start": 20371, - "end": 20380, + "start": 20043, + "end": 20050, "loc": { "start": { - "line": 612, + "line": 599, "column": 13 }, "end": { - "line": 612, - "column": 22 + "line": 599, + "column": 20 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 20375, - "end": 20380, + "start": 20047, + "end": 20050, "loc": { "start": { - "line": 612, + "line": 599, "column": 17 }, "end": { - "line": 612, - "column": 22 + "line": 599, + "column": 20 } }, "id": { "type": "Identifier", - "start": 20375, - "end": 20376, + "start": 20047, + "end": 20050, "loc": { "start": { - "line": 612, + "line": 599, "column": 17 }, "end": { - "line": 612, - "column": 18 + "line": 599, + "column": 20 }, - "identifierName": "i" + "identifierName": "key" }, - "name": "i" + "name": "key" }, - "init": { - "type": "NumericLiteral", - "start": 20379, - "end": 20380, - "loc": { - "start": { - "line": 612, - "column": 21 - }, - "end": { - "line": 612, - "column": 22 - } - }, - "extra": { - "rawValue": 0, - "raw": "0" - }, - "value": 0 - } + "init": null } ], "kind": "let" }, - "test": { - "type": "BinaryExpression", - "start": 20382, - "end": 20399, + "right": { + "type": "Identifier", + "start": 20054, + "end": 20064, "loc": { "start": { - "line": 612, + "line": 599, "column": 24 }, "end": { - "line": 612, - "column": 41 - } - }, - "left": { - "type": "Identifier", - "start": 20382, - "end": 20383, - "loc": { - "start": { - "line": 612, - "column": 24 - }, - "end": { - "line": 612, - "column": 25 - }, - "identifierName": "i" - }, - "name": "i" - }, - "operator": "<", - "right": { - "type": "Identifier", - "start": 20386, - "end": 20399, - "loc": { - "start": { - "line": 612, - "column": 28 - }, - "end": { - "line": 612, - "column": 41 - }, - "identifierName": "numPrimitives" - }, - "name": "numPrimitives" - } - }, - "update": { - "type": "UpdateExpression", - "start": 20401, - "end": 20404, - "loc": { - "start": { - "line": 612, - "column": 43 + "line": 599, + "column": 34 }, - "end": { - "line": 612, - "column": 46 - } + "identifierName": "attributes" }, - "operator": "++", - "prefix": false, - "argument": { - "type": "Identifier", - "start": 20401, - "end": 20402, - "loc": { - "start": { - "line": 612, - "column": 43 - }, - "end": { - "line": 612, - "column": 44 - }, - "identifierName": "i" - }, - "name": "i" - } + "name": "attributes" }, "body": { "type": "BlockStatement", - "start": 20406, - "end": 24562, + "start": 20066, + "end": 20120, "loc": { "start": { - "line": 612, - "column": 48 + "line": 599, + "column": 36 }, "end": { - "line": 698, + "line": 601, "column": 9 } }, "body": [ { - "type": "TryStatement", - "start": 20420, - "end": 24552, + "type": "ExpressionStatement", + "start": 20080, + "end": 20110, "loc": { "start": { - "line": 613, + "line": 600, "column": 12 }, "end": { - "line": 697, - "column": 13 + "line": 600, + "column": 42 } }, - "block": { - "type": "BlockStatement", - "start": 20424, - "end": 24494, + "expression": { + "type": "CallExpression", + "start": 20080, + "end": 20109, "loc": { "start": { - "line": 613, - "column": 16 + "line": 600, + "column": 12 }, "end": { - "line": 695, - "column": 13 + "line": 600, + "column": 41 } }, - "body": [ - { - "type": "VariableDeclaration", - "start": 20442, - "end": 20479, + "callee": { + "type": "MemberExpression", + "start": 20080, + "end": 20089, + "loc": { + "start": { + "line": 600, + "column": 12 + }, + "end": { + "line": 600, + "column": 21 + } + }, + "object": { + "type": "Identifier", + "start": 20080, + "end": 20084, "loc": { "start": { - "line": 614, + "line": 600, + "column": 12 + }, + "end": { + "line": 600, "column": 16 }, + "identifierName": "hash" + }, + "name": "hash" + }, + "property": { + "type": "Identifier", + "start": 20085, + "end": 20089, + "loc": { + "start": { + "line": 600, + "column": 17 + }, "end": { - "line": 614, - "column": 53 - } + "line": 600, + "column": 21 + }, + "identifierName": "push" }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 20448, - "end": 20478, - "loc": { - "start": { - "line": 614, - "column": 22 - }, - "end": { - "line": 614, - "column": 52 - } - }, - "id": { - "type": "Identifier", - "start": 20448, - "end": 20457, - "loc": { - "start": { - "line": 614, - "column": 22 - }, - "end": { - "line": 614, - "column": 31 - }, - "identifierName": "primitive" - }, - "name": "primitive" - }, - "init": { - "type": "MemberExpression", - "start": 20460, - "end": 20478, - "loc": { - "start": { - "line": 614, - "column": 34 - }, - "end": { - "line": 614, - "column": 52 - } - }, - "object": { - "type": "MemberExpression", - "start": 20460, - "end": 20475, - "loc": { - "start": { - "line": 614, - "column": 34 - }, - "end": { - "line": 614, - "column": 49 - } - }, - "object": { - "type": "Identifier", - "start": 20460, - "end": 20464, - "loc": { - "start": { - "line": 614, - "column": 34 - }, - "end": { - "line": 614, - "column": 38 - }, - "identifierName": "mesh" - }, - "name": "mesh" - }, - "property": { - "type": "Identifier", - "start": 20465, - "end": 20475, - "loc": { - "start": { - "line": 614, - "column": 39 - }, - "end": { - "line": 614, - "column": 49 - }, - "identifierName": "primitives" - }, - "name": "primitives" - }, - "computed": false - }, - "property": { - "type": "Identifier", - "start": 20476, - "end": 20477, - "loc": { - "start": { - "line": 614, - "column": 50 - }, - "end": { - "line": 614, - "column": 51 - }, - "identifierName": "i" - }, - "name": "i" - }, - "computed": true - } - } - ], - "kind": "const" + "name": "push" }, + "computed": false + }, + "arguments": [ { - "type": "IfStatement", - "start": 20496, - "end": 23552, + "type": "MemberExpression", + "start": 20090, + "end": 20108, "loc": { "start": { - "line": 615, - "column": 16 + "line": 600, + "column": 22 }, "end": { - "line": 675, - "column": 17 + "line": 600, + "column": 40 } }, - "test": { - "type": "UnaryExpression", - "start": 20500, - "end": 20525, + "object": { + "type": "MemberExpression", + "start": 20090, + "end": 20105, "loc": { "start": { - "line": 615, - "column": 20 + "line": 600, + "column": 22 }, "end": { - "line": 615, - "column": 45 + "line": 600, + "column": 37 } }, - "operator": "!", - "prefix": true, - "argument": { - "type": "MemberExpression", - "start": 20501, - "end": 20525, + "object": { + "type": "Identifier", + "start": 20090, + "end": 20100, "loc": { "start": { - "line": 615, - "column": 21 + "line": 600, + "column": 22 }, "end": { - "line": 615, - "column": 45 - } - }, - "object": { - "type": "Identifier", - "start": 20501, - "end": 20510, - "loc": { - "start": { - "line": 615, - "column": 21 - }, - "end": { - "line": 615, - "column": 30 - }, - "identifierName": "primitive" + "line": 600, + "column": 32 }, - "name": "primitive" + "identifierName": "attributes" }, - "property": { - "type": "Identifier", - "start": 20511, - "end": 20525, - "loc": { - "start": { - "line": 615, - "column": 31 - }, - "end": { - "line": 615, - "column": 45 - }, - "identifierName": "_xktGeometryId" + "name": "attributes" + }, + "property": { + "type": "Identifier", + "start": 20101, + "end": 20104, + "loc": { + "start": { + "line": 600, + "column": 33 }, - "name": "_xktGeometryId" + "end": { + "line": 600, + "column": 36 + }, + "identifierName": "key" }, - "computed": false + "name": "key" }, - "extra": { - "parenthesizedArgument": false - } + "computed": true }, - "consequent": { - "type": "BlockStatement", - "start": 20527, - "end": 23552, + "property": { + "type": "Identifier", + "start": 20106, + "end": 20108, "loc": { "start": { - "line": 615, - "column": 47 + "line": 600, + "column": 38 }, "end": { - "line": 675, - "column": 17 - } - }, - "body": [ - { - "type": "VariableDeclaration", - "start": 20549, - "end": 20598, - "loc": { - "start": { - "line": 616, - "column": 20 - }, - "end": { - "line": 616, - "column": 69 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 20555, - "end": 20597, - "loc": { - "start": { - "line": 616, - "column": 26 - }, - "end": { - "line": 616, - "column": 68 - } - }, - "id": { - "type": "Identifier", - "start": 20555, - "end": 20568, - "loc": { - "start": { - "line": 616, - "column": 26 - }, - "end": { - "line": 616, - "column": 39 - }, - "identifierName": "xktGeometryId" - }, - "name": "xktGeometryId" - }, - "init": { - "type": "BinaryExpression", - "start": 20571, - "end": 20597, - "loc": { - "start": { - "line": 616, - "column": 42 - }, - "end": { - "line": 616, - "column": 68 - } - }, - "left": { - "type": "StringLiteral", - "start": 20571, - "end": 20582, - "loc": { - "start": { - "line": 616, - "column": 42 - }, - "end": { - "line": 616, - "column": 53 - } - }, - "extra": { - "rawValue": "geometry-", - "raw": "\"geometry-\"" - }, - "value": "geometry-" - }, - "operator": "+", - "right": { - "type": "UpdateExpression", - "start": 20585, - "end": 20597, - "loc": { - "start": { - "line": 616, - "column": 56 - }, - "end": { - "line": 616, - "column": 68 - } - }, - "operator": "++", - "prefix": false, - "argument": { - "type": "MemberExpression", - "start": 20585, - "end": 20595, - "loc": { - "start": { - "line": 616, - "column": 56 - }, - "end": { - "line": 616, - "column": 66 - } - }, - "object": { - "type": "Identifier", - "start": 20585, - "end": 20588, - "loc": { - "start": { - "line": 616, - "column": 56 - }, - "end": { - "line": 616, - "column": 59 - }, - "identifierName": "ctx" - }, - "name": "ctx" - }, - "property": { - "type": "Identifier", - "start": 20589, - "end": 20595, - "loc": { - "start": { - "line": 616, - "column": 60 - }, - "end": { - "line": 616, - "column": 66 - }, - "identifierName": "nextId" - }, - "name": "nextId" - }, - "computed": false - } - } - } - } - ], - "kind": "const" - }, - { - "type": "VariableDeclaration", - "start": 20619, - "end": 20713, - "loc": { - "start": { - "line": 617, - "column": 20 - }, - "end": { - "line": 619, - "column": 22 - } - }, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 20625, - "end": 20712, - "loc": { - "start": { - "line": 617, - "column": 26 - }, - "end": { - "line": 619, - "column": 21 - } - }, - "id": { - "type": "Identifier", - "start": 20625, - "end": 20636, - "loc": { - "start": { - "line": 617, - "column": 26 - }, - "end": { - "line": 617, - "column": 37 - }, - "identifierName": "geometryCfg" - }, - "name": "geometryCfg" - }, - "init": { - "type": "ObjectExpression", - "start": 20639, - "end": 20712, - "loc": { - "start": { - "line": 617, - "column": 40 - }, - "end": { - "line": 619, - "column": 21 - } - }, - "properties": [ - { - "type": "ObjectProperty", - "start": 20665, - "end": 20690, - "loc": { - "start": { - "line": 618, - "column": 24 - }, - "end": { - "line": 618, - "column": 49 - } - }, - "method": false, - "shorthand": false, - "computed": false, - "key": { - "type": "Identifier", - "start": 20665, - "end": 20675, - "loc": { - "start": { - "line": 618, - "column": 24 - }, - "end": { - "line": 618, - "column": 34 - }, - "identifierName": "geometryId" - }, - "name": "geometryId" - }, - "value": { - "type": "Identifier", - "start": 20677, - "end": 20690, - "loc": { - "start": { - "line": 618, - "column": 36 - }, - "end": { - "line": 618, - "column": 49 - }, - "identifierName": "xktGeometryId" - }, - "name": "xktGeometryId" - } - } - ] - } - } - ], - "kind": "const" + "line": 600, + "column": 40 }, - { - "type": "SwitchStatement", - "start": 20734, - "end": 21930, - "loc": { - "start": { - "line": 620, - "column": 20 - }, - "end": { - "line": 644, - "column": 21 - } - }, - "discriminant": { - "type": "MemberExpression", - "start": 20742, - "end": 20756, - "loc": { - "start": { - "line": 620, - "column": 28 - }, - "end": { - "line": 620, - "column": 42 - } - }, - "object": { - "type": "Identifier", - "start": 20742, - "end": 20751, - "loc": { - "start": { - "line": 620, - "column": 28 - }, - "end": { - "line": 620, - "column": 37 - }, - "identifierName": "primitive" - }, - "name": "primitive" - }, - "property": { - "type": "Identifier", - "start": 20752, - "end": 20756, - "loc": { - "start": { - "line": 620, - "column": 38 - }, - "end": { - "line": 620, - "column": 42 - }, - "identifierName": "mode" - }, - "name": "mode" - }, - "computed": false - }, - "cases": [ - { - "type": "SwitchCase", - "start": 20784, - "end": 20902, - "loc": { - "start": { - "line": 621, - "column": 24 - }, - "end": { - "line": 623, - "column": 34 - } - }, - "consequent": [ - { - "type": "ExpressionStatement", - "start": 20830, - "end": 20867, - "loc": { - "start": { - "line": 622, - "column": 28 - }, - "end": { - "line": 622, - "column": 65 - } - }, - "expression": { - "type": "AssignmentExpression", - "start": 20830, - "end": 20866, - "loc": { - "start": { - "line": 622, - "column": 28 - }, - "end": { - "line": 622, - "column": 64 - } - }, - "operator": "=", - "left": { - "type": "MemberExpression", - "start": 20830, - "end": 20855, - "loc": { - "start": { - "line": 622, - "column": 28 - }, - "end": { - "line": 622, - "column": 53 - } - }, - "object": { - "type": "Identifier", - "start": 20830, - "end": 20841, - "loc": { - "start": { - "line": 622, - "column": 28 - }, - "end": { - "line": 622, - "column": 39 - }, - "identifierName": "geometryCfg" - }, - "name": "geometryCfg", - "leadingComments": null - }, - "property": { - "type": "Identifier", - "start": 20842, - "end": 20855, - "loc": { - "start": { - "line": 622, - "column": 40 - }, - "end": { - "line": 622, - "column": 53 - }, - "identifierName": "primitiveType" - }, - "name": "primitiveType" - }, - "computed": false, - "leadingComments": null - }, - "right": { - "type": "StringLiteral", - "start": 20858, - "end": 20866, - "loc": { - "start": { - "line": 622, - "column": 56 - }, - "end": { - "line": 622, - "column": 64 - } + "identifierName": "id" + }, + "name": "id" + }, + "computed": false + } + ] + } + } + ], + "directives": [] + } + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "ReturnStatement", + "start": 20131, + "end": 20153, + "loc": { + "start": { + "line": 603, + "column": 4 + }, + "end": { + "line": 603, + "column": 26 + } + }, + "argument": { + "type": "CallExpression", + "start": 20138, + "end": 20152, + "loc": { + "start": { + "line": 603, + "column": 11 + }, + "end": { + "line": 603, + "column": 25 + } + }, + "callee": { + "type": "MemberExpression", + "start": 20138, + "end": 20147, + "loc": { + "start": { + "line": 603, + "column": 11 + }, + "end": { + "line": 603, + "column": 20 + } + }, + "object": { + "type": "Identifier", + "start": 20138, + "end": 20142, + "loc": { + "start": { + "line": 603, + "column": 11 + }, + "end": { + "line": 603, + "column": 15 + }, + "identifierName": "hash" + }, + "name": "hash" + }, + "property": { + "type": "Identifier", + "start": 20143, + "end": 20147, + "loc": { + "start": { + "line": 603, + "column": 16 + }, + "end": { + "line": 603, + "column": 20 + }, + "identifierName": "join" + }, + "name": "join" + }, + "computed": false + }, + "arguments": [ + { + "type": "StringLiteral", + "start": 20148, + "end": 20151, + "loc": { + "start": { + "line": 603, + "column": 21 + }, + "end": { + "line": 603, + "column": 24 + } + }, + "extra": { + "rawValue": ".", + "raw": "\".\"" + }, + "value": "." + } + ] + } + } + ], + "directives": [], + "trailingComments": null + }, + "trailingComments": [ + { + "type": "CommentBlock", + "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", + "start": 20157, + "end": 20424, + "loc": { + "start": { + "line": 606, + "column": 0 + }, + "end": { + "line": 613, + "column": 3 + } + } + } + ] + }, + { + "type": "FunctionDeclaration", + "start": 20425, + "end": 24840, + "loc": { + "start": { + "line": 614, + "column": 0 + }, + "end": { + "line": 712, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 20434, + "end": 20447, + "loc": { + "start": { + "line": 614, + "column": 9 + }, + "end": { + "line": 614, + "column": 22 + }, + "identifierName": "parseNodeMesh" + }, + "name": "parseNodeMesh", + "leadingComments": null + }, + "generator": false, + "expression": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start": 20448, + "end": 20452, + "loc": { + "start": { + "line": 614, + "column": 23 + }, + "end": { + "line": 614, + "column": 27 + }, + "identifierName": "node" + }, + "name": "node" + }, + { + "type": "Identifier", + "start": 20454, + "end": 20457, + "loc": { + "start": { + "line": 614, + "column": 29 + }, + "end": { + "line": 614, + "column": 32 + }, + "identifierName": "ctx" + }, + "name": "ctx" + }, + { + "type": "Identifier", + "start": 20459, + "end": 20465, + "loc": { + "start": { + "line": 614, + "column": 34 + }, + "end": { + "line": 614, + "column": 40 + }, + "identifierName": "matrix" + }, + "name": "matrix" + }, + { + "type": "Identifier", + "start": 20467, + "end": 20474, + "loc": { + "start": { + "line": 614, + "column": 42 + }, + "end": { + "line": 614, + "column": 49 + }, + "identifierName": "meshIds" + }, + "name": "meshIds" + } + ], + "body": { + "type": "BlockStatement", + "start": 20476, + "end": 24840, + "loc": { + "start": { + "line": 614, + "column": 51 + }, + "end": { + "line": 712, + "column": 1 + } + }, + "body": [ + { + "type": "IfStatement", + "start": 20482, + "end": 20516, + "loc": { + "start": { + "line": 615, + "column": 4 + }, + "end": { + "line": 617, + "column": 5 + } + }, + "test": { + "type": "UnaryExpression", + "start": 20486, + "end": 20491, + "loc": { + "start": { + "line": 615, + "column": 8 + }, + "end": { + "line": 615, + "column": 13 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 20487, + "end": 20491, + "loc": { + "start": { + "line": 615, + "column": 9 + }, + "end": { + "line": 615, + "column": 13 + }, + "identifierName": "node" + }, + "name": "node" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 20493, + "end": 20516, + "loc": { + "start": { + "line": 615, + "column": 15 + }, + "end": { + "line": 617, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 20503, + "end": 20510, + "loc": { + "start": { + "line": 616, + "column": 8 + }, + "end": { + "line": 616, + "column": 15 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 20521, + "end": 20544, + "loc": { + "start": { + "line": 618, + "column": 4 + }, + "end": { + "line": 618, + "column": 27 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20527, + "end": 20543, + "loc": { + "start": { + "line": 618, + "column": 10 + }, + "end": { + "line": 618, + "column": 26 + } + }, + "id": { + "type": "Identifier", + "start": 20527, + "end": 20531, + "loc": { + "start": { + "line": 618, + "column": 10 + }, + "end": { + "line": 618, + "column": 14 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "init": { + "type": "MemberExpression", + "start": 20534, + "end": 20543, + "loc": { + "start": { + "line": 618, + "column": 17 + }, + "end": { + "line": 618, + "column": 26 + } + }, + "object": { + "type": "Identifier", + "start": 20534, + "end": 20538, + "loc": { + "start": { + "line": 618, + "column": 17 + }, + "end": { + "line": 618, + "column": 21 + }, + "identifierName": "node" + }, + "name": "node" + }, + "property": { + "type": "Identifier", + "start": 20539, + "end": 20543, + "loc": { + "start": { + "line": 618, + "column": 22 + }, + "end": { + "line": 618, + "column": 26 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 20549, + "end": 20583, + "loc": { + "start": { + "line": 619, + "column": 4 + }, + "end": { + "line": 621, + "column": 5 + } + }, + "test": { + "type": "UnaryExpression", + "start": 20553, + "end": 20558, + "loc": { + "start": { + "line": 619, + "column": 8 + }, + "end": { + "line": 619, + "column": 13 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "Identifier", + "start": 20554, + "end": 20558, + "loc": { + "start": { + "line": 619, + "column": 9 + }, + "end": { + "line": 619, + "column": 13 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 20560, + "end": 20583, + "loc": { + "start": { + "line": 619, + "column": 15 + }, + "end": { + "line": 621, + "column": 5 + } + }, + "body": [ + { + "type": "ReturnStatement", + "start": 20570, + "end": 20577, + "loc": { + "start": { + "line": 620, + "column": 8 + }, + "end": { + "line": 620, + "column": 15 + } + }, + "argument": null + } + ], + "directives": [] + }, + "alternate": null + }, + { + "type": "VariableDeclaration", + "start": 20588, + "end": 20633, + "loc": { + "start": { + "line": 622, + "column": 4 + }, + "end": { + "line": 622, + "column": 49 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20594, + "end": 20632, + "loc": { + "start": { + "line": 622, + "column": 10 + }, + "end": { + "line": 622, + "column": 48 + } + }, + "id": { + "type": "Identifier", + "start": 20594, + "end": 20607, + "loc": { + "start": { + "line": 622, + "column": 10 + }, + "end": { + "line": 622, + "column": 23 + }, + "identifierName": "numPrimitives" + }, + "name": "numPrimitives" + }, + "init": { + "type": "MemberExpression", + "start": 20610, + "end": 20632, + "loc": { + "start": { + "line": 622, + "column": 26 + }, + "end": { + "line": 622, + "column": 48 + } + }, + "object": { + "type": "MemberExpression", + "start": 20610, + "end": 20625, + "loc": { + "start": { + "line": 622, + "column": 26 + }, + "end": { + "line": 622, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 20610, + "end": 20614, + "loc": { + "start": { + "line": 622, + "column": 26 + }, + "end": { + "line": 622, + "column": 30 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 20615, + "end": 20625, + "loc": { + "start": { + "line": 622, + "column": 31 + }, + "end": { + "line": 622, + "column": 41 + }, + "identifierName": "primitives" + }, + "name": "primitives" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 20626, + "end": 20632, + "loc": { + "start": { + "line": 622, + "column": 42 + }, + "end": { + "line": 622, + "column": 48 + }, + "identifierName": "length" + }, + "name": "length" + }, + "computed": false + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 20638, + "end": 24838, + "loc": { + "start": { + "line": 623, + "column": 4 + }, + "end": { + "line": 711, + "column": 5 + } + }, + "test": { + "type": "BinaryExpression", + "start": 20642, + "end": 20659, + "loc": { + "start": { + "line": 623, + "column": 8 + }, + "end": { + "line": 623, + "column": 25 + } + }, + "left": { + "type": "Identifier", + "start": 20642, + "end": 20655, + "loc": { + "start": { + "line": 623, + "column": 8 + }, + "end": { + "line": 623, + "column": 21 + }, + "identifierName": "numPrimitives" + }, + "name": "numPrimitives" + }, + "operator": ">", + "right": { + "type": "NumericLiteral", + "start": 20658, + "end": 20659, + "loc": { + "start": { + "line": 623, + "column": 24 + }, + "end": { + "line": 623, + "column": 25 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + }, + "consequent": { + "type": "BlockStatement", + "start": 20661, + "end": 24838, + "loc": { + "start": { + "line": 623, + "column": 27 + }, + "end": { + "line": 711, + "column": 5 + } + }, + "body": [ + { + "type": "ForStatement", + "start": 20671, + "end": 24832, + "loc": { + "start": { + "line": 624, + "column": 8 + }, + "end": { + "line": 710, + "column": 9 + } + }, + "init": { + "type": "VariableDeclaration", + "start": 20676, + "end": 20685, + "loc": { + "start": { + "line": 624, + "column": 13 + }, + "end": { + "line": 624, + "column": 22 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20680, + "end": 20685, + "loc": { + "start": { + "line": 624, + "column": 17 + }, + "end": { + "line": 624, + "column": 22 + } + }, + "id": { + "type": "Identifier", + "start": 20680, + "end": 20681, + "loc": { + "start": { + "line": 624, + "column": 17 + }, + "end": { + "line": 624, + "column": 18 + }, + "identifierName": "i" + }, + "name": "i" + }, + "init": { + "type": "NumericLiteral", + "start": 20684, + "end": 20685, + "loc": { + "start": { + "line": 624, + "column": 21 + }, + "end": { + "line": 624, + "column": 22 + } + }, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + ], + "kind": "let" + }, + "test": { + "type": "BinaryExpression", + "start": 20687, + "end": 20704, + "loc": { + "start": { + "line": 624, + "column": 24 + }, + "end": { + "line": 624, + "column": 41 + } + }, + "left": { + "type": "Identifier", + "start": 20687, + "end": 20688, + "loc": { + "start": { + "line": 624, + "column": 24 + }, + "end": { + "line": 624, + "column": 25 + }, + "identifierName": "i" + }, + "name": "i" + }, + "operator": "<", + "right": { + "type": "Identifier", + "start": 20691, + "end": 20704, + "loc": { + "start": { + "line": 624, + "column": 28 + }, + "end": { + "line": 624, + "column": 41 + }, + "identifierName": "numPrimitives" + }, + "name": "numPrimitives" + } + }, + "update": { + "type": "UpdateExpression", + "start": 20706, + "end": 20709, + "loc": { + "start": { + "line": 624, + "column": 43 + }, + "end": { + "line": 624, + "column": 46 + } + }, + "operator": "++", + "prefix": false, + "argument": { + "type": "Identifier", + "start": 20706, + "end": 20707, + "loc": { + "start": { + "line": 624, + "column": 43 + }, + "end": { + "line": 624, + "column": 44 + }, + "identifierName": "i" + }, + "name": "i" + } + }, + "body": { + "type": "BlockStatement", + "start": 20711, + "end": 24832, + "loc": { + "start": { + "line": 624, + "column": 48 + }, + "end": { + "line": 710, + "column": 9 + } + }, + "body": [ + { + "type": "TryStatement", + "start": 20725, + "end": 24822, + "loc": { + "start": { + "line": 625, + "column": 12 + }, + "end": { + "line": 709, + "column": 13 + } + }, + "block": { + "type": "BlockStatement", + "start": 20729, + "end": 24764, + "loc": { + "start": { + "line": 625, + "column": 16 + }, + "end": { + "line": 707, + "column": 13 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 20747, + "end": 20784, + "loc": { + "start": { + "line": 626, + "column": 16 + }, + "end": { + "line": 626, + "column": 53 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20753, + "end": 20783, + "loc": { + "start": { + "line": 626, + "column": 22 + }, + "end": { + "line": 626, + "column": 52 + } + }, + "id": { + "type": "Identifier", + "start": 20753, + "end": 20762, + "loc": { + "start": { + "line": 626, + "column": 22 + }, + "end": { + "line": 626, + "column": 31 + }, + "identifierName": "primitive" + }, + "name": "primitive" + }, + "init": { + "type": "MemberExpression", + "start": 20765, + "end": 20783, + "loc": { + "start": { + "line": 626, + "column": 34 + }, + "end": { + "line": 626, + "column": 52 + } + }, + "object": { + "type": "MemberExpression", + "start": 20765, + "end": 20780, + "loc": { + "start": { + "line": 626, + "column": 34 + }, + "end": { + "line": 626, + "column": 49 + } + }, + "object": { + "type": "Identifier", + "start": 20765, + "end": 20769, + "loc": { + "start": { + "line": 626, + "column": 34 + }, + "end": { + "line": 626, + "column": 38 + }, + "identifierName": "mesh" + }, + "name": "mesh" + }, + "property": { + "type": "Identifier", + "start": 20770, + "end": 20780, + "loc": { + "start": { + "line": 626, + "column": 39 + }, + "end": { + "line": 626, + "column": 49 + }, + "identifierName": "primitives" + }, + "name": "primitives" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 20781, + "end": 20782, + "loc": { + "start": { + "line": 626, + "column": 50 + }, + "end": { + "line": 626, + "column": 51 + }, + "identifierName": "i" + }, + "name": "i" + }, + "computed": true + } + } + ], + "kind": "const" + }, + { + "type": "VariableDeclaration", + "start": 20801, + "end": 20851, + "loc": { + "start": { + "line": 627, + "column": 16 + }, + "end": { + "line": 627, + "column": 66 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20807, + "end": 20850, + "loc": { + "start": { + "line": 627, + "column": 22 + }, + "end": { + "line": 627, + "column": 65 + } + }, + "id": { + "type": "Identifier", + "start": 20807, + "end": 20817, + "loc": { + "start": { + "line": 627, + "column": 22 + }, + "end": { + "line": 627, + "column": 32 + }, + "identifierName": "geometryId" + }, + "name": "geometryId" + }, + "init": { + "type": "CallExpression", + "start": 20820, + "end": 20850, + "loc": { + "start": { + "line": 627, + "column": 35 + }, + "end": { + "line": 627, + "column": 65 + } + }, + "callee": { + "type": "Identifier", + "start": 20820, + "end": 20839, + "loc": { + "start": { + "line": 627, + "column": 35 + }, + "end": { + "line": 627, + "column": 54 + }, + "identifierName": "createPrimitiveHash" + }, + "name": "createPrimitiveHash" + }, + "arguments": [ + { + "type": "Identifier", + "start": 20840, + "end": 20849, + "loc": { + "start": { + "line": 627, + "column": 55 + }, + "end": { + "line": 627, + "column": 64 + }, + "identifierName": "primitive" + }, + "name": "primitive" + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "IfStatement", + "start": 20868, + "end": 23848, + "loc": { + "start": { + "line": 628, + "column": 16 + }, + "end": { + "line": 687, + "column": 17 + } + }, + "test": { + "type": "UnaryExpression", + "start": 20872, + "end": 20906, + "loc": { + "start": { + "line": 628, + "column": 20 + }, + "end": { + "line": 628, + "column": 54 + } + }, + "operator": "!", + "prefix": true, + "argument": { + "type": "MemberExpression", + "start": 20873, + "end": 20906, + "loc": { + "start": { + "line": 628, + "column": 21 + }, + "end": { + "line": 628, + "column": 54 + } + }, + "object": { + "type": "MemberExpression", + "start": 20873, + "end": 20894, + "loc": { + "start": { + "line": 628, + "column": 21 + }, + "end": { + "line": 628, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 20873, + "end": 20876, + "loc": { + "start": { + "line": 628, + "column": 21 + }, + "end": { + "line": 628, + "column": 24 + }, + "identifierName": "ctx" + }, + "name": "ctx" + }, + "property": { + "type": "Identifier", + "start": 20877, + "end": 20894, + "loc": { + "start": { + "line": 628, + "column": 25 + }, + "end": { + "line": 628, + "column": 42 + }, + "identifierName": "geometriesCreated" + }, + "name": "geometriesCreated" + }, + "computed": false + }, + "property": { + "type": "Identifier", + "start": 20895, + "end": 20905, + "loc": { + "start": { + "line": 628, + "column": 43 + }, + "end": { + "line": 628, + "column": 53 + }, + "identifierName": "geometryId" + }, + "name": "geometryId" + }, + "computed": true + }, + "extra": { + "parenthesizedArgument": false + } + }, + "consequent": { + "type": "BlockStatement", + "start": 20908, + "end": 23848, + "loc": { + "start": { + "line": 628, + "column": 56 + }, + "end": { + "line": 687, + "column": 17 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 20930, + "end": 21009, + "loc": { + "start": { + "line": 629, + "column": 20 + }, + "end": { + "line": 631, + "column": 22 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 20936, + "end": 21008, + "loc": { + "start": { + "line": 629, + "column": 26 + }, + "end": { + "line": 631, + "column": 21 + } + }, + "id": { + "type": "Identifier", + "start": 20936, + "end": 20947, + "loc": { + "start": { + "line": 629, + "column": 26 + }, + "end": { + "line": 629, + "column": 37 + }, + "identifierName": "geometryCfg" + }, + "name": "geometryCfg" + }, + "init": { + "type": "ObjectExpression", + "start": 20950, + "end": 21008, + "loc": { + "start": { + "line": 629, + "column": 40 + }, + "end": { + "line": 631, + "column": 21 + } + }, + "properties": [ + { + "type": "ObjectProperty", + "start": 20976, + "end": 20986, + "loc": { + "start": { + "line": 630, + "column": 24 + }, + "end": { + "line": 630, + "column": 34 + } + }, + "method": false, + "shorthand": true, + "computed": false, + "key": { + "type": "Identifier", + "start": 20976, + "end": 20986, + "loc": { + "start": { + "line": 630, + "column": 24 + }, + "end": { + "line": 630, + "column": 34 + }, + "identifierName": "geometryId" + }, + "name": "geometryId" + }, + "value": { + "type": "Identifier", + "start": 20976, + "end": 20986, + "loc": { + "start": { + "line": 630, + "column": 24 + }, + "end": { + "line": 630, + "column": 34 + }, + "identifierName": "geometryId" + }, + "name": "geometryId" + }, + "extra": { + "shorthand": true + } + } + ] + } + } + ], + "kind": "const" + }, + { + "type": "SwitchStatement", + "start": 21030, + "end": 22226, + "loc": { + "start": { + "line": 632, + "column": 20 + }, + "end": { + "line": 656, + "column": 21 + } + }, + "discriminant": { + "type": "MemberExpression", + "start": 21038, + "end": 21052, + "loc": { + "start": { + "line": 632, + "column": 28 + }, + "end": { + "line": 632, + "column": 42 + } + }, + "object": { + "type": "Identifier", + "start": 21038, + "end": 21047, + "loc": { + "start": { + "line": 632, + "column": 28 + }, + "end": { + "line": 632, + "column": 37 + }, + "identifierName": "primitive" + }, + "name": "primitive" + }, + "property": { + "type": "Identifier", + "start": 21048, + "end": 21052, + "loc": { + "start": { + "line": 632, + "column": 38 + }, + "end": { + "line": 632, + "column": 42 + }, + "identifierName": "mode" + }, + "name": "mode" + }, + "computed": false + }, + "cases": [ + { + "type": "SwitchCase", + "start": 21080, + "end": 21198, + "loc": { + "start": { + "line": 633, + "column": 24 + }, + "end": { + "line": 635, + "column": 34 + } + }, + "consequent": [ + { + "type": "ExpressionStatement", + "start": 21126, + "end": 21163, + "loc": { + "start": { + "line": 634, + "column": 28 + }, + "end": { + "line": 634, + "column": 65 + } + }, + "expression": { + "type": "AssignmentExpression", + "start": 21126, + "end": 21162, + "loc": { + "start": { + "line": 634, + "column": 28 + }, + "end": { + "line": 634, + "column": 64 + } + }, + "operator": "=", + "left": { + "type": "MemberExpression", + "start": 21126, + "end": 21151, + "loc": { + "start": { + "line": 634, + "column": 28 + }, + "end": { + "line": 634, + "column": 53 + } + }, + "object": { + "type": "Identifier", + "start": 21126, + "end": 21137, + "loc": { + "start": { + "line": 634, + "column": 28 + }, + "end": { + "line": 634, + "column": 39 + }, + "identifierName": "geometryCfg" + }, + "name": "geometryCfg", + "leadingComments": null + }, + "property": { + "type": "Identifier", + "start": 21138, + "end": 21151, + "loc": { + "start": { + "line": 634, + "column": 40 + }, + "end": { + "line": 634, + "column": 53 + }, + "identifierName": "primitiveType" + }, + "name": "primitiveType" + }, + "computed": false, + "leadingComments": null + }, + "right": { + "type": "StringLiteral", + "start": 21154, + "end": 21162, + "loc": { + "start": { + "line": 634, + "column": 56 + }, + "end": { + "line": 634, + "column": 64 + } }, "extra": { "rawValue": "points", @@ -38172,15 +38864,15 @@ { "type": "CommentLine", "value": " POINTS", - "start": 20792, - "end": 20801, + "start": 21088, + "end": 21097, "loc": { "start": { - "line": 621, + "line": 633, "column": 32 }, "end": { - "line": 621, + "line": 633, "column": 41 } } @@ -38189,15 +38881,15 @@ }, { "type": "BreakStatement", - "start": 20896, - "end": 20902, + "start": 21192, + "end": 21198, "loc": { "start": { - "line": 623, + "line": 635, "column": 28 }, "end": { - "line": 623, + "line": 635, "column": 34 } }, @@ -38206,15 +38898,15 @@ ], "test": { "type": "NumericLiteral", - "start": 20789, - "end": 20790, + "start": 21085, + "end": 21086, "loc": { "start": { - "line": 621, + "line": 633, "column": 29 }, "end": { - "line": 621, + "line": 633, "column": 30 } }, @@ -38227,73 +38919,73 @@ }, { "type": "SwitchCase", - "start": 20927, - "end": 21043, + "start": 21223, + "end": 21339, "loc": { "start": { - "line": 624, + "line": 636, "column": 24 }, "end": { - "line": 626, + "line": 638, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 20972, - "end": 21008, + "start": 21268, + "end": 21304, "loc": { "start": { - "line": 625, + "line": 637, "column": 28 }, "end": { - "line": 625, + "line": 637, "column": 64 } }, "expression": { "type": "AssignmentExpression", - "start": 20972, - "end": 21007, + "start": 21268, + "end": 21303, "loc": { "start": { - "line": 625, + "line": 637, "column": 28 }, "end": { - "line": 625, + "line": 637, "column": 63 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 20972, - "end": 20997, + "start": 21268, + "end": 21293, "loc": { "start": { - "line": 625, + "line": 637, "column": 28 }, "end": { - "line": 625, + "line": 637, "column": 53 } }, "object": { "type": "Identifier", - "start": 20972, - "end": 20983, + "start": 21268, + "end": 21279, "loc": { "start": { - "line": 625, + "line": 637, "column": 28 }, "end": { - "line": 625, + "line": 637, "column": 39 }, "identifierName": "geometryCfg" @@ -38303,15 +38995,15 @@ }, "property": { "type": "Identifier", - "start": 20984, - "end": 20997, + "start": 21280, + "end": 21293, "loc": { "start": { - "line": 625, + "line": 637, "column": 40 }, "end": { - "line": 625, + "line": 637, "column": 53 }, "identifierName": "primitiveType" @@ -38323,15 +39015,15 @@ }, "right": { "type": "StringLiteral", - "start": 21000, - "end": 21007, + "start": 21296, + "end": 21303, "loc": { "start": { - "line": 625, + "line": 637, "column": 56 }, "end": { - "line": 625, + "line": 637, "column": 63 } }, @@ -38347,15 +39039,15 @@ { "type": "CommentLine", "value": " LINES", - "start": 20935, - "end": 20943, + "start": 21231, + "end": 21239, "loc": { "start": { - "line": 624, + "line": 636, "column": 32 }, "end": { - "line": 624, + "line": 636, "column": 40 } } @@ -38364,15 +39056,15 @@ }, { "type": "BreakStatement", - "start": 21037, - "end": 21043, + "start": 21333, + "end": 21339, "loc": { "start": { - "line": 626, + "line": 638, "column": 28 }, "end": { - "line": 626, + "line": 638, "column": 34 } }, @@ -38381,15 +39073,15 @@ ], "test": { "type": "NumericLiteral", - "start": 20932, - "end": 20933, + "start": 21228, + "end": 21229, "loc": { "start": { - "line": 624, + "line": 636, "column": 29 }, "end": { - "line": 624, + "line": 636, "column": 30 } }, @@ -38402,73 +39094,73 @@ }, { "type": "SwitchCase", - "start": 21068, - "end": 21192, + "start": 21364, + "end": 21488, "loc": { "start": { - "line": 627, + "line": 639, "column": 24 }, "end": { - "line": 629, + "line": 641, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21117, - "end": 21157, + "start": 21413, + "end": 21453, "loc": { "start": { - "line": 628, + "line": 640, "column": 28 }, "end": { - "line": 628, + "line": 640, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 21117, - "end": 21156, + "start": 21413, + "end": 21452, "loc": { "start": { - "line": 628, + "line": 640, "column": 28 }, "end": { - "line": 628, + "line": 640, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21117, - "end": 21142, + "start": 21413, + "end": 21438, "loc": { "start": { - "line": 628, + "line": 640, "column": 28 }, "end": { - "line": 628, + "line": 640, "column": 53 } }, "object": { "type": "Identifier", - "start": 21117, - "end": 21128, + "start": 21413, + "end": 21424, "loc": { "start": { - "line": 628, + "line": 640, "column": 28 }, "end": { - "line": 628, + "line": 640, "column": 39 }, "identifierName": "geometryCfg" @@ -38478,15 +39170,15 @@ }, "property": { "type": "Identifier", - "start": 21129, - "end": 21142, + "start": 21425, + "end": 21438, "loc": { "start": { - "line": 628, + "line": 640, "column": 40 }, "end": { - "line": 628, + "line": 640, "column": 53 }, "identifierName": "primitiveType" @@ -38498,15 +39190,15 @@ }, "right": { "type": "StringLiteral", - "start": 21145, - "end": 21156, + "start": 21441, + "end": 21452, "loc": { "start": { - "line": 628, + "line": 640, "column": 56 }, "end": { - "line": 628, + "line": 640, "column": 67 } }, @@ -38522,15 +39214,15 @@ { "type": "CommentLine", "value": " LINE_LOOP", - "start": 21076, - "end": 21088, + "start": 21372, + "end": 21384, "loc": { "start": { - "line": 627, + "line": 639, "column": 32 }, "end": { - "line": 627, + "line": 639, "column": 44 } } @@ -38539,15 +39231,15 @@ }, { "type": "BreakStatement", - "start": 21186, - "end": 21192, + "start": 21482, + "end": 21488, "loc": { "start": { - "line": 629, + "line": 641, "column": 28 }, "end": { - "line": 629, + "line": 641, "column": 34 } }, @@ -38556,15 +39248,15 @@ ], "test": { "type": "NumericLiteral", - "start": 21073, - "end": 21074, + "start": 21369, + "end": 21370, "loc": { "start": { - "line": 627, + "line": 639, "column": 29 }, "end": { - "line": 627, + "line": 639, "column": 30 } }, @@ -38577,73 +39269,73 @@ }, { "type": "SwitchCase", - "start": 21217, - "end": 21343, + "start": 21513, + "end": 21639, "loc": { "start": { - "line": 630, + "line": 642, "column": 24 }, "end": { - "line": 632, + "line": 644, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21267, - "end": 21308, + "start": 21563, + "end": 21604, "loc": { "start": { - "line": 631, + "line": 643, "column": 28 }, "end": { - "line": 631, + "line": 643, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 21267, - "end": 21307, + "start": 21563, + "end": 21603, "loc": { "start": { - "line": 631, + "line": 643, "column": 28 }, "end": { - "line": 631, + "line": 643, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21267, - "end": 21292, + "start": 21563, + "end": 21588, "loc": { "start": { - "line": 631, + "line": 643, "column": 28 }, "end": { - "line": 631, + "line": 643, "column": 53 } }, "object": { "type": "Identifier", - "start": 21267, - "end": 21278, + "start": 21563, + "end": 21574, "loc": { "start": { - "line": 631, + "line": 643, "column": 28 }, "end": { - "line": 631, + "line": 643, "column": 39 }, "identifierName": "geometryCfg" @@ -38653,15 +39345,15 @@ }, "property": { "type": "Identifier", - "start": 21279, - "end": 21292, + "start": 21575, + "end": 21588, "loc": { "start": { - "line": 631, + "line": 643, "column": 40 }, "end": { - "line": 631, + "line": 643, "column": 53 }, "identifierName": "primitiveType" @@ -38673,15 +39365,15 @@ }, "right": { "type": "StringLiteral", - "start": 21295, - "end": 21307, + "start": 21591, + "end": 21603, "loc": { "start": { - "line": 631, + "line": 643, "column": 56 }, "end": { - "line": 631, + "line": 643, "column": 68 } }, @@ -38697,15 +39389,15 @@ { "type": "CommentLine", "value": " LINE_STRIP", - "start": 21225, - "end": 21238, + "start": 21521, + "end": 21534, "loc": { "start": { - "line": 630, + "line": 642, "column": 32 }, "end": { - "line": 630, + "line": 642, "column": 45 } } @@ -38714,15 +39406,15 @@ }, { "type": "BreakStatement", - "start": 21337, - "end": 21343, + "start": 21633, + "end": 21639, "loc": { "start": { - "line": 632, + "line": 644, "column": 28 }, "end": { - "line": 632, + "line": 644, "column": 34 } }, @@ -38731,15 +39423,15 @@ ], "test": { "type": "NumericLiteral", - "start": 21222, - "end": 21223, + "start": 21518, + "end": 21519, "loc": { "start": { - "line": 630, + "line": 642, "column": 29 }, "end": { - "line": 630, + "line": 642, "column": 30 } }, @@ -38752,73 +39444,73 @@ }, { "type": "SwitchCase", - "start": 21368, - "end": 21492, + "start": 21664, + "end": 21788, "loc": { "start": { - "line": 633, + "line": 645, "column": 24 }, "end": { - "line": 635, + "line": 647, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21417, - "end": 21457, + "start": 21713, + "end": 21753, "loc": { "start": { - "line": 634, + "line": 646, "column": 28 }, "end": { - "line": 634, + "line": 646, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 21417, - "end": 21456, + "start": 21713, + "end": 21752, "loc": { "start": { - "line": 634, + "line": 646, "column": 28 }, "end": { - "line": 634, + "line": 646, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21417, - "end": 21442, + "start": 21713, + "end": 21738, "loc": { "start": { - "line": 634, + "line": 646, "column": 28 }, "end": { - "line": 634, + "line": 646, "column": 53 } }, "object": { "type": "Identifier", - "start": 21417, - "end": 21428, + "start": 21713, + "end": 21724, "loc": { "start": { - "line": 634, + "line": 646, "column": 28 }, "end": { - "line": 634, + "line": 646, "column": 39 }, "identifierName": "geometryCfg" @@ -38828,15 +39520,15 @@ }, "property": { "type": "Identifier", - "start": 21429, - "end": 21442, + "start": 21725, + "end": 21738, "loc": { "start": { - "line": 634, + "line": 646, "column": 40 }, "end": { - "line": 634, + "line": 646, "column": 53 }, "identifierName": "primitiveType" @@ -38848,15 +39540,15 @@ }, "right": { "type": "StringLiteral", - "start": 21445, - "end": 21456, + "start": 21741, + "end": 21752, "loc": { "start": { - "line": 634, + "line": 646, "column": 56 }, "end": { - "line": 634, + "line": 646, "column": 67 } }, @@ -38872,15 +39564,15 @@ { "type": "CommentLine", "value": " TRIANGLES", - "start": 21376, - "end": 21388, + "start": 21672, + "end": 21684, "loc": { "start": { - "line": 633, + "line": 645, "column": 32 }, "end": { - "line": 633, + "line": 645, "column": 44 } } @@ -38889,15 +39581,15 @@ }, { "type": "BreakStatement", - "start": 21486, - "end": 21492, + "start": 21782, + "end": 21788, "loc": { "start": { - "line": 635, + "line": 647, "column": 28 }, "end": { - "line": 635, + "line": 647, "column": 34 } }, @@ -38906,15 +39598,15 @@ ], "test": { "type": "NumericLiteral", - "start": 21373, - "end": 21374, + "start": 21669, + "end": 21670, "loc": { "start": { - "line": 633, + "line": 645, "column": 29 }, "end": { - "line": 633, + "line": 645, "column": 30 } }, @@ -38927,73 +39619,73 @@ }, { "type": "SwitchCase", - "start": 21517, - "end": 21651, + "start": 21813, + "end": 21947, "loc": { "start": { - "line": 636, + "line": 648, "column": 24 }, "end": { - "line": 638, + "line": 650, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21571, - "end": 21616, + "start": 21867, + "end": 21912, "loc": { "start": { - "line": 637, + "line": 649, "column": 28 }, "end": { - "line": 637, + "line": 649, "column": 73 } }, "expression": { "type": "AssignmentExpression", - "start": 21571, - "end": 21615, + "start": 21867, + "end": 21911, "loc": { "start": { - "line": 637, + "line": 649, "column": 28 }, "end": { - "line": 637, + "line": 649, "column": 72 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21571, - "end": 21596, + "start": 21867, + "end": 21892, "loc": { "start": { - "line": 637, + "line": 649, "column": 28 }, "end": { - "line": 637, + "line": 649, "column": 53 } }, "object": { "type": "Identifier", - "start": 21571, - "end": 21582, + "start": 21867, + "end": 21878, "loc": { "start": { - "line": 637, + "line": 649, "column": 28 }, "end": { - "line": 637, + "line": 649, "column": 39 }, "identifierName": "geometryCfg" @@ -39003,15 +39695,15 @@ }, "property": { "type": "Identifier", - "start": 21583, - "end": 21596, + "start": 21879, + "end": 21892, "loc": { "start": { - "line": 637, + "line": 649, "column": 40 }, "end": { - "line": 637, + "line": 649, "column": 53 }, "identifierName": "primitiveType" @@ -39023,15 +39715,15 @@ }, "right": { "type": "StringLiteral", - "start": 21599, - "end": 21615, + "start": 21895, + "end": 21911, "loc": { "start": { - "line": 637, + "line": 649, "column": 56 }, "end": { - "line": 637, + "line": 649, "column": 72 } }, @@ -39047,15 +39739,15 @@ { "type": "CommentLine", "value": " TRIANGLE_STRIP", - "start": 21525, - "end": 21542, + "start": 21821, + "end": 21838, "loc": { "start": { - "line": 636, + "line": 648, "column": 32 }, "end": { - "line": 636, + "line": 648, "column": 49 } } @@ -39064,15 +39756,15 @@ }, { "type": "BreakStatement", - "start": 21645, - "end": 21651, + "start": 21941, + "end": 21947, "loc": { "start": { - "line": 638, + "line": 650, "column": 28 }, "end": { - "line": 638, + "line": 650, "column": 34 } }, @@ -39081,15 +39773,15 @@ ], "test": { "type": "NumericLiteral", - "start": 21522, - "end": 21523, + "start": 21818, + "end": 21819, "loc": { "start": { - "line": 636, + "line": 648, "column": 29 }, "end": { - "line": 636, + "line": 648, "column": 30 } }, @@ -39102,73 +39794,73 @@ }, { "type": "SwitchCase", - "start": 21676, - "end": 21806, + "start": 21972, + "end": 22102, "loc": { "start": { - "line": 639, + "line": 651, "column": 24 }, "end": { - "line": 641, + "line": 653, "column": 34 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21728, - "end": 21771, + "start": 22024, + "end": 22067, "loc": { "start": { - "line": 640, + "line": 652, "column": 28 }, "end": { - "line": 640, + "line": 652, "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 21728, - "end": 21770, + "start": 22024, + "end": 22066, "loc": { "start": { - "line": 640, + "line": 652, "column": 28 }, "end": { - "line": 640, + "line": 652, "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21728, - "end": 21753, + "start": 22024, + "end": 22049, "loc": { "start": { - "line": 640, + "line": 652, "column": 28 }, "end": { - "line": 640, + "line": 652, "column": 53 } }, "object": { "type": "Identifier", - "start": 21728, - "end": 21739, + "start": 22024, + "end": 22035, "loc": { "start": { - "line": 640, + "line": 652, "column": 28 }, "end": { - "line": 640, + "line": 652, "column": 39 }, "identifierName": "geometryCfg" @@ -39178,15 +39870,15 @@ }, "property": { "type": "Identifier", - "start": 21740, - "end": 21753, + "start": 22036, + "end": 22049, "loc": { "start": { - "line": 640, + "line": 652, "column": 40 }, "end": { - "line": 640, + "line": 652, "column": 53 }, "identifierName": "primitiveType" @@ -39198,15 +39890,15 @@ }, "right": { "type": "StringLiteral", - "start": 21756, - "end": 21770, + "start": 22052, + "end": 22066, "loc": { "start": { - "line": 640, + "line": 652, "column": 56 }, "end": { - "line": 640, + "line": 652, "column": 70 } }, @@ -39222,15 +39914,15 @@ { "type": "CommentLine", "value": " TRIANGLE_FAN", - "start": 21684, - "end": 21699, + "start": 21980, + "end": 21995, "loc": { "start": { - "line": 639, + "line": 651, "column": 32 }, "end": { - "line": 639, + "line": 651, "column": 47 } } @@ -39239,15 +39931,15 @@ }, { "type": "BreakStatement", - "start": 21800, - "end": 21806, + "start": 22096, + "end": 22102, "loc": { "start": { - "line": 641, + "line": 653, "column": 28 }, "end": { - "line": 641, + "line": 653, "column": 34 } }, @@ -39256,15 +39948,15 @@ ], "test": { "type": "NumericLiteral", - "start": 21681, - "end": 21682, + "start": 21977, + "end": 21978, "loc": { "start": { - "line": 639, + "line": 651, "column": 29 }, "end": { - "line": 639, + "line": 651, "column": 30 } }, @@ -39277,73 +39969,73 @@ }, { "type": "SwitchCase", - "start": 21831, - "end": 21908, + "start": 22127, + "end": 22204, "loc": { "start": { - "line": 642, + "line": 654, "column": 24 }, "end": { - "line": 643, + "line": 655, "column": 68 } }, "consequent": [ { "type": "ExpressionStatement", - "start": 21868, - "end": 21908, + "start": 22164, + "end": 22204, "loc": { "start": { - "line": 643, + "line": 655, "column": 28 }, "end": { - "line": 643, + "line": 655, "column": 68 } }, "expression": { "type": "AssignmentExpression", - "start": 21868, - "end": 21907, + "start": 22164, + "end": 22203, "loc": { "start": { - "line": 643, + "line": 655, "column": 28 }, "end": { - "line": 643, + "line": 655, "column": 67 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 21868, - "end": 21893, + "start": 22164, + "end": 22189, "loc": { "start": { - "line": 643, + "line": 655, "column": 28 }, "end": { - "line": 643, + "line": 655, "column": 53 } }, "object": { "type": "Identifier", - "start": 21868, - "end": 21879, + "start": 22164, + "end": 22175, "loc": { "start": { - "line": 643, + "line": 655, "column": 28 }, "end": { - "line": 643, + "line": 655, "column": 39 }, "identifierName": "geometryCfg" @@ -39352,15 +40044,15 @@ }, "property": { "type": "Identifier", - "start": 21880, - "end": 21893, + "start": 22176, + "end": 22189, "loc": { "start": { - "line": 643, + "line": 655, "column": 40 }, "end": { - "line": 643, + "line": 655, "column": 53 }, "identifierName": "primitiveType" @@ -39371,15 +40063,15 @@ }, "right": { "type": "StringLiteral", - "start": 21896, - "end": 21907, + "start": 22192, + "end": 22203, "loc": { "start": { - "line": 643, + "line": 655, "column": 56 }, "end": { - "line": 643, + "line": 655, "column": 67 } }, @@ -39398,44 +40090,44 @@ }, { "type": "VariableDeclaration", - "start": 21951, - "end": 21998, + "start": 22247, + "end": 22294, "loc": { "start": { - "line": 645, + "line": 657, "column": 20 }, "end": { - "line": 645, + "line": 657, "column": 67 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 21957, - "end": 21997, + "start": 22253, + "end": 22293, "loc": { "start": { - "line": 645, + "line": 657, "column": 26 }, "end": { - "line": 645, + "line": 657, "column": 66 } }, "id": { "type": "Identifier", - "start": 21957, - "end": 21965, + "start": 22253, + "end": 22261, "loc": { "start": { - "line": 645, + "line": 657, "column": 26 }, "end": { - "line": 645, + "line": 657, "column": 34 }, "identifierName": "POSITION" @@ -39444,43 +40136,43 @@ }, "init": { "type": "MemberExpression", - "start": 21968, - "end": 21997, + "start": 22264, + "end": 22293, "loc": { "start": { - "line": 645, + "line": 657, "column": 37 }, "end": { - "line": 645, + "line": 657, "column": 66 } }, "object": { "type": "MemberExpression", - "start": 21968, - "end": 21988, + "start": 22264, + "end": 22284, "loc": { "start": { - "line": 645, + "line": 657, "column": 37 }, "end": { - "line": 645, + "line": 657, "column": 57 } }, "object": { "type": "Identifier", - "start": 21968, - "end": 21977, + "start": 22264, + "end": 22273, "loc": { "start": { - "line": 645, + "line": 657, "column": 37 }, "end": { - "line": 645, + "line": 657, "column": 46 }, "identifierName": "primitive" @@ -39489,15 +40181,15 @@ }, "property": { "type": "Identifier", - "start": 21978, - "end": 21988, + "start": 22274, + "end": 22284, "loc": { "start": { - "line": 645, + "line": 657, "column": 47 }, "end": { - "line": 645, + "line": 657, "column": 57 }, "identifierName": "attributes" @@ -39508,15 +40200,15 @@ }, "property": { "type": "Identifier", - "start": 21989, - "end": 21997, + "start": 22285, + "end": 22293, "loc": { "start": { - "line": 645, + "line": 657, "column": 58 }, "end": { - "line": 645, + "line": 657, "column": 66 }, "identifierName": "POSITION" @@ -39531,29 +40223,29 @@ }, { "type": "IfStatement", - "start": 22019, - "end": 22091, + "start": 22315, + "end": 22387, "loc": { "start": { - "line": 646, + "line": 658, "column": 20 }, "end": { - "line": 648, + "line": 660, "column": 21 } }, "test": { "type": "UnaryExpression", - "start": 22023, - "end": 22032, + "start": 22319, + "end": 22328, "loc": { "start": { - "line": 646, + "line": 658, "column": 24 }, "end": { - "line": 646, + "line": 658, "column": 33 } }, @@ -39561,15 +40253,15 @@ "prefix": true, "argument": { "type": "Identifier", - "start": 22024, - "end": 22032, + "start": 22320, + "end": 22328, "loc": { "start": { - "line": 646, + "line": 658, "column": 25 }, "end": { - "line": 646, + "line": 658, "column": 33 }, "identifierName": "POSITION" @@ -39582,30 +40274,30 @@ }, "consequent": { "type": "BlockStatement", - "start": 22034, - "end": 22091, + "start": 22330, + "end": 22387, "loc": { "start": { - "line": 646, + "line": 658, "column": 35 }, "end": { - "line": 648, + "line": 660, "column": 21 } }, "body": [ { "type": "ContinueStatement", - "start": 22060, - "end": 22069, + "start": 22356, + "end": 22365, "loc": { "start": { - "line": 647, + "line": 659, "column": 24 }, "end": { - "line": 647, + "line": 659, "column": 33 } }, @@ -39618,58 +40310,58 @@ }, { "type": "ExpressionStatement", - "start": 22112, - "end": 22172, + "start": 22408, + "end": 22468, "loc": { "start": { - "line": 649, + "line": 661, "column": 20 }, "end": { - "line": 649, + "line": 661, "column": 80 } }, "expression": { "type": "AssignmentExpression", - "start": 22112, - "end": 22171, + "start": 22408, + "end": 22467, "loc": { "start": { - "line": 649, + "line": 661, "column": 20 }, "end": { - "line": 649, + "line": 661, "column": 79 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22112, - "end": 22133, + "start": 22408, + "end": 22429, "loc": { "start": { - "line": 649, + "line": 661, "column": 20 }, "end": { - "line": 649, + "line": 661, "column": 41 } }, "object": { "type": "Identifier", - "start": 22112, - "end": 22123, + "start": 22408, + "end": 22419, "loc": { "start": { - "line": 649, + "line": 661, "column": 20 }, "end": { - "line": 649, + "line": 661, "column": 31 }, "identifierName": "geometryCfg" @@ -39678,15 +40370,15 @@ }, "property": { "type": "Identifier", - "start": 22124, - "end": 22133, + "start": 22420, + "end": 22429, "loc": { "start": { - "line": 649, + "line": 661, "column": 32 }, "end": { - "line": 649, + "line": 661, "column": 41 }, "identifierName": "positions" @@ -39697,57 +40389,57 @@ }, "right": { "type": "MemberExpression", - "start": 22136, - "end": 22171, + "start": 22432, + "end": 22467, "loc": { "start": { - "line": 649, + "line": 661, "column": 44 }, "end": { - "line": 649, + "line": 661, "column": 79 } }, "object": { "type": "MemberExpression", - "start": 22136, - "end": 22165, + "start": 22432, + "end": 22461, "loc": { "start": { - "line": 649, + "line": 661, "column": 44 }, "end": { - "line": 649, + "line": 661, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 22136, - "end": 22156, + "start": 22432, + "end": 22452, "loc": { "start": { - "line": 649, + "line": 661, "column": 44 }, "end": { - "line": 649, + "line": 661, "column": 64 } }, "object": { "type": "Identifier", - "start": 22136, - "end": 22145, + "start": 22432, + "end": 22441, "loc": { "start": { - "line": 649, + "line": 661, "column": 44 }, "end": { - "line": 649, + "line": 661, "column": 53 }, "identifierName": "primitive" @@ -39756,15 +40448,15 @@ }, "property": { "type": "Identifier", - "start": 22146, - "end": 22156, + "start": 22442, + "end": 22452, "loc": { "start": { - "line": 649, + "line": 661, "column": 54 }, "end": { - "line": 649, + "line": 661, "column": 64 }, "identifierName": "attributes" @@ -39775,15 +40467,15 @@ }, "property": { "type": "Identifier", - "start": 22157, - "end": 22165, + "start": 22453, + "end": 22461, "loc": { "start": { - "line": 649, + "line": 661, "column": 65 }, "end": { - "line": 649, + "line": 661, "column": 73 }, "identifierName": "POSITION" @@ -39794,15 +40486,15 @@ }, "property": { "type": "Identifier", - "start": 22166, - "end": 22171, + "start": 22462, + "end": 22467, "loc": { "start": { - "line": 649, + "line": 661, "column": 74 }, "end": { - "line": 649, + "line": 661, "column": 79 }, "identifierName": "value" @@ -39815,72 +40507,72 @@ }, { "type": "ExpressionStatement", - "start": 22193, - "end": 22251, + "start": 22489, + "end": 22547, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 78 } }, "expression": { "type": "AssignmentExpression", - "start": 22193, - "end": 22250, + "start": 22489, + "end": 22546, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 77 } }, "operator": "+=", "left": { "type": "MemberExpression", - "start": 22193, - "end": 22214, + "start": 22489, + "end": 22510, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 41 } }, "object": { "type": "MemberExpression", - "start": 22193, - "end": 22202, + "start": 22489, + "end": 22498, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 29 } }, "object": { "type": "Identifier", - "start": 22193, - "end": 22196, + "start": 22489, + "end": 22492, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 23 }, "identifierName": "ctx" @@ -39889,15 +40581,15 @@ }, "property": { "type": "Identifier", - "start": 22197, - "end": 22202, + "start": 22493, + "end": 22498, "loc": { "start": { - "line": 650, + "line": 662, "column": 24 }, "end": { - "line": 650, + "line": 662, "column": 29 }, "identifierName": "stats" @@ -39908,15 +40600,15 @@ }, "property": { "type": "Identifier", - "start": 22203, - "end": 22214, + "start": 22499, + "end": 22510, "loc": { "start": { - "line": 650, + "line": 662, "column": 30 }, "end": { - "line": 650, + "line": 662, "column": 41 }, "identifierName": "numVertices" @@ -39927,57 +40619,57 @@ }, "right": { "type": "BinaryExpression", - "start": 22218, - "end": 22250, + "start": 22514, + "end": 22546, "loc": { "start": { - "line": 650, + "line": 662, "column": 45 }, "end": { - "line": 650, + "line": 662, "column": 77 } }, "left": { "type": "MemberExpression", - "start": 22218, - "end": 22246, + "start": 22514, + "end": 22542, "loc": { "start": { - "line": 650, + "line": 662, "column": 45 }, "end": { - "line": 650, + "line": 662, "column": 73 } }, "object": { "type": "MemberExpression", - "start": 22218, - "end": 22239, + "start": 22514, + "end": 22535, "loc": { "start": { - "line": 650, + "line": 662, "column": 45 }, "end": { - "line": 650, + "line": 662, "column": 66 } }, "object": { "type": "Identifier", - "start": 22218, - "end": 22229, + "start": 22514, + "end": 22525, "loc": { "start": { - "line": 650, + "line": 662, "column": 45 }, "end": { - "line": 650, + "line": 662, "column": 56 }, "identifierName": "geometryCfg" @@ -39986,15 +40678,15 @@ }, "property": { "type": "Identifier", - "start": 22230, - "end": 22239, + "start": 22526, + "end": 22535, "loc": { "start": { - "line": 650, + "line": 662, "column": 57 }, "end": { - "line": 650, + "line": 662, "column": 66 }, "identifierName": "positions" @@ -40005,15 +40697,15 @@ }, "property": { "type": "Identifier", - "start": 22240, - "end": 22246, + "start": 22536, + "end": 22542, "loc": { "start": { - "line": 650, + "line": 662, "column": 67 }, "end": { - "line": 650, + "line": 662, "column": 73 }, "identifierName": "length" @@ -40025,15 +40717,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 22249, - "end": 22250, + "start": 22545, + "end": 22546, "loc": { "start": { - "line": 650, + "line": 662, "column": 76 }, "end": { - "line": 650, + "line": 662, "column": 77 } }, @@ -40048,43 +40740,43 @@ }, { "type": "IfStatement", - "start": 22272, - "end": 22573, + "start": 22568, + "end": 22869, "loc": { "start": { - "line": 651, + "line": 663, "column": 20 }, "end": { - "line": 656, + "line": 668, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 22276, - "end": 22294, + "start": 22572, + "end": 22590, "loc": { "start": { - "line": 651, + "line": 663, "column": 24 }, "end": { - "line": 651, + "line": 663, "column": 42 } }, "object": { "type": "Identifier", - "start": 22276, - "end": 22279, + "start": 22572, + "end": 22575, "loc": { "start": { - "line": 651, + "line": 663, "column": 24 }, "end": { - "line": 651, + "line": 663, "column": 27 }, "identifierName": "ctx" @@ -40093,15 +40785,15 @@ }, "property": { "type": "Identifier", - "start": 22280, - "end": 22294, + "start": 22576, + "end": 22590, "loc": { "start": { - "line": 651, + "line": 663, "column": 28 }, "end": { - "line": 651, + "line": 663, "column": 42 }, "identifierName": "includeNormals" @@ -40112,72 +40804,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 22296, - "end": 22573, + "start": 22592, + "end": 22869, "loc": { "start": { - "line": 651, + "line": 663, "column": 44 }, "end": { - "line": 656, + "line": 668, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 22322, - "end": 22551, + "start": 22618, + "end": 22847, "loc": { "start": { - "line": 652, + "line": 664, "column": 24 }, "end": { - "line": 655, + "line": 667, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 22326, - "end": 22353, + "start": 22622, + "end": 22649, "loc": { "start": { - "line": 652, + "line": 664, "column": 28 }, "end": { - "line": 652, + "line": 664, "column": 55 } }, "object": { "type": "MemberExpression", - "start": 22326, - "end": 22346, + "start": 22622, + "end": 22642, "loc": { "start": { - "line": 652, + "line": 664, "column": 28 }, "end": { - "line": 652, + "line": 664, "column": 48 } }, "object": { "type": "Identifier", - "start": 22326, - "end": 22335, + "start": 22622, + "end": 22631, "loc": { "start": { - "line": 652, + "line": 664, "column": 28 }, "end": { - "line": 652, + "line": 664, "column": 37 }, "identifierName": "primitive" @@ -40186,15 +40878,15 @@ }, "property": { "type": "Identifier", - "start": 22336, - "end": 22346, + "start": 22632, + "end": 22642, "loc": { "start": { - "line": 652, + "line": 664, "column": 38 }, "end": { - "line": 652, + "line": 664, "column": 48 }, "identifierName": "attributes" @@ -40205,15 +40897,15 @@ }, "property": { "type": "Identifier", - "start": 22347, - "end": 22353, + "start": 22643, + "end": 22649, "loc": { "start": { - "line": 652, + "line": 664, "column": 49 }, "end": { - "line": 652, + "line": 664, "column": 55 }, "identifierName": "NORMAL" @@ -40224,73 +40916,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 22355, - "end": 22551, + "start": 22651, + "end": 22847, "loc": { "start": { - "line": 652, + "line": 664, "column": 57 }, "end": { - "line": 655, + "line": 667, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 22385, - "end": 22441, + "start": 22681, + "end": 22737, "loc": { "start": { - "line": 653, + "line": 665, "column": 28 }, "end": { - "line": 653, + "line": 665, "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 22385, - "end": 22440, + "start": 22681, + "end": 22736, "loc": { "start": { - "line": 653, + "line": 665, "column": 28 }, "end": { - "line": 653, + "line": 665, "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22385, - "end": 22404, + "start": 22681, + "end": 22700, "loc": { "start": { - "line": 653, + "line": 665, "column": 28 }, "end": { - "line": 653, + "line": 665, "column": 47 } }, "object": { "type": "Identifier", - "start": 22385, - "end": 22396, + "start": 22681, + "end": 22692, "loc": { "start": { - "line": 653, + "line": 665, "column": 28 }, "end": { - "line": 653, + "line": 665, "column": 39 }, "identifierName": "geometryCfg" @@ -40299,15 +40991,15 @@ }, "property": { "type": "Identifier", - "start": 22397, - "end": 22404, + "start": 22693, + "end": 22700, "loc": { "start": { - "line": 653, + "line": 665, "column": 40 }, "end": { - "line": 653, + "line": 665, "column": 47 }, "identifierName": "normals" @@ -40318,57 +41010,57 @@ }, "right": { "type": "MemberExpression", - "start": 22407, - "end": 22440, + "start": 22703, + "end": 22736, "loc": { "start": { - "line": 653, + "line": 665, "column": 50 }, "end": { - "line": 653, + "line": 665, "column": 83 } }, "object": { "type": "MemberExpression", - "start": 22407, - "end": 22434, + "start": 22703, + "end": 22730, "loc": { "start": { - "line": 653, + "line": 665, "column": 50 }, "end": { - "line": 653, + "line": 665, "column": 77 } }, "object": { "type": "MemberExpression", - "start": 22407, - "end": 22427, + "start": 22703, + "end": 22723, "loc": { "start": { - "line": 653, + "line": 665, "column": 50 }, "end": { - "line": 653, + "line": 665, "column": 70 } }, "object": { "type": "Identifier", - "start": 22407, - "end": 22416, + "start": 22703, + "end": 22712, "loc": { "start": { - "line": 653, + "line": 665, "column": 50 }, "end": { - "line": 653, + "line": 665, "column": 59 }, "identifierName": "primitive" @@ -40377,15 +41069,15 @@ }, "property": { "type": "Identifier", - "start": 22417, - "end": 22427, + "start": 22713, + "end": 22723, "loc": { "start": { - "line": 653, + "line": 665, "column": 60 }, "end": { - "line": 653, + "line": 665, "column": 70 }, "identifierName": "attributes" @@ -40396,15 +41088,15 @@ }, "property": { "type": "Identifier", - "start": 22428, - "end": 22434, + "start": 22724, + "end": 22730, "loc": { "start": { - "line": 653, + "line": 665, "column": 71 }, "end": { - "line": 653, + "line": 665, "column": 77 }, "identifierName": "NORMAL" @@ -40415,15 +41107,15 @@ }, "property": { "type": "Identifier", - "start": 22435, - "end": 22440, + "start": 22731, + "end": 22736, "loc": { "start": { - "line": 653, + "line": 665, "column": 78 }, "end": { - "line": 653, + "line": 665, "column": 83 }, "identifierName": "value" @@ -40436,72 +41128,72 @@ }, { "type": "ExpressionStatement", - "start": 22470, - "end": 22525, + "start": 22766, + "end": 22821, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 83 } }, "expression": { "type": "AssignmentExpression", - "start": 22470, - "end": 22524, + "start": 22766, + "end": 22820, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 82 } }, "operator": "+=", "left": { "type": "MemberExpression", - "start": 22470, - "end": 22490, + "start": 22766, + "end": 22786, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 48 } }, "object": { "type": "MemberExpression", - "start": 22470, - "end": 22479, + "start": 22766, + "end": 22775, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 37 } }, "object": { "type": "Identifier", - "start": 22470, - "end": 22473, + "start": 22766, + "end": 22769, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 31 }, "identifierName": "ctx" @@ -40510,15 +41202,15 @@ }, "property": { "type": "Identifier", - "start": 22474, - "end": 22479, + "start": 22770, + "end": 22775, "loc": { "start": { - "line": 654, + "line": 666, "column": 32 }, "end": { - "line": 654, + "line": 666, "column": 37 }, "identifierName": "stats" @@ -40529,15 +41221,15 @@ }, "property": { "type": "Identifier", - "start": 22480, - "end": 22490, + "start": 22776, + "end": 22786, "loc": { "start": { - "line": 654, + "line": 666, "column": 38 }, "end": { - "line": 654, + "line": 666, "column": 48 }, "identifierName": "numNormals" @@ -40548,57 +41240,57 @@ }, "right": { "type": "BinaryExpression", - "start": 22494, - "end": 22524, + "start": 22790, + "end": 22820, "loc": { "start": { - "line": 654, + "line": 666, "column": 52 }, "end": { - "line": 654, + "line": 666, "column": 82 } }, "left": { "type": "MemberExpression", - "start": 22494, - "end": 22520, + "start": 22790, + "end": 22816, "loc": { "start": { - "line": 654, + "line": 666, "column": 52 }, "end": { - "line": 654, + "line": 666, "column": 78 } }, "object": { "type": "MemberExpression", - "start": 22494, - "end": 22513, + "start": 22790, + "end": 22809, "loc": { "start": { - "line": 654, + "line": 666, "column": 52 }, "end": { - "line": 654, + "line": 666, "column": 71 } }, "object": { "type": "Identifier", - "start": 22494, - "end": 22505, + "start": 22790, + "end": 22801, "loc": { "start": { - "line": 654, + "line": 666, "column": 52 }, "end": { - "line": 654, + "line": 666, "column": 63 }, "identifierName": "geometryCfg" @@ -40607,15 +41299,15 @@ }, "property": { "type": "Identifier", - "start": 22506, - "end": 22513, + "start": 22802, + "end": 22809, "loc": { "start": { - "line": 654, + "line": 666, "column": 64 }, "end": { - "line": 654, + "line": 666, "column": 71 }, "identifierName": "normals" @@ -40626,15 +41318,15 @@ }, "property": { "type": "Identifier", - "start": 22514, - "end": 22520, + "start": 22810, + "end": 22816, "loc": { "start": { - "line": 654, + "line": 666, "column": 72 }, "end": { - "line": 654, + "line": 666, "column": 78 }, "identifierName": "length" @@ -40646,15 +41338,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 22523, - "end": 22524, + "start": 22819, + "end": 22820, "loc": { "start": { - "line": 654, + "line": 666, "column": 81 }, "end": { - "line": 654, + "line": 666, "column": 82 } }, @@ -40679,57 +41371,57 @@ }, { "type": "IfStatement", - "start": 22594, - "end": 22742, + "start": 22890, + "end": 23038, "loc": { "start": { - "line": 657, + "line": 669, "column": 20 }, "end": { - "line": 659, + "line": 671, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 22598, - "end": 22626, + "start": 22894, + "end": 22922, "loc": { "start": { - "line": 657, + "line": 669, "column": 24 }, "end": { - "line": 657, + "line": 669, "column": 52 } }, "object": { "type": "MemberExpression", - "start": 22598, - "end": 22618, + "start": 22894, + "end": 22914, "loc": { "start": { - "line": 657, + "line": 669, "column": 24 }, "end": { - "line": 657, + "line": 669, "column": 44 } }, "object": { "type": "Identifier", - "start": 22598, - "end": 22607, + "start": 22894, + "end": 22903, "loc": { "start": { - "line": 657, + "line": 669, "column": 24 }, "end": { - "line": 657, + "line": 669, "column": 33 }, "identifierName": "primitive" @@ -40738,15 +41430,15 @@ }, "property": { "type": "Identifier", - "start": 22608, - "end": 22618, + "start": 22904, + "end": 22914, "loc": { "start": { - "line": 657, + "line": 669, "column": 34 }, "end": { - "line": 657, + "line": 669, "column": 44 }, "identifierName": "attributes" @@ -40757,15 +41449,15 @@ }, "property": { "type": "Identifier", - "start": 22619, - "end": 22626, + "start": 22915, + "end": 22922, "loc": { "start": { - "line": 657, + "line": 669, "column": 45 }, "end": { - "line": 657, + "line": 669, "column": 52 }, "identifierName": "COLOR_0" @@ -40776,73 +41468,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 22628, - "end": 22742, + "start": 22924, + "end": 23038, "loc": { "start": { - "line": 657, + "line": 669, "column": 54 }, "end": { - "line": 659, + "line": 671, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 22654, - "end": 22720, + "start": 22950, + "end": 23016, "loc": { "start": { - "line": 658, + "line": 670, "column": 24 }, "end": { - "line": 658, + "line": 670, "column": 90 } }, "expression": { "type": "AssignmentExpression", - "start": 22654, - "end": 22719, + "start": 22950, + "end": 23015, "loc": { "start": { - "line": 658, + "line": 670, "column": 24 }, "end": { - "line": 658, + "line": 670, "column": 89 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22654, - "end": 22682, + "start": 22950, + "end": 22978, "loc": { "start": { - "line": 658, + "line": 670, "column": 24 }, "end": { - "line": 658, + "line": 670, "column": 52 } }, "object": { "type": "Identifier", - "start": 22654, - "end": 22665, + "start": 22950, + "end": 22961, "loc": { "start": { - "line": 658, + "line": 670, "column": 24 }, "end": { - "line": 658, + "line": 670, "column": 35 }, "identifierName": "geometryCfg" @@ -40851,15 +41543,15 @@ }, "property": { "type": "Identifier", - "start": 22666, - "end": 22682, + "start": 22962, + "end": 22978, "loc": { "start": { - "line": 658, + "line": 670, "column": 36 }, "end": { - "line": 658, + "line": 670, "column": 52 }, "identifierName": "colorsCompressed" @@ -40870,57 +41562,57 @@ }, "right": { "type": "MemberExpression", - "start": 22685, - "end": 22719, + "start": 22981, + "end": 23015, "loc": { "start": { - "line": 658, + "line": 670, "column": 55 }, "end": { - "line": 658, + "line": 670, "column": 89 } }, "object": { "type": "MemberExpression", - "start": 22685, - "end": 22713, + "start": 22981, + "end": 23009, "loc": { "start": { - "line": 658, + "line": 670, "column": 55 }, "end": { - "line": 658, + "line": 670, "column": 83 } }, "object": { "type": "MemberExpression", - "start": 22685, - "end": 22705, + "start": 22981, + "end": 23001, "loc": { "start": { - "line": 658, + "line": 670, "column": 55 }, "end": { - "line": 658, + "line": 670, "column": 75 } }, "object": { "type": "Identifier", - "start": 22685, - "end": 22694, + "start": 22981, + "end": 22990, "loc": { "start": { - "line": 658, + "line": 670, "column": 55 }, "end": { - "line": 658, + "line": 670, "column": 64 }, "identifierName": "primitive" @@ -40929,15 +41621,15 @@ }, "property": { "type": "Identifier", - "start": 22695, - "end": 22705, + "start": 22991, + "end": 23001, "loc": { "start": { - "line": 658, + "line": 670, "column": 65 }, "end": { - "line": 658, + "line": 670, "column": 75 }, "identifierName": "attributes" @@ -40948,15 +41640,15 @@ }, "property": { "type": "Identifier", - "start": 22706, - "end": 22713, + "start": 23002, + "end": 23009, "loc": { "start": { - "line": 658, + "line": 670, "column": 76 }, "end": { - "line": 658, + "line": 670, "column": 83 }, "identifierName": "COLOR_0" @@ -40967,15 +41659,15 @@ }, "property": { "type": "Identifier", - "start": 22714, - "end": 22719, + "start": 23010, + "end": 23015, "loc": { "start": { - "line": 658, + "line": 670, "column": 84 }, "end": { - "line": 658, + "line": 670, "column": 89 }, "identifierName": "value" @@ -40993,43 +41685,43 @@ }, { "type": "IfStatement", - "start": 22763, - "end": 23061, + "start": 23059, + "end": 23357, "loc": { "start": { - "line": 660, + "line": 672, "column": 20 }, "end": { - "line": 665, + "line": 677, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 22767, - "end": 22786, + "start": 23063, + "end": 23082, "loc": { "start": { - "line": 660, + "line": 672, "column": 24 }, "end": { - "line": 660, + "line": 672, "column": 43 } }, "object": { "type": "Identifier", - "start": 22767, - "end": 22770, + "start": 23063, + "end": 23066, "loc": { "start": { - "line": 660, + "line": 672, "column": 24 }, "end": { - "line": 660, + "line": 672, "column": 27 }, "identifierName": "ctx" @@ -41038,15 +41730,15 @@ }, "property": { "type": "Identifier", - "start": 22771, - "end": 22786, + "start": 23067, + "end": 23082, "loc": { "start": { - "line": 660, + "line": 672, "column": 28 }, "end": { - "line": 660, + "line": 672, "column": 43 }, "identifierName": "includeTextures" @@ -41057,72 +41749,72 @@ }, "consequent": { "type": "BlockStatement", - "start": 22788, - "end": 23061, + "start": 23084, + "end": 23357, "loc": { "start": { - "line": 660, + "line": 672, "column": 45 }, "end": { - "line": 665, + "line": 677, "column": 21 } }, "body": [ { "type": "IfStatement", - "start": 22814, - "end": 23039, + "start": 23110, + "end": 23335, "loc": { "start": { - "line": 661, + "line": 673, "column": 24 }, "end": { - "line": 664, + "line": 676, "column": 25 } }, "test": { "type": "MemberExpression", - "start": 22818, - "end": 22849, + "start": 23114, + "end": 23145, "loc": { "start": { - "line": 661, + "line": 673, "column": 28 }, "end": { - "line": 661, + "line": 673, "column": 59 } }, "object": { "type": "MemberExpression", - "start": 22818, - "end": 22838, + "start": 23114, + "end": 23134, "loc": { "start": { - "line": 661, + "line": 673, "column": 28 }, "end": { - "line": 661, + "line": 673, "column": 48 } }, "object": { "type": "Identifier", - "start": 22818, - "end": 22827, + "start": 23114, + "end": 23123, "loc": { "start": { - "line": 661, + "line": 673, "column": 28 }, "end": { - "line": 661, + "line": 673, "column": 37 }, "identifierName": "primitive" @@ -41131,15 +41823,15 @@ }, "property": { "type": "Identifier", - "start": 22828, - "end": 22838, + "start": 23124, + "end": 23134, "loc": { "start": { - "line": 661, + "line": 673, "column": 38 }, "end": { - "line": 661, + "line": 673, "column": 48 }, "identifierName": "attributes" @@ -41150,15 +41842,15 @@ }, "property": { "type": "Identifier", - "start": 22839, - "end": 22849, + "start": 23135, + "end": 23145, "loc": { "start": { - "line": 661, + "line": 673, "column": 49 }, "end": { - "line": 661, + "line": 673, "column": 59 }, "identifierName": "TEXCOORD_0" @@ -41169,73 +41861,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 22851, - "end": 23039, + "start": 23147, + "end": 23335, "loc": { "start": { - "line": 661, + "line": 673, "column": 61 }, "end": { - "line": 664, + "line": 676, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 22881, - "end": 22937, + "start": 23177, + "end": 23233, "loc": { "start": { - "line": 662, + "line": 674, "column": 28 }, "end": { - "line": 662, + "line": 674, "column": 84 } }, "expression": { "type": "AssignmentExpression", - "start": 22881, - "end": 22936, + "start": 23177, + "end": 23232, "loc": { "start": { - "line": 662, + "line": 674, "column": 28 }, "end": { - "line": 662, + "line": 674, "column": 83 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 22881, - "end": 22896, + "start": 23177, + "end": 23192, "loc": { "start": { - "line": 662, + "line": 674, "column": 28 }, "end": { - "line": 662, + "line": 674, "column": 43 } }, "object": { "type": "Identifier", - "start": 22881, - "end": 22892, + "start": 23177, + "end": 23188, "loc": { "start": { - "line": 662, + "line": 674, "column": 28 }, "end": { - "line": 662, + "line": 674, "column": 39 }, "identifierName": "geometryCfg" @@ -41244,15 +41936,15 @@ }, "property": { "type": "Identifier", - "start": 22893, - "end": 22896, + "start": 23189, + "end": 23192, "loc": { "start": { - "line": 662, + "line": 674, "column": 40 }, "end": { - "line": 662, + "line": 674, "column": 43 }, "identifierName": "uvs" @@ -41263,57 +41955,57 @@ }, "right": { "type": "MemberExpression", - "start": 22899, - "end": 22936, + "start": 23195, + "end": 23232, "loc": { "start": { - "line": 662, + "line": 674, "column": 46 }, "end": { - "line": 662, + "line": 674, "column": 83 } }, "object": { "type": "MemberExpression", - "start": 22899, - "end": 22930, + "start": 23195, + "end": 23226, "loc": { "start": { - "line": 662, + "line": 674, "column": 46 }, "end": { - "line": 662, + "line": 674, "column": 77 } }, "object": { "type": "MemberExpression", - "start": 22899, - "end": 22919, + "start": 23195, + "end": 23215, "loc": { "start": { - "line": 662, + "line": 674, "column": 46 }, "end": { - "line": 662, + "line": 674, "column": 66 } }, "object": { "type": "Identifier", - "start": 22899, - "end": 22908, + "start": 23195, + "end": 23204, "loc": { "start": { - "line": 662, + "line": 674, "column": 46 }, "end": { - "line": 662, + "line": 674, "column": 55 }, "identifierName": "primitive" @@ -41322,15 +42014,15 @@ }, "property": { "type": "Identifier", - "start": 22909, - "end": 22919, + "start": 23205, + "end": 23215, "loc": { "start": { - "line": 662, + "line": 674, "column": 56 }, "end": { - "line": 662, + "line": 674, "column": 66 }, "identifierName": "attributes" @@ -41341,15 +42033,15 @@ }, "property": { "type": "Identifier", - "start": 22920, - "end": 22930, + "start": 23216, + "end": 23226, "loc": { "start": { - "line": 662, + "line": 674, "column": 67 }, "end": { - "line": 662, + "line": 674, "column": 77 }, "identifierName": "TEXCOORD_0" @@ -41360,15 +42052,15 @@ }, "property": { "type": "Identifier", - "start": 22931, - "end": 22936, + "start": 23227, + "end": 23232, "loc": { "start": { - "line": 662, + "line": 674, "column": 78 }, "end": { - "line": 662, + "line": 674, "column": 83 }, "identifierName": "value" @@ -41381,72 +42073,72 @@ }, { "type": "ExpressionStatement", - "start": 22966, - "end": 23013, + "start": 23262, + "end": 23309, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 75 } }, "expression": { "type": "AssignmentExpression", - "start": 22966, - "end": 23012, + "start": 23262, + "end": 23308, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 74 } }, "operator": "+=", "left": { "type": "MemberExpression", - "start": 22966, - "end": 22982, + "start": 23262, + "end": 23278, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 44 } }, "object": { "type": "MemberExpression", - "start": 22966, - "end": 22975, + "start": 23262, + "end": 23271, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 37 } }, "object": { "type": "Identifier", - "start": 22966, - "end": 22969, + "start": 23262, + "end": 23265, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 31 }, "identifierName": "ctx" @@ -41455,15 +42147,15 @@ }, "property": { "type": "Identifier", - "start": 22970, - "end": 22975, + "start": 23266, + "end": 23271, "loc": { "start": { - "line": 663, + "line": 675, "column": 32 }, "end": { - "line": 663, + "line": 675, "column": 37 }, "identifierName": "stats" @@ -41474,15 +42166,15 @@ }, "property": { "type": "Identifier", - "start": 22976, - "end": 22982, + "start": 23272, + "end": 23278, "loc": { "start": { - "line": 663, + "line": 675, "column": 38 }, "end": { - "line": 663, + "line": 675, "column": 44 }, "identifierName": "numUVs" @@ -41493,57 +42185,57 @@ }, "right": { "type": "BinaryExpression", - "start": 22986, - "end": 23012, + "start": 23282, + "end": 23308, "loc": { "start": { - "line": 663, + "line": 675, "column": 48 }, "end": { - "line": 663, + "line": 675, "column": 74 } }, "left": { "type": "MemberExpression", - "start": 22986, - "end": 23008, + "start": 23282, + "end": 23304, "loc": { "start": { - "line": 663, + "line": 675, "column": 48 }, "end": { - "line": 663, + "line": 675, "column": 70 } }, "object": { "type": "MemberExpression", - "start": 22986, - "end": 23001, + "start": 23282, + "end": 23297, "loc": { "start": { - "line": 663, + "line": 675, "column": 48 }, "end": { - "line": 663, + "line": 675, "column": 63 } }, "object": { "type": "Identifier", - "start": 22986, - "end": 22997, + "start": 23282, + "end": 23293, "loc": { "start": { - "line": 663, + "line": 675, "column": 48 }, "end": { - "line": 663, + "line": 675, "column": 59 }, "identifierName": "geometryCfg" @@ -41552,15 +42244,15 @@ }, "property": { "type": "Identifier", - "start": 22998, - "end": 23001, + "start": 23294, + "end": 23297, "loc": { "start": { - "line": 663, + "line": 675, "column": 60 }, "end": { - "line": 663, + "line": 675, "column": 63 }, "identifierName": "uvs" @@ -41571,15 +42263,15 @@ }, "property": { "type": "Identifier", - "start": 23002, - "end": 23008, + "start": 23298, + "end": 23304, "loc": { "start": { - "line": 663, + "line": 675, "column": 64 }, "end": { - "line": 663, + "line": 675, "column": 70 }, "identifierName": "length" @@ -41591,15 +42283,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 23011, - "end": 23012, + "start": 23307, + "end": 23308, "loc": { "start": { - "line": 663, + "line": 675, "column": 73 }, "end": { - "line": 663, + "line": 675, "column": 74 } }, @@ -41624,43 +42316,43 @@ }, { "type": "IfStatement", - "start": 23082, - "end": 23363, + "start": 23378, + "end": 23659, "loc": { "start": { - "line": 666, + "line": 678, "column": 20 }, "end": { - "line": 671, + "line": 683, "column": 21 } }, "test": { "type": "MemberExpression", - "start": 23086, - "end": 23103, + "start": 23382, + "end": 23399, "loc": { "start": { - "line": 666, + "line": 678, "column": 24 }, "end": { - "line": 666, + "line": 678, "column": 41 } }, "object": { "type": "Identifier", - "start": 23086, - "end": 23095, + "start": 23382, + "end": 23391, "loc": { "start": { - "line": 666, + "line": 678, "column": 24 }, "end": { - "line": 666, + "line": 678, "column": 33 }, "identifierName": "primitive" @@ -41669,15 +42361,15 @@ }, "property": { "type": "Identifier", - "start": 23096, - "end": 23103, + "start": 23392, + "end": 23399, "loc": { "start": { - "line": 666, + "line": 678, "column": 34 }, "end": { - "line": 666, + "line": 678, "column": 41 }, "identifierName": "indices" @@ -41688,73 +42380,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 23105, - "end": 23363, + "start": 23401, + "end": 23659, "loc": { "start": { - "line": 666, + "line": 678, "column": 43 }, "end": { - "line": 671, + "line": 683, "column": 21 } }, "body": [ { "type": "ExpressionStatement", - "start": 23131, - "end": 23177, + "start": 23427, + "end": 23473, "loc": { "start": { - "line": 667, + "line": 679, "column": 24 }, "end": { - "line": 667, + "line": 679, "column": 70 } }, "expression": { "type": "AssignmentExpression", - "start": 23131, - "end": 23176, + "start": 23427, + "end": 23472, "loc": { "start": { - "line": 667, + "line": 679, "column": 24 }, "end": { - "line": 667, + "line": 679, "column": 69 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23131, - "end": 23150, + "start": 23427, + "end": 23446, "loc": { "start": { - "line": 667, + "line": 679, "column": 24 }, "end": { - "line": 667, + "line": 679, "column": 43 } }, "object": { "type": "Identifier", - "start": 23131, - "end": 23142, + "start": 23427, + "end": 23438, "loc": { "start": { - "line": 667, + "line": 679, "column": 24 }, "end": { - "line": 667, + "line": 679, "column": 35 }, "identifierName": "geometryCfg" @@ -41763,15 +42455,15 @@ }, "property": { "type": "Identifier", - "start": 23143, - "end": 23150, + "start": 23439, + "end": 23446, "loc": { "start": { - "line": 667, + "line": 679, "column": 36 }, "end": { - "line": 667, + "line": 679, "column": 43 }, "identifierName": "indices" @@ -41782,43 +42474,43 @@ }, "right": { "type": "MemberExpression", - "start": 23153, - "end": 23176, + "start": 23449, + "end": 23472, "loc": { "start": { - "line": 667, + "line": 679, "column": 46 }, "end": { - "line": 667, + "line": 679, "column": 69 } }, "object": { "type": "MemberExpression", - "start": 23153, - "end": 23170, + "start": 23449, + "end": 23466, "loc": { "start": { - "line": 667, + "line": 679, "column": 46 }, "end": { - "line": 667, + "line": 679, "column": 63 } }, "object": { "type": "Identifier", - "start": 23153, - "end": 23162, + "start": 23449, + "end": 23458, "loc": { "start": { - "line": 667, + "line": 679, "column": 46 }, "end": { - "line": 667, + "line": 679, "column": 55 }, "identifierName": "primitive" @@ -41827,15 +42519,15 @@ }, "property": { "type": "Identifier", - "start": 23163, - "end": 23170, + "start": 23459, + "end": 23466, "loc": { "start": { - "line": 667, + "line": 679, "column": 56 }, "end": { - "line": 667, + "line": 679, "column": 63 }, "identifierName": "indices" @@ -41846,15 +42538,15 @@ }, "property": { "type": "Identifier", - "start": 23171, - "end": 23176, + "start": 23467, + "end": 23472, "loc": { "start": { - "line": 667, + "line": 679, "column": 64 }, "end": { - "line": 667, + "line": 679, "column": 69 }, "identifierName": "value" @@ -41867,57 +42559,57 @@ }, { "type": "IfStatement", - "start": 23202, - "end": 23341, + "start": 23498, + "end": 23637, "loc": { "start": { - "line": 668, + "line": 680, "column": 24 }, "end": { - "line": 670, + "line": 682, "column": 25 } }, "test": { "type": "BinaryExpression", - "start": 23206, - "end": 23226, + "start": 23502, + "end": 23522, "loc": { "start": { - "line": 668, + "line": 680, "column": 28 }, "end": { - "line": 668, + "line": 680, "column": 48 } }, "left": { "type": "MemberExpression", - "start": 23206, - "end": 23220, + "start": 23502, + "end": 23516, "loc": { "start": { - "line": 668, + "line": 680, "column": 28 }, "end": { - "line": 668, + "line": 680, "column": 42 } }, "object": { "type": "Identifier", - "start": 23206, - "end": 23215, + "start": 23502, + "end": 23511, "loc": { "start": { - "line": 668, + "line": 680, "column": 28 }, "end": { - "line": 668, + "line": 680, "column": 37 }, "identifierName": "primitive" @@ -41926,15 +42618,15 @@ }, "property": { "type": "Identifier", - "start": 23216, - "end": 23220, + "start": 23512, + "end": 23516, "loc": { "start": { - "line": 668, + "line": 680, "column": 38 }, "end": { - "line": 668, + "line": 680, "column": 42 }, "identifierName": "mode" @@ -41946,15 +42638,15 @@ "operator": "===", "right": { "type": "NumericLiteral", - "start": 23225, - "end": 23226, + "start": 23521, + "end": 23522, "loc": { "start": { - "line": 668, + "line": 680, "column": 47 }, "end": { - "line": 668, + "line": 680, "column": 48 } }, @@ -41967,87 +42659,87 @@ }, "consequent": { "type": "BlockStatement", - "start": 23228, - "end": 23341, + "start": 23524, + "end": 23637, "loc": { "start": { - "line": 668, + "line": 680, "column": 50 }, "end": { - "line": 670, + "line": 682, "column": 25 } }, "body": [ { "type": "ExpressionStatement", - "start": 23258, - "end": 23315, + "start": 23554, + "end": 23611, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 85 } }, "expression": { "type": "AssignmentExpression", - "start": 23258, - "end": 23314, + "start": 23554, + "end": 23610, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 84 } }, "operator": "+=", "left": { "type": "MemberExpression", - "start": 23258, - "end": 23280, + "start": 23554, + "end": 23576, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 50 } }, "object": { "type": "MemberExpression", - "start": 23258, - "end": 23267, + "start": 23554, + "end": 23563, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 37 } }, "object": { "type": "Identifier", - "start": 23258, - "end": 23261, + "start": 23554, + "end": 23557, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 31 }, "identifierName": "ctx" @@ -42056,15 +42748,15 @@ }, "property": { "type": "Identifier", - "start": 23262, - "end": 23267, + "start": 23558, + "end": 23563, "loc": { "start": { - "line": 669, + "line": 681, "column": 32 }, "end": { - "line": 669, + "line": 681, "column": 37 }, "identifierName": "stats" @@ -42075,15 +42767,15 @@ }, "property": { "type": "Identifier", - "start": 23268, - "end": 23280, + "start": 23564, + "end": 23576, "loc": { "start": { - "line": 669, + "line": 681, "column": 38 }, "end": { - "line": 669, + "line": 681, "column": 50 }, "identifierName": "numTriangles" @@ -42094,57 +42786,57 @@ }, "right": { "type": "BinaryExpression", - "start": 23284, - "end": 23314, + "start": 23580, + "end": 23610, "loc": { "start": { - "line": 669, + "line": 681, "column": 54 }, "end": { - "line": 669, + "line": 681, "column": 84 } }, "left": { "type": "MemberExpression", - "start": 23284, - "end": 23310, + "start": 23580, + "end": 23606, "loc": { "start": { - "line": 669, + "line": 681, "column": 54 }, "end": { - "line": 669, + "line": 681, "column": 80 } }, "object": { "type": "MemberExpression", - "start": 23284, - "end": 23303, + "start": 23580, + "end": 23599, "loc": { "start": { - "line": 669, + "line": 681, "column": 54 }, "end": { - "line": 669, + "line": 681, "column": 73 } }, "object": { "type": "Identifier", - "start": 23284, - "end": 23295, + "start": 23580, + "end": 23591, "loc": { "start": { - "line": 669, + "line": 681, "column": 54 }, "end": { - "line": 669, + "line": 681, "column": 65 }, "identifierName": "geometryCfg" @@ -42153,15 +42845,15 @@ }, "property": { "type": "Identifier", - "start": 23296, - "end": 23303, + "start": 23592, + "end": 23599, "loc": { "start": { - "line": 669, + "line": 681, "column": 66 }, "end": { - "line": 669, + "line": 681, "column": 73 }, "identifierName": "indices" @@ -42172,15 +42864,15 @@ }, "property": { "type": "Identifier", - "start": 23304, - "end": 23310, + "start": 23600, + "end": 23606, "loc": { "start": { - "line": 669, + "line": 681, "column": 74 }, "end": { - "line": 669, + "line": 681, "column": 80 }, "identifierName": "length" @@ -42192,15 +42884,15 @@ "operator": "/", "right": { "type": "NumericLiteral", - "start": 23313, - "end": 23314, + "start": 23609, + "end": 23610, "loc": { "start": { - "line": 669, + "line": 681, "column": 83 }, "end": { - "line": 669, + "line": 681, "column": 84 } }, @@ -42225,71 +42917,71 @@ }, { "type": "ExpressionStatement", - "start": 23384, - "end": 23425, + "start": 23680, + "end": 23721, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 61 } }, "expression": { "type": "CallExpression", - "start": 23384, - "end": 23424, + "start": 23680, + "end": 23720, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 60 } }, "callee": { "type": "MemberExpression", - "start": 23384, - "end": 23411, + "start": 23680, + "end": 23707, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 47 } }, "object": { "type": "MemberExpression", - "start": 23384, - "end": 23396, + "start": 23680, + "end": 23692, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 32 } }, "object": { "type": "Identifier", - "start": 23384, - "end": 23387, + "start": 23680, + "end": 23683, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 23 }, "identifierName": "ctx" @@ -42298,15 +42990,15 @@ }, "property": { "type": "Identifier", - "start": 23388, - "end": 23396, + "start": 23684, + "end": 23692, "loc": { "start": { - "line": 672, + "line": 684, "column": 24 }, "end": { - "line": 672, + "line": 684, "column": 32 }, "identifierName": "xktModel" @@ -42317,15 +43009,15 @@ }, "property": { "type": "Identifier", - "start": 23397, - "end": 23411, + "start": 23693, + "end": 23707, "loc": { "start": { - "line": 672, + "line": 684, "column": 33 }, "end": { - "line": 672, + "line": 684, "column": 47 }, "identifierName": "createGeometry" @@ -42337,15 +43029,15 @@ "arguments": [ { "type": "Identifier", - "start": 23412, - "end": 23423, + "start": 23708, + "end": 23719, "loc": { "start": { - "line": 672, + "line": 684, "column": 48 }, "end": { - "line": 672, + "line": 684, "column": 59 }, "identifierName": "geometryCfg" @@ -42357,127 +43049,159 @@ }, { "type": "ExpressionStatement", - "start": 23446, - "end": 23487, + "start": 23742, + "end": 23783, "loc": { "start": { - "line": 673, + "line": 685, "column": 20 }, "end": { - "line": 673, + "line": 685, "column": 61 } }, "expression": { "type": "AssignmentExpression", - "start": 23446, - "end": 23486, + "start": 23742, + "end": 23782, "loc": { "start": { - "line": 673, + "line": 685, "column": 20 }, "end": { - "line": 673, + "line": 685, "column": 60 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23446, - "end": 23470, + "start": 23742, + "end": 23775, "loc": { "start": { - "line": 673, + "line": 685, "column": 20 }, "end": { - "line": 673, - "column": 44 + "line": 685, + "column": 53 } }, "object": { - "type": "Identifier", - "start": 23446, - "end": 23455, + "type": "MemberExpression", + "start": 23742, + "end": 23763, "loc": { "start": { - "line": 673, + "line": 685, "column": 20 }, "end": { - "line": 673, - "column": 29 + "line": 685, + "column": 41 + } + }, + "object": { + "type": "Identifier", + "start": 23742, + "end": 23745, + "loc": { + "start": { + "line": 685, + "column": 20 + }, + "end": { + "line": 685, + "column": 23 + }, + "identifierName": "ctx" }, - "identifierName": "primitive" + "name": "ctx" }, - "name": "primitive" + "property": { + "type": "Identifier", + "start": 23746, + "end": 23763, + "loc": { + "start": { + "line": 685, + "column": 24 + }, + "end": { + "line": 685, + "column": 41 + }, + "identifierName": "geometriesCreated" + }, + "name": "geometriesCreated" + }, + "computed": false }, "property": { "type": "Identifier", - "start": 23456, - "end": 23470, + "start": 23764, + "end": 23774, "loc": { "start": { - "line": 673, - "column": 30 + "line": 685, + "column": 42 }, "end": { - "line": 673, - "column": 44 + "line": 685, + "column": 52 }, - "identifierName": "_xktGeometryId" + "identifierName": "geometryId" }, - "name": "_xktGeometryId" + "name": "geometryId" }, - "computed": false + "computed": true }, "right": { - "type": "Identifier", - "start": 23473, - "end": 23486, + "type": "BooleanLiteral", + "start": 23778, + "end": 23782, "loc": { "start": { - "line": 673, - "column": 47 + "line": 685, + "column": 56 }, "end": { - "line": 673, + "line": 685, "column": 60 - }, - "identifierName": "xktGeometryId" + } }, - "name": "xktGeometryId" + "value": true } } }, { "type": "ExpressionStatement", - "start": 23508, - "end": 23534, + "start": 23804, + "end": 23830, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 46 } }, "expression": { "type": "UpdateExpression", - "start": 23508, - "end": 23533, + "start": 23804, + "end": 23829, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 45 } }, @@ -42485,43 +43209,43 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 23508, - "end": 23531, + "start": 23804, + "end": 23827, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 43 } }, "object": { "type": "MemberExpression", - "start": 23508, - "end": 23517, + "start": 23804, + "end": 23813, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 29 } }, "object": { "type": "Identifier", - "start": 23508, - "end": 23511, + "start": 23804, + "end": 23807, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 23 }, "identifierName": "ctx" @@ -42530,15 +43254,15 @@ }, "property": { "type": "Identifier", - "start": 23512, - "end": 23517, + "start": 23808, + "end": 23813, "loc": { "start": { - "line": 674, + "line": 686, "column": 24 }, "end": { - "line": 674, + "line": 686, "column": 29 }, "identifierName": "stats" @@ -42549,15 +43273,15 @@ }, "property": { "type": "Identifier", - "start": 23518, - "end": 23531, + "start": 23814, + "end": 23827, "loc": { "start": { - "line": 674, + "line": 686, "column": 30 }, "end": { - "line": 674, + "line": 686, "column": 43 }, "identifierName": "numGeometries" @@ -42575,44 +43299,44 @@ }, { "type": "VariableDeclaration", - "start": 23569, - "end": 23600, + "start": 23865, + "end": 23896, "loc": { "start": { - "line": 676, + "line": 688, "column": 16 }, "end": { - "line": 676, + "line": 688, "column": 47 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 23575, - "end": 23599, + "start": 23871, + "end": 23895, "loc": { "start": { - "line": 676, + "line": 688, "column": 22 }, "end": { - "line": 676, + "line": 688, "column": 46 } }, "id": { "type": "Identifier", - "start": 23575, - "end": 23584, + "start": 23871, + "end": 23880, "loc": { "start": { - "line": 676, + "line": 688, "column": 22 }, "end": { - "line": 676, + "line": 688, "column": 31 }, "identifierName": "xktMeshId" @@ -42621,15 +43345,15 @@ }, "init": { "type": "UpdateExpression", - "start": 23587, - "end": 23599, + "start": 23883, + "end": 23895, "loc": { "start": { - "line": 676, + "line": 688, "column": 34 }, "end": { - "line": 676, + "line": 688, "column": 46 } }, @@ -42637,29 +43361,29 @@ "prefix": false, "argument": { "type": "MemberExpression", - "start": 23587, - "end": 23597, + "start": 23883, + "end": 23893, "loc": { "start": { - "line": 676, + "line": 688, "column": 34 }, "end": { - "line": 676, + "line": 688, "column": 44 } }, "object": { "type": "Identifier", - "start": 23587, - "end": 23590, + "start": 23883, + "end": 23886, "loc": { "start": { - "line": 676, + "line": 688, "column": 34 }, "end": { - "line": 676, + "line": 688, "column": 37 }, "identifierName": "ctx" @@ -42668,15 +43392,15 @@ }, "property": { "type": "Identifier", - "start": 23591, - "end": 23597, + "start": 23887, + "end": 23893, "loc": { "start": { - "line": 676, + "line": 688, "column": 38 }, "end": { - "line": 676, + "line": 688, "column": 44 }, "identifierName": "nextId" @@ -42692,44 +43416,44 @@ }, { "type": "VariableDeclaration", - "start": 23617, - "end": 23824, + "start": 23913, + "end": 24094, "loc": { "start": { - "line": 677, + "line": 689, "column": 16 }, "end": { - "line": 681, + "line": 693, "column": 18 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 23623, - "end": 23823, + "start": 23919, + "end": 24093, "loc": { "start": { - "line": 677, + "line": 689, "column": 22 }, "end": { - "line": 681, + "line": 693, "column": 17 } }, "id": { "type": "Identifier", - "start": 23623, - "end": 23630, + "start": 23919, + "end": 23926, "loc": { "start": { - "line": 677, + "line": 689, "column": 22 }, "end": { - "line": 677, + "line": 689, "column": 29 }, "identifierName": "meshCfg" @@ -42738,30 +43462,30 @@ }, "init": { "type": "ObjectExpression", - "start": 23633, - "end": 23823, + "start": 23929, + "end": 24093, "loc": { "start": { - "line": 677, + "line": 689, "column": 32 }, "end": { - "line": 681, + "line": 693, "column": 17 } }, "properties": [ { "type": "ObjectProperty", - "start": 23655, - "end": 23672, + "start": 23951, + "end": 23968, "loc": { "start": { - "line": 678, + "line": 690, "column": 20 }, "end": { - "line": 678, + "line": 690, "column": 37 } }, @@ -42770,15 +43494,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 23655, - "end": 23661, + "start": 23951, + "end": 23957, "loc": { "start": { - "line": 678, + "line": 690, "column": 20 }, "end": { - "line": 678, + "line": 690, "column": 26 }, "identifierName": "meshId" @@ -42787,15 +43511,15 @@ }, "value": { "type": "Identifier", - "start": 23663, - "end": 23672, + "start": 23959, + "end": 23968, "loc": { "start": { - "line": 678, + "line": 690, "column": 28 }, "end": { - "line": 678, + "line": 690, "column": 37 }, "identifierName": "xktMeshId" @@ -42805,32 +43529,32 @@ }, { "type": "ObjectProperty", - "start": 23694, - "end": 23730, + "start": 23990, + "end": 24000, "loc": { "start": { - "line": 679, + "line": 691, "column": 20 }, "end": { - "line": 679, - "column": 56 + "line": 691, + "column": 30 } }, "method": false, - "shorthand": false, + "shorthand": true, "computed": false, "key": { "type": "Identifier", - "start": 23694, - "end": 23704, + "start": 23990, + "end": 24000, "loc": { "start": { - "line": 679, + "line": 691, "column": 20 }, "end": { - "line": 679, + "line": 691, "column": 30 }, "identifierName": "geometryId" @@ -42838,67 +43562,37 @@ "name": "geometryId" }, "value": { - "type": "MemberExpression", - "start": 23706, - "end": 23730, + "type": "Identifier", + "start": 23990, + "end": 24000, "loc": { "start": { - "line": 679, - "column": 32 + "line": 691, + "column": 20 }, "end": { - "line": 679, - "column": 56 - } - }, - "object": { - "type": "Identifier", - "start": 23706, - "end": 23715, - "loc": { - "start": { - "line": 679, - "column": 32 - }, - "end": { - "line": 679, - "column": 41 - }, - "identifierName": "primitive" - }, - "name": "primitive" - }, - "property": { - "type": "Identifier", - "start": 23716, - "end": 23730, - "loc": { - "start": { - "line": 679, - "column": 42 - }, - "end": { - "line": 679, - "column": 56 - }, - "identifierName": "_xktGeometryId" + "line": 691, + "column": 30 }, - "name": "_xktGeometryId" + "identifierName": "geometryId" }, - "computed": false + "name": "geometryId" + }, + "extra": { + "shorthand": true } }, { "type": "ObjectProperty", - "start": 23752, - "end": 23805, + "start": 24022, + "end": 24075, "loc": { "start": { - "line": 680, + "line": 692, "column": 20 }, "end": { - "line": 680, + "line": 692, "column": 73 } }, @@ -42907,15 +43601,15 @@ "computed": false, "key": { "type": "Identifier", - "start": 23752, - "end": 23758, + "start": 24022, + "end": 24028, "loc": { "start": { - "line": 680, + "line": 692, "column": 20 }, "end": { - "line": 680, + "line": 692, "column": 26 }, "identifierName": "matrix" @@ -42924,29 +43618,29 @@ }, "value": { "type": "ConditionalExpression", - "start": 23760, - "end": 23805, + "start": 24030, + "end": 24075, "loc": { "start": { - "line": 680, + "line": 692, "column": 28 }, "end": { - "line": 680, + "line": 692, "column": 73 } }, "test": { "type": "Identifier", - "start": 23760, - "end": 23766, + "start": 24030, + "end": 24036, "loc": { "start": { - "line": 680, + "line": 692, "column": 28 }, "end": { - "line": 680, + "line": 692, "column": 34 }, "identifierName": "matrix" @@ -42955,43 +43649,43 @@ }, "consequent": { "type": "CallExpression", - "start": 23769, - "end": 23783, + "start": 24039, + "end": 24053, "loc": { "start": { - "line": 680, + "line": 692, "column": 37 }, "end": { - "line": 680, + "line": 692, "column": 51 } }, "callee": { "type": "MemberExpression", - "start": 23769, - "end": 23781, + "start": 24039, + "end": 24051, "loc": { "start": { - "line": 680, + "line": 692, "column": 37 }, "end": { - "line": 680, + "line": 692, "column": 49 } }, "object": { "type": "Identifier", - "start": 23769, - "end": 23775, + "start": 24039, + "end": 24045, "loc": { "start": { - "line": 680, + "line": 692, "column": 37 }, "end": { - "line": 680, + "line": 692, "column": 43 }, "identifierName": "matrix" @@ -43000,15 +43694,15 @@ }, "property": { "type": "Identifier", - "start": 23776, - "end": 23781, + "start": 24046, + "end": 24051, "loc": { "start": { - "line": 680, + "line": 692, "column": 44 }, "end": { - "line": 680, + "line": 692, "column": 49 }, "identifierName": "slice" @@ -43021,43 +43715,43 @@ }, "alternate": { "type": "CallExpression", - "start": 23786, - "end": 23805, + "start": 24056, + "end": 24075, "loc": { "start": { - "line": 680, + "line": 692, "column": 54 }, "end": { - "line": 680, + "line": 692, "column": 73 } }, "callee": { "type": "MemberExpression", - "start": 23786, - "end": 23803, + "start": 24056, + "end": 24073, "loc": { "start": { - "line": 680, + "line": 692, "column": 54 }, "end": { - "line": 680, + "line": 692, "column": 71 } }, "object": { "type": "Identifier", - "start": 23786, - "end": 23790, + "start": 24056, + "end": 24060, "loc": { "start": { - "line": 680, + "line": 692, "column": 54 }, "end": { - "line": 680, + "line": 692, "column": 58 }, "identifierName": "math" @@ -43066,15 +43760,15 @@ }, "property": { "type": "Identifier", - "start": 23791, - "end": 23803, + "start": 24061, + "end": 24073, "loc": { "start": { - "line": 680, + "line": 692, "column": 59 }, "end": { - "line": 680, + "line": 692, "column": 71 }, "identifierName": "identityMat4" @@ -43095,44 +43789,44 @@ }, { "type": "VariableDeclaration", - "start": 23841, - "end": 23877, + "start": 24111, + "end": 24147, "loc": { "start": { - "line": 682, + "line": 694, "column": 16 }, "end": { - "line": 682, + "line": 694, "column": 52 } }, "declarations": [ { "type": "VariableDeclarator", - "start": 23847, - "end": 23876, + "start": 24117, + "end": 24146, "loc": { "start": { - "line": 682, + "line": 694, "column": 22 }, "end": { - "line": 682, + "line": 694, "column": 51 } }, "id": { "type": "Identifier", - "start": 23847, - "end": 23855, + "start": 24117, + "end": 24125, "loc": { "start": { - "line": 682, + "line": 694, "column": 22 }, "end": { - "line": 682, + "line": 694, "column": 30 }, "identifierName": "material" @@ -43141,29 +43835,29 @@ }, "init": { "type": "MemberExpression", - "start": 23858, - "end": 23876, + "start": 24128, + "end": 24146, "loc": { "start": { - "line": 682, + "line": 694, "column": 33 }, "end": { - "line": 682, + "line": 694, "column": 51 } }, "object": { "type": "Identifier", - "start": 23858, - "end": 23867, + "start": 24128, + "end": 24137, "loc": { "start": { - "line": 682, + "line": 694, "column": 33 }, "end": { - "line": 682, + "line": 694, "column": 42 }, "identifierName": "primitive" @@ -43172,15 +43866,15 @@ }, "property": { "type": "Identifier", - "start": 23868, - "end": 23876, + "start": 24138, + "end": 24146, "loc": { "start": { - "line": 682, + "line": 694, "column": 43 }, "end": { - "line": 682, + "line": 694, "column": 51 }, "identifierName": "material" @@ -43195,29 +43889,29 @@ }, { "type": "IfStatement", - "start": 23894, - "end": 24389, + "start": 24164, + "end": 24659, "loc": { "start": { - "line": 683, + "line": 695, "column": 16 }, "end": { - "line": 692, + "line": 704, "column": 17 } }, "test": { "type": "Identifier", - "start": 23898, - "end": 23906, + "start": 24168, + "end": 24176, "loc": { "start": { - "line": 683, + "line": 695, "column": 20 }, "end": { - "line": 683, + "line": 695, "column": 28 }, "identifierName": "material" @@ -43226,73 +43920,73 @@ }, "consequent": { "type": "BlockStatement", - "start": 23908, - "end": 24268, + "start": 24178, + "end": 24538, "loc": { "start": { - "line": 683, + "line": 695, "column": 30 }, "end": { - "line": 689, + "line": 701, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 23930, - "end": 23976, + "start": 24200, + "end": 24246, "loc": { "start": { - "line": 684, + "line": 696, "column": 20 }, "end": { - "line": 684, + "line": 696, "column": 66 } }, "expression": { "type": "AssignmentExpression", - "start": 23930, - "end": 23975, + "start": 24200, + "end": 24245, "loc": { "start": { - "line": 684, + "line": 696, "column": 20 }, "end": { - "line": 684, + "line": 696, "column": 65 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23930, - "end": 23950, + "start": 24200, + "end": 24220, "loc": { "start": { - "line": 684, + "line": 696, "column": 20 }, "end": { - "line": 684, + "line": 696, "column": 40 } }, "object": { "type": "Identifier", - "start": 23930, - "end": 23937, + "start": 24200, + "end": 24207, "loc": { "start": { - "line": 684, + "line": 696, "column": 20 }, "end": { - "line": 684, + "line": 696, "column": 27 }, "identifierName": "meshCfg" @@ -43301,15 +43995,15 @@ }, "property": { "type": "Identifier", - "start": 23938, - "end": 23950, + "start": 24208, + "end": 24220, "loc": { "start": { - "line": 684, + "line": 696, "column": 28 }, "end": { - "line": 684, + "line": 696, "column": 40 }, "identifierName": "textureSetId" @@ -43320,29 +44014,29 @@ }, "right": { "type": "MemberExpression", - "start": 23953, - "end": 23975, + "start": 24223, + "end": 24245, "loc": { "start": { - "line": 684, + "line": 696, "column": 43 }, "end": { - "line": 684, + "line": 696, "column": 65 } }, "object": { "type": "Identifier", - "start": 23953, - "end": 23961, + "start": 24223, + "end": 24231, "loc": { "start": { - "line": 684, + "line": 696, "column": 43 }, "end": { - "line": 684, + "line": 696, "column": 51 }, "identifierName": "material" @@ -43351,15 +44045,15 @@ }, "property": { "type": "Identifier", - "start": 23962, - "end": 23975, + "start": 24232, + "end": 24245, "loc": { "start": { - "line": 684, + "line": 696, "column": 52 }, "end": { - "line": 684, + "line": 696, "column": 65 }, "identifierName": "_textureSetId" @@ -43372,58 +44066,58 @@ }, { "type": "ExpressionStatement", - "start": 23997, - "end": 24040, + "start": 24267, + "end": 24310, "loc": { "start": { - "line": 685, + "line": 697, "column": 20 }, "end": { - "line": 685, + "line": 697, "column": 63 } }, "expression": { "type": "AssignmentExpression", - "start": 23997, - "end": 24039, + "start": 24267, + "end": 24309, "loc": { "start": { - "line": 685, + "line": 697, "column": 20 }, "end": { - "line": 685, + "line": 697, "column": 62 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 23997, - "end": 24010, + "start": 24267, + "end": 24280, "loc": { "start": { - "line": 685, + "line": 697, "column": 20 }, "end": { - "line": 685, + "line": 697, "column": 33 } }, "object": { "type": "Identifier", - "start": 23997, - "end": 24004, + "start": 24267, + "end": 24274, "loc": { "start": { - "line": 685, + "line": 697, "column": 20 }, "end": { - "line": 685, + "line": 697, "column": 27 }, "identifierName": "meshCfg" @@ -43432,15 +44126,15 @@ }, "property": { "type": "Identifier", - "start": 24005, - "end": 24010, + "start": 24275, + "end": 24280, "loc": { "start": { - "line": 685, + "line": 697, "column": 28 }, "end": { - "line": 685, + "line": 697, "column": 33 }, "identifierName": "color" @@ -43451,43 +44145,43 @@ }, "right": { "type": "MemberExpression", - "start": 24013, - "end": 24039, + "start": 24283, + "end": 24309, "loc": { "start": { - "line": 685, + "line": 697, "column": 36 }, "end": { - "line": 685, + "line": 697, "column": 62 } }, "object": { "type": "MemberExpression", - "start": 24013, - "end": 24033, + "start": 24283, + "end": 24303, "loc": { "start": { - "line": 685, + "line": 697, "column": 36 }, "end": { - "line": 685, + "line": 697, "column": 56 } }, "object": { "type": "Identifier", - "start": 24013, - "end": 24021, + "start": 24283, + "end": 24291, "loc": { "start": { - "line": 685, + "line": 697, "column": 36 }, "end": { - "line": 685, + "line": 697, "column": 44 }, "identifierName": "material" @@ -43496,15 +44190,15 @@ }, "property": { "type": "Identifier", - "start": 24022, - "end": 24033, + "start": 24292, + "end": 24303, "loc": { "start": { - "line": 685, + "line": 697, "column": 45 }, "end": { - "line": 685, + "line": 697, "column": 56 }, "identifierName": "_attributes" @@ -43515,15 +44209,15 @@ }, "property": { "type": "Identifier", - "start": 24034, - "end": 24039, + "start": 24304, + "end": 24309, "loc": { "start": { - "line": 685, + "line": 697, "column": 57 }, "end": { - "line": 685, + "line": 697, "column": 62 }, "identifierName": "color" @@ -43536,58 +44230,58 @@ }, { "type": "ExpressionStatement", - "start": 24061, - "end": 24108, + "start": 24331, + "end": 24378, "loc": { "start": { - "line": 686, + "line": 698, "column": 20 }, "end": { - "line": 686, + "line": 698, "column": 67 } }, "expression": { "type": "AssignmentExpression", - "start": 24061, - "end": 24107, + "start": 24331, + "end": 24377, "loc": { "start": { - "line": 686, + "line": 698, "column": 20 }, "end": { - "line": 686, + "line": 698, "column": 66 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24061, - "end": 24076, + "start": 24331, + "end": 24346, "loc": { "start": { - "line": 686, + "line": 698, "column": 20 }, "end": { - "line": 686, + "line": 698, "column": 35 } }, "object": { "type": "Identifier", - "start": 24061, - "end": 24068, + "start": 24331, + "end": 24338, "loc": { "start": { - "line": 686, + "line": 698, "column": 20 }, "end": { - "line": 686, + "line": 698, "column": 27 }, "identifierName": "meshCfg" @@ -43596,15 +44290,15 @@ }, "property": { "type": "Identifier", - "start": 24069, - "end": 24076, + "start": 24339, + "end": 24346, "loc": { "start": { - "line": 686, + "line": 698, "column": 28 }, "end": { - "line": 686, + "line": 698, "column": 35 }, "identifierName": "opacity" @@ -43615,43 +44309,43 @@ }, "right": { "type": "MemberExpression", - "start": 24079, - "end": 24107, + "start": 24349, + "end": 24377, "loc": { "start": { - "line": 686, + "line": 698, "column": 38 }, "end": { - "line": 686, + "line": 698, "column": 66 } }, "object": { "type": "MemberExpression", - "start": 24079, - "end": 24099, + "start": 24349, + "end": 24369, "loc": { "start": { - "line": 686, + "line": 698, "column": 38 }, "end": { - "line": 686, + "line": 698, "column": 58 } }, "object": { "type": "Identifier", - "start": 24079, - "end": 24087, + "start": 24349, + "end": 24357, "loc": { "start": { - "line": 686, + "line": 698, "column": 38 }, "end": { - "line": 686, + "line": 698, "column": 46 }, "identifierName": "material" @@ -43660,15 +44354,15 @@ }, "property": { "type": "Identifier", - "start": 24088, - "end": 24099, + "start": 24358, + "end": 24369, "loc": { "start": { - "line": 686, + "line": 698, "column": 47 }, "end": { - "line": 686, + "line": 698, "column": 58 }, "identifierName": "_attributes" @@ -43679,15 +44373,15 @@ }, "property": { "type": "Identifier", - "start": 24100, - "end": 24107, + "start": 24370, + "end": 24377, "loc": { "start": { - "line": 686, + "line": 698, "column": 59 }, "end": { - "line": 686, + "line": 698, "column": 66 }, "identifierName": "opacity" @@ -43700,58 +44394,58 @@ }, { "type": "ExpressionStatement", - "start": 24129, - "end": 24178, + "start": 24399, + "end": 24448, "loc": { "start": { - "line": 687, + "line": 699, "column": 20 }, "end": { - "line": 687, + "line": 699, "column": 69 } }, "expression": { "type": "AssignmentExpression", - "start": 24129, - "end": 24177, + "start": 24399, + "end": 24447, "loc": { "start": { - "line": 687, + "line": 699, "column": 20 }, "end": { - "line": 687, + "line": 699, "column": 68 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24129, - "end": 24145, + "start": 24399, + "end": 24415, "loc": { "start": { - "line": 687, + "line": 699, "column": 20 }, "end": { - "line": 687, + "line": 699, "column": 36 } }, "object": { "type": "Identifier", - "start": 24129, - "end": 24136, + "start": 24399, + "end": 24406, "loc": { "start": { - "line": 687, + "line": 699, "column": 20 }, "end": { - "line": 687, + "line": 699, "column": 27 }, "identifierName": "meshCfg" @@ -43760,15 +44454,15 @@ }, "property": { "type": "Identifier", - "start": 24137, - "end": 24145, + "start": 24407, + "end": 24415, "loc": { "start": { - "line": 687, + "line": 699, "column": 28 }, "end": { - "line": 687, + "line": 699, "column": 36 }, "identifierName": "metallic" @@ -43779,43 +44473,43 @@ }, "right": { "type": "MemberExpression", - "start": 24148, - "end": 24177, + "start": 24418, + "end": 24447, "loc": { "start": { - "line": 687, + "line": 699, "column": 39 }, "end": { - "line": 687, + "line": 699, "column": 68 } }, "object": { "type": "MemberExpression", - "start": 24148, - "end": 24168, + "start": 24418, + "end": 24438, "loc": { "start": { - "line": 687, + "line": 699, "column": 39 }, "end": { - "line": 687, + "line": 699, "column": 59 } }, "object": { "type": "Identifier", - "start": 24148, - "end": 24156, + "start": 24418, + "end": 24426, "loc": { "start": { - "line": 687, + "line": 699, "column": 39 }, "end": { - "line": 687, + "line": 699, "column": 47 }, "identifierName": "material" @@ -43824,15 +44518,15 @@ }, "property": { "type": "Identifier", - "start": 24157, - "end": 24168, + "start": 24427, + "end": 24438, "loc": { "start": { - "line": 687, + "line": 699, "column": 48 }, "end": { - "line": 687, + "line": 699, "column": 59 }, "identifierName": "_attributes" @@ -43843,15 +44537,15 @@ }, "property": { "type": "Identifier", - "start": 24169, - "end": 24177, + "start": 24439, + "end": 24447, "loc": { "start": { - "line": 687, + "line": 699, "column": 60 }, "end": { - "line": 687, + "line": 699, "column": 68 }, "identifierName": "metallic" @@ -43864,58 +44558,58 @@ }, { "type": "ExpressionStatement", - "start": 24199, - "end": 24250, + "start": 24469, + "end": 24520, "loc": { "start": { - "line": 688, + "line": 700, "column": 20 }, "end": { - "line": 688, + "line": 700, "column": 71 } }, "expression": { "type": "AssignmentExpression", - "start": 24199, - "end": 24249, + "start": 24469, + "end": 24519, "loc": { "start": { - "line": 688, + "line": 700, "column": 20 }, "end": { - "line": 688, + "line": 700, "column": 70 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24199, - "end": 24216, + "start": 24469, + "end": 24486, "loc": { "start": { - "line": 688, + "line": 700, "column": 20 }, "end": { - "line": 688, + "line": 700, "column": 37 } }, "object": { "type": "Identifier", - "start": 24199, - "end": 24206, + "start": 24469, + "end": 24476, "loc": { "start": { - "line": 688, + "line": 700, "column": 20 }, "end": { - "line": 688, + "line": 700, "column": 27 }, "identifierName": "meshCfg" @@ -43924,15 +44618,15 @@ }, "property": { "type": "Identifier", - "start": 24207, - "end": 24216, + "start": 24477, + "end": 24486, "loc": { "start": { - "line": 688, + "line": 700, "column": 28 }, "end": { - "line": 688, + "line": 700, "column": 37 }, "identifierName": "roughness" @@ -43943,43 +44637,43 @@ }, "right": { "type": "MemberExpression", - "start": 24219, - "end": 24249, + "start": 24489, + "end": 24519, "loc": { "start": { - "line": 688, + "line": 700, "column": 40 }, "end": { - "line": 688, + "line": 700, "column": 70 } }, "object": { "type": "MemberExpression", - "start": 24219, - "end": 24239, + "start": 24489, + "end": 24509, "loc": { "start": { - "line": 688, + "line": 700, "column": 40 }, "end": { - "line": 688, + "line": 700, "column": 60 } }, "object": { "type": "Identifier", - "start": 24219, - "end": 24227, + "start": 24489, + "end": 24497, "loc": { "start": { - "line": 688, + "line": 700, "column": 40 }, "end": { - "line": 688, + "line": 700, "column": 48 }, "identifierName": "material" @@ -43988,15 +44682,15 @@ }, "property": { "type": "Identifier", - "start": 24228, - "end": 24239, + "start": 24498, + "end": 24509, "loc": { "start": { - "line": 688, + "line": 700, "column": 49 }, "end": { - "line": 688, + "line": 700, "column": 60 }, "identifierName": "_attributes" @@ -44007,15 +44701,15 @@ }, "property": { "type": "Identifier", - "start": 24240, - "end": 24249, + "start": 24510, + "end": 24519, "loc": { "start": { - "line": 688, + "line": 700, "column": 61 }, "end": { - "line": 688, + "line": 700, "column": 70 }, "identifierName": "roughness" @@ -44031,73 +44725,73 @@ }, "alternate": { "type": "BlockStatement", - "start": 24274, - "end": 24389, + "start": 24544, + "end": 24659, "loc": { "start": { - "line": 689, + "line": 701, "column": 23 }, "end": { - "line": 692, + "line": 704, "column": 17 } }, "body": [ { "type": "ExpressionStatement", - "start": 24296, - "end": 24328, + "start": 24566, + "end": 24598, "loc": { "start": { - "line": 690, + "line": 702, "column": 20 }, "end": { - "line": 690, + "line": 702, "column": 52 } }, "expression": { "type": "AssignmentExpression", - "start": 24296, - "end": 24327, + "start": 24566, + "end": 24597, "loc": { "start": { - "line": 690, + "line": 702, "column": 20 }, "end": { - "line": 690, + "line": 702, "column": 51 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24296, - "end": 24309, + "start": 24566, + "end": 24579, "loc": { "start": { - "line": 690, + "line": 702, "column": 20 }, "end": { - "line": 690, + "line": 702, "column": 33 } }, "object": { "type": "Identifier", - "start": 24296, - "end": 24303, + "start": 24566, + "end": 24573, "loc": { "start": { - "line": 690, + "line": 702, "column": 20 }, "end": { - "line": 690, + "line": 702, "column": 27 }, "identifierName": "meshCfg" @@ -44106,15 +44800,15 @@ }, "property": { "type": "Identifier", - "start": 24304, - "end": 24309, + "start": 24574, + "end": 24579, "loc": { "start": { - "line": 690, + "line": 702, "column": 28 }, "end": { - "line": 690, + "line": 702, "column": 33 }, "identifierName": "color" @@ -44125,30 +44819,30 @@ }, "right": { "type": "ArrayExpression", - "start": 24312, - "end": 24327, + "start": 24582, + "end": 24597, "loc": { "start": { - "line": 690, + "line": 702, "column": 36 }, "end": { - "line": 690, + "line": 702, "column": 51 } }, "elements": [ { "type": "NumericLiteral", - "start": 24313, - "end": 24316, + "start": 24583, + "end": 24586, "loc": { "start": { - "line": 690, + "line": 702, "column": 37 }, "end": { - "line": 690, + "line": 702, "column": 40 } }, @@ -44160,15 +44854,15 @@ }, { "type": "NumericLiteral", - "start": 24318, - "end": 24321, + "start": 24588, + "end": 24591, "loc": { "start": { - "line": 690, + "line": 702, "column": 42 }, "end": { - "line": 690, + "line": 702, "column": 45 } }, @@ -44180,15 +44874,15 @@ }, { "type": "NumericLiteral", - "start": 24323, - "end": 24326, + "start": 24593, + "end": 24596, "loc": { "start": { - "line": 690, + "line": 702, "column": 47 }, "end": { - "line": 690, + "line": 702, "column": 50 } }, @@ -44204,58 +44898,58 @@ }, { "type": "ExpressionStatement", - "start": 24349, - "end": 24371, + "start": 24619, + "end": 24641, "loc": { "start": { - "line": 691, + "line": 703, "column": 20 }, "end": { - "line": 691, + "line": 703, "column": 42 } }, "expression": { "type": "AssignmentExpression", - "start": 24349, - "end": 24370, + "start": 24619, + "end": 24640, "loc": { "start": { - "line": 691, + "line": 703, "column": 20 }, "end": { - "line": 691, + "line": 703, "column": 41 } }, "operator": "=", "left": { "type": "MemberExpression", - "start": 24349, - "end": 24364, + "start": 24619, + "end": 24634, "loc": { "start": { - "line": 691, + "line": 703, "column": 20 }, "end": { - "line": 691, + "line": 703, "column": 35 } }, "object": { "type": "Identifier", - "start": 24349, - "end": 24356, + "start": 24619, + "end": 24626, "loc": { "start": { - "line": 691, + "line": 703, "column": 20 }, "end": { - "line": 691, + "line": 703, "column": 27 }, "identifierName": "meshCfg" @@ -44264,15 +44958,15 @@ }, "property": { "type": "Identifier", - "start": 24357, - "end": 24364, + "start": 24627, + "end": 24634, "loc": { "start": { - "line": 691, + "line": 703, "column": 28 }, "end": { - "line": 691, + "line": 703, "column": 35 }, "identifierName": "opacity" @@ -44283,15 +44977,15 @@ }, "right": { "type": "NumericLiteral", - "start": 24367, - "end": 24370, + "start": 24637, + "end": 24640, "loc": { "start": { - "line": 691, + "line": 703, "column": 38 }, "end": { - "line": 691, + "line": 703, "column": 41 } }, @@ -44309,71 +45003,71 @@ }, { "type": "ExpressionStatement", - "start": 24406, - "end": 24439, + "start": 24676, + "end": 24709, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 49 } }, "expression": { "type": "CallExpression", - "start": 24406, - "end": 24438, + "start": 24676, + "end": 24708, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 48 } }, "callee": { "type": "MemberExpression", - "start": 24406, - "end": 24429, + "start": 24676, + "end": 24699, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 39 } }, "object": { "type": "MemberExpression", - "start": 24406, - "end": 24418, + "start": 24676, + "end": 24688, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 28 } }, "object": { "type": "Identifier", - "start": 24406, - "end": 24409, + "start": 24676, + "end": 24679, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 19 }, "identifierName": "ctx" @@ -44382,15 +45076,15 @@ }, "property": { "type": "Identifier", - "start": 24410, - "end": 24418, + "start": 24680, + "end": 24688, "loc": { "start": { - "line": 693, + "line": 705, "column": 20 }, "end": { - "line": 693, + "line": 705, "column": 28 }, "identifierName": "xktModel" @@ -44401,15 +45095,15 @@ }, "property": { "type": "Identifier", - "start": 24419, - "end": 24429, + "start": 24689, + "end": 24699, "loc": { "start": { - "line": 693, + "line": 705, "column": 29 }, "end": { - "line": 693, + "line": 705, "column": 39 }, "identifierName": "createMesh" @@ -44421,15 +45115,15 @@ "arguments": [ { "type": "Identifier", - "start": 24430, - "end": 24437, + "start": 24700, + "end": 24707, "loc": { "start": { - "line": 693, + "line": 705, "column": 40 }, "end": { - "line": 693, + "line": 705, "column": 47 }, "identifierName": "meshCfg" @@ -44441,57 +45135,57 @@ }, { "type": "ExpressionStatement", - "start": 24456, - "end": 24480, + "start": 24726, + "end": 24750, "loc": { "start": { - "line": 694, + "line": 706, "column": 16 }, "end": { - "line": 694, + "line": 706, "column": 40 } }, "expression": { "type": "CallExpression", - "start": 24456, - "end": 24479, + "start": 24726, + "end": 24749, "loc": { "start": { - "line": 694, + "line": 706, "column": 16 }, "end": { - "line": 694, + "line": 706, "column": 39 } }, "callee": { "type": "MemberExpression", - "start": 24456, - "end": 24468, + "start": 24726, + "end": 24738, "loc": { "start": { - "line": 694, + "line": 706, "column": 16 }, "end": { - "line": 694, + "line": 706, "column": 28 } }, "object": { "type": "Identifier", - "start": 24456, - "end": 24463, + "start": 24726, + "end": 24733, "loc": { "start": { - "line": 694, + "line": 706, "column": 16 }, "end": { - "line": 694, + "line": 706, "column": 23 }, "identifierName": "meshIds" @@ -44500,15 +45194,15 @@ }, "property": { "type": "Identifier", - "start": 24464, - "end": 24468, + "start": 24734, + "end": 24738, "loc": { "start": { - "line": 694, + "line": 706, "column": 24 }, "end": { - "line": 694, + "line": 706, "column": 28 }, "identifierName": "push" @@ -44520,15 +45214,15 @@ "arguments": [ { "type": "Identifier", - "start": 24469, - "end": 24478, + "start": 24739, + "end": 24748, "loc": { "start": { - "line": 694, + "line": 706, "column": 29 }, "end": { - "line": 694, + "line": 706, "column": 38 }, "identifierName": "xktMeshId" @@ -44543,29 +45237,29 @@ }, "handler": { "type": "CatchClause", - "start": 24495, - "end": 24552, + "start": 24765, + "end": 24822, "loc": { "start": { - "line": 695, + "line": 707, "column": 14 }, "end": { - "line": 697, + "line": 709, "column": 13 } }, "param": { "type": "Identifier", - "start": 24502, - "end": 24503, + "start": 24772, + "end": 24773, "loc": { "start": { - "line": 695, + "line": 707, "column": 21 }, "end": { - "line": 695, + "line": 707, "column": 22 }, "identifierName": "e" @@ -44574,72 +45268,72 @@ }, "body": { "type": "BlockStatement", - "start": 24505, - "end": 24552, + "start": 24775, + "end": 24822, "loc": { "start": { - "line": 695, + "line": 707, "column": 24 }, "end": { - "line": 697, + "line": 709, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 24523, - "end": 24538, + "start": 24793, + "end": 24808, "loc": { "start": { - "line": 696, + "line": 708, "column": 16 }, "end": { - "line": 696, + "line": 708, "column": 31 } }, "expression": { "type": "CallExpression", - "start": 24523, - "end": 24537, + "start": 24793, + "end": 24807, "loc": { "start": { - "line": 696, + "line": 708, "column": 16 }, "end": { - "line": 696, + "line": 708, "column": 30 } }, "callee": { "type": "MemberExpression", - "start": 24523, - "end": 24534, + "start": 24793, + "end": 24804, "loc": { "start": { - "line": 696, + "line": 708, "column": 16 }, "end": { - "line": 696, + "line": 708, "column": 27 } }, "object": { "type": "Identifier", - "start": 24523, - "end": 24530, + "start": 24793, + "end": 24800, "loc": { "start": { - "line": 696, + "line": 708, "column": 16 }, "end": { - "line": 696, + "line": 708, "column": 23 }, "identifierName": "console" @@ -44648,15 +45342,15 @@ }, "property": { "type": "Identifier", - "start": 24531, - "end": 24534, + "start": 24801, + "end": 24804, "loc": { "start": { - "line": 696, + "line": 708, "column": 24 }, "end": { - "line": 696, + "line": 708, "column": 27 }, "identifierName": "log" @@ -44668,15 +45362,15 @@ "arguments": [ { "type": "Identifier", - "start": 24535, - "end": 24536, + "start": 24805, + "end": 24806, "loc": { "start": { - "line": 696, + "line": 708, "column": 28 }, "end": { - "line": 696, + "line": 708, "column": 29 }, "identifierName": "e" @@ -44709,15 +45403,15 @@ { "type": "CommentBlock", "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", - "start": 19852, - "end": 20119, + "start": 20157, + "end": 20424, "loc": { "start": { - "line": 594, + "line": 606, "column": 0 }, "end": { - "line": 601, + "line": 613, "column": 3 } } @@ -44726,15 +45420,15 @@ }, { "type": "ExportNamedDeclaration", - "start": 24572, - "end": 24603, + "start": 24842, + "end": 24873, "loc": { "start": { - "line": 702, + "line": 714, "column": 0 }, "end": { - "line": 702, + "line": 714, "column": 31 } }, @@ -44742,29 +45436,29 @@ "specifiers": [ { "type": "ExportSpecifier", - "start": 24580, - "end": 24601, + "start": 24850, + "end": 24871, "loc": { "start": { - "line": 702, + "line": 714, "column": 8 }, "end": { - "line": 702, + "line": 714, "column": 29 } }, "local": { "type": "Identifier", - "start": 24580, - "end": 24601, + "start": 24850, + "end": 24871, "loc": { "start": { - "line": 702, + "line": 714, "column": 8 }, "end": { - "line": 702, + "line": 714, "column": 29 }, "identifierName": "parseGLTFIntoXKTModel" @@ -44773,15 +45467,15 @@ }, "exported": { "type": "Identifier", - "start": 24580, - "end": 24601, + "start": 24850, + "end": 24871, "loc": { "start": { - "line": 702, + "line": 714, "column": 8 }, "end": { - "line": 702, + "line": 714, "column": 29 }, "identifierName": "parseGLTFIntoXKTModel" @@ -44794,29 +45488,29 @@ }, { "type": "ExportNamedDeclaration", - "start": 24572, - "end": 24603, + "start": 24842, + "end": 24873, "loc": { "start": { - "line": 702, + "line": 714, "column": 0 }, "end": { - "line": 702, + "line": 714, "column": 31 } }, "declaration": { "type": "FunctionDeclaration", "start": 2328, - "end": 4812, + "end": 4852, "loc": { "start": { "line": 60, "column": 0 }, "end": { - "line": 136, + "line": 137, "column": 1 } }, @@ -45451,14 +46145,14 @@ "body": { "type": "BlockStatement", "start": 2828, - "end": 4812, + "end": 4852, "loc": { "start": { "line": 70, "column": 34 }, "end": { - "line": 136, + "line": 137, "column": 1 } }, @@ -45466,28 +46160,28 @@ { "type": "ReturnStatement", "start": 2835, - "end": 4810, + "end": 4850, "loc": { "start": { "line": 72, "column": 4 }, "end": { - "line": 135, + "line": 136, "column": 7 } }, "argument": { "type": "NewExpression", "start": 2842, - "end": 4809, + "end": 4849, "loc": { "start": { "line": 72, "column": 11 }, "end": { - "line": 135, + "line": 136, "column": 6 } }, @@ -45512,14 +46206,14 @@ { "type": "FunctionExpression", "start": 2854, - "end": 4808, + "end": 4848, "loc": { "start": { "line": 72, "column": 23 }, "end": { - "line": 135, + "line": 136, "column": 5 } }, @@ -45566,14 +46260,14 @@ "body": { "type": "BlockStatement", "start": 2881, - "end": 4808, + "end": 4848, "loc": { "start": { "line": 72, "column": 50 }, "end": { - "line": 135, + "line": 136, "column": 5 } }, @@ -47105,28 +47799,28 @@ { "type": "ExpressionStatement", "start": 3467, - "end": 4802, + "end": 4842, "loc": { "start": { "line": 97, "column": 8 }, "end": { - "line": 134, + "line": 135, "column": 11 } }, "expression": { "type": "CallExpression", "start": 3467, - "end": 4801, + "end": 4841, "loc": { "start": { "line": 97, "column": 8 }, "end": { - "line": 134, + "line": 135, "column": 10 } }, @@ -47307,14 +48001,14 @@ { "type": "ArrowFunctionExpression", "start": 3529, - "end": 4718, + "end": 4758, "loc": { "start": { "line": 99, "column": 16 }, "end": { - "line": 132, + "line": 133, "column": 9 } }, @@ -47344,14 +48038,14 @@ "body": { "type": "BlockStatement", "start": 3543, - "end": 4718, + "end": 4758, "loc": { "start": { "line": 99, "column": 30 }, "end": { - "line": 132, + "line": 133, "column": 9 } }, @@ -47359,14 +48053,14 @@ { "type": "VariableDeclaration", "start": 3558, - "end": 4285, + "end": 4325, "loc": { "start": { "line": 101, "column": 12 }, "end": { - "line": 118, + "line": 119, "column": 14 } }, @@ -47374,14 +48068,14 @@ { "type": "VariableDeclarator", "start": 3564, - "end": 4284, + "end": 4324, "loc": { "start": { "line": 101, "column": 18 }, "end": { - "line": 118, + "line": 119, "column": 13 } }, @@ -47405,14 +48099,14 @@ "init": { "type": "ObjectExpression", "start": 3570, - "end": 4284, + "end": 4324, "loc": { "start": { "line": 101, "column": 24 }, "end": { - "line": 118, + "line": 119, "column": 13 } }, @@ -48378,7 +49072,7 @@ { "type": "ObjectProperty", "start": 4265, - "end": 4270, + "end": 4287, "loc": { "start": { "line": 117, @@ -48386,16 +49080,16 @@ }, "end": { "line": 117, - "column": 21 + "column": 38 } }, "method": false, - "shorthand": true, + "shorthand": false, "computed": false, "key": { "type": "Identifier", "start": 4265, - "end": 4270, + "end": 4282, "loc": { "start": { "line": 117, @@ -48403,6 +49097,57 @@ }, "end": { "line": 117, + "column": 33 + }, + "identifierName": "geometriesCreated" + }, + "name": "geometriesCreated" + }, + "value": { + "type": "ObjectExpression", + "start": 4285, + "end": 4287, + "loc": { + "start": { + "line": 117, + "column": 36 + }, + "end": { + "line": 117, + "column": 38 + } + }, + "properties": [] + } + }, + { + "type": "ObjectProperty", + "start": 4305, + "end": 4310, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, + "column": 21 + } + }, + "method": false, + "shorthand": true, + "computed": false, + "key": { + "type": "Identifier", + "start": 4305, + "end": 4310, + "loc": { + "start": { + "line": 118, + "column": 16 + }, + "end": { + "line": 118, "column": 21 }, "identifierName": "stats" @@ -48411,15 +49156,15 @@ }, "value": { "type": "Identifier", - "start": 4265, - "end": 4270, + "start": 4305, + "end": 4310, "loc": { "start": { - "line": 117, + "line": 118, "column": 16 }, "end": { - "line": 117, + "line": 118, "column": 21 }, "identifierName": "stats" @@ -48438,57 +49183,57 @@ }, { "type": "ExpressionStatement", - "start": 4299, - "end": 4346, + "start": 4339, + "end": 4386, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 59 } }, "expression": { "type": "CallExpression", - "start": 4299, - "end": 4345, + "start": 4339, + "end": 4385, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 58 } }, "callee": { "type": "MemberExpression", - "start": 4299, - "end": 4306, + "start": 4339, + "end": 4346, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 19 } }, "object": { "type": "Identifier", - "start": 4299, - "end": 4302, + "start": 4339, + "end": 4342, "loc": { "start": { - "line": 120, + "line": 121, "column": 12 }, "end": { - "line": 120, + "line": 121, "column": 15 }, "identifierName": "ctx" @@ -48497,15 +49242,15 @@ }, "property": { "type": "Identifier", - "start": 4303, - "end": 4306, + "start": 4343, + "end": 4346, "loc": { "start": { - "line": 120, + "line": 121, "column": 16 }, "end": { - "line": 120, + "line": 121, "column": 19 }, "identifierName": "log" @@ -48517,15 +49262,15 @@ "arguments": [ { "type": "StringLiteral", - "start": 4307, - "end": 4344, + "start": 4347, + "end": 4384, "loc": { "start": { - "line": 120, + "line": 121, "column": 20 }, "end": { - "line": 120, + "line": 121, "column": 57 } }, @@ -48540,57 +49285,57 @@ }, { "type": "ExpressionStatement", - "start": 4359, - "end": 4434, + "start": 4399, + "end": 4474, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 87 } }, "expression": { "type": "CallExpression", - "start": 4359, - "end": 4433, + "start": 4399, + "end": 4473, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 86 } }, "callee": { "type": "MemberExpression", - "start": 4359, - "end": 4366, + "start": 4399, + "end": 4406, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 19 } }, "object": { "type": "Identifier", - "start": 4359, - "end": 4362, + "start": 4399, + "end": 4402, "loc": { "start": { - "line": 121, + "line": 122, "column": 12 }, "end": { - "line": 121, + "line": 122, "column": 15 }, "identifierName": "ctx" @@ -48599,15 +49344,15 @@ }, "property": { "type": "Identifier", - "start": 4363, - "end": 4366, + "start": 4403, + "end": 4406, "loc": { "start": { - "line": 121, + "line": 122, "column": 16 }, "end": { - "line": 121, + "line": 122, "column": 19 }, "identifierName": "log" @@ -48619,58 +49364,58 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4367, - "end": 4432, + "start": 4407, + "end": 4472, "loc": { "start": { - "line": 121, + "line": 122, "column": 20 }, "end": { - "line": 121, + "line": 122, "column": 85 } }, "expressions": [ { "type": "ConditionalExpression", - "start": 4387, - "end": 4430, + "start": 4427, + "end": 4470, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 83 } }, "test": { "type": "MemberExpression", - "start": 4387, - "end": 4405, + "start": 4427, + "end": 4445, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 58 } }, "object": { "type": "Identifier", - "start": 4387, - "end": 4390, + "start": 4427, + "end": 4430, "loc": { "start": { - "line": 121, + "line": 122, "column": 40 }, "end": { - "line": 121, + "line": 122, "column": 43 }, "identifierName": "ctx" @@ -48679,15 +49424,15 @@ }, "property": { "type": "Identifier", - "start": 4391, - "end": 4405, + "start": 4431, + "end": 4445, "loc": { "start": { - "line": 121, + "line": 122, "column": 44 }, "end": { - "line": 121, + "line": 122, "column": 58 }, "identifierName": "includeNormals" @@ -48698,15 +49443,15 @@ }, "consequent": { "type": "StringLiteral", - "start": 4408, - "end": 4417, + "start": 4448, + "end": 4457, "loc": { "start": { - "line": 121, + "line": 122, "column": 61 }, "end": { - "line": 121, + "line": 122, "column": 70 } }, @@ -48718,15 +49463,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 4420, - "end": 4430, + "start": 4460, + "end": 4470, "loc": { "start": { - "line": 121, + "line": 122, "column": 73 }, "end": { - "line": 121, + "line": 122, "column": 83 } }, @@ -48741,15 +49486,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4368, - "end": 4385, + "start": 4408, + "end": 4425, "loc": { "start": { - "line": 121, + "line": 122, "column": 21 }, "end": { - "line": 121, + "line": 122, "column": 38 } }, @@ -48761,15 +49506,15 @@ }, { "type": "TemplateElement", - "start": 4431, - "end": 4431, + "start": 4471, + "end": 4471, "loc": { "start": { - "line": 121, + "line": 122, "column": 84 }, "end": { - "line": 121, + "line": 122, "column": 84 } }, @@ -48786,57 +49531,57 @@ }, { "type": "ExpressionStatement", - "start": 4447, - "end": 4524, + "start": 4487, + "end": 4564, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 89 } }, "expression": { "type": "CallExpression", - "start": 4447, - "end": 4523, + "start": 4487, + "end": 4563, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 88 } }, "callee": { "type": "MemberExpression", - "start": 4447, - "end": 4454, + "start": 4487, + "end": 4494, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 19 } }, "object": { "type": "Identifier", - "start": 4447, - "end": 4450, + "start": 4487, + "end": 4490, "loc": { "start": { - "line": 122, + "line": 123, "column": 12 }, "end": { - "line": 122, + "line": 123, "column": 15 }, "identifierName": "ctx" @@ -48845,15 +49590,15 @@ }, "property": { "type": "Identifier", - "start": 4451, - "end": 4454, + "start": 4491, + "end": 4494, "loc": { "start": { - "line": 122, + "line": 123, "column": 16 }, "end": { - "line": 122, + "line": 123, "column": 19 }, "identifierName": "log" @@ -48865,58 +49610,58 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4455, - "end": 4522, + "start": 4495, + "end": 4562, "loc": { "start": { - "line": 122, + "line": 123, "column": 20 }, "end": { - "line": 122, + "line": 123, "column": 87 } }, "expressions": [ { "type": "ConditionalExpression", - "start": 4476, - "end": 4520, + "start": 4516, + "end": 4560, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 85 } }, "test": { "type": "MemberExpression", - "start": 4476, - "end": 4495, + "start": 4516, + "end": 4535, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 60 } }, "object": { "type": "Identifier", - "start": 4476, - "end": 4479, + "start": 4516, + "end": 4519, "loc": { "start": { - "line": 122, + "line": 123, "column": 41 }, "end": { - "line": 122, + "line": 123, "column": 44 }, "identifierName": "ctx" @@ -48925,15 +49670,15 @@ }, "property": { "type": "Identifier", - "start": 4480, - "end": 4495, + "start": 4520, + "end": 4535, "loc": { "start": { - "line": 122, + "line": 123, "column": 45 }, "end": { - "line": 122, + "line": 123, "column": 60 }, "identifierName": "includeTextures" @@ -48944,15 +49689,15 @@ }, "consequent": { "type": "StringLiteral", - "start": 4498, - "end": 4507, + "start": 4538, + "end": 4547, "loc": { "start": { - "line": 122, + "line": 123, "column": 63 }, "end": { - "line": 122, + "line": 123, "column": 72 } }, @@ -48964,15 +49709,15 @@ }, "alternate": { "type": "StringLiteral", - "start": 4510, - "end": 4520, + "start": 4550, + "end": 4560, "loc": { "start": { - "line": 122, + "line": 123, "column": 75 }, "end": { - "line": 122, + "line": 123, "column": 85 } }, @@ -48987,15 +49732,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4456, - "end": 4474, + "start": 4496, + "end": 4514, "loc": { "start": { - "line": 122, + "line": 123, "column": 21 }, "end": { - "line": 122, + "line": 123, "column": 39 } }, @@ -49007,15 +49752,15 @@ }, { "type": "TemplateElement", - "start": 4521, - "end": 4521, + "start": 4561, + "end": 4561, "loc": { "start": { - "line": 122, + "line": 123, "column": 86 }, "end": { - "line": 122, + "line": 123, "column": 86 } }, @@ -49032,43 +49777,43 @@ }, { "type": "IfStatement", - "start": 4538, - "end": 4614, + "start": 4578, + "end": 4654, "loc": { "start": { - "line": 124, + "line": 125, "column": 12 }, "end": { - "line": 126, + "line": 127, "column": 13 } }, "test": { "type": "MemberExpression", - "start": 4542, - "end": 4561, + "start": 4582, + "end": 4601, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 35 } }, "object": { "type": "Identifier", - "start": 4542, - "end": 4545, + "start": 4582, + "end": 4585, "loc": { "start": { - "line": 124, + "line": 125, "column": 16 }, "end": { - "line": 124, + "line": 125, "column": 19 }, "identifierName": "ctx" @@ -49077,15 +49822,15 @@ }, "property": { "type": "Identifier", - "start": 4546, - "end": 4561, + "start": 4586, + "end": 4601, "loc": { "start": { - "line": 124, + "line": 125, "column": 20 }, "end": { - "line": 124, + "line": 125, "column": 35 }, "identifierName": "includeTextures" @@ -49096,58 +49841,58 @@ }, "consequent": { "type": "BlockStatement", - "start": 4563, - "end": 4614, + "start": 4603, + "end": 4654, "loc": { "start": { - "line": 124, + "line": 125, "column": 37 }, "end": { - "line": 126, + "line": 127, "column": 13 } }, "body": [ { "type": "ExpressionStatement", - "start": 4581, - "end": 4600, + "start": 4621, + "end": 4640, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4581, - "end": 4599, + "start": 4621, + "end": 4639, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 34 } }, "callee": { "type": "Identifier", - "start": 4581, - "end": 4594, + "start": 4621, + "end": 4634, "loc": { "start": { - "line": 125, + "line": 126, "column": 16 }, "end": { - "line": 125, + "line": 126, "column": 29 }, "identifierName": "parseTextures" @@ -49157,15 +49902,15 @@ "arguments": [ { "type": "Identifier", - "start": 4595, - "end": 4598, + "start": 4635, + "end": 4638, "loc": { "start": { - "line": 125, + "line": 126, "column": 30 }, "end": { - "line": 125, + "line": 126, "column": 33 }, "identifierName": "ctx" @@ -49182,43 +49927,43 @@ }, { "type": "ExpressionStatement", - "start": 4627, - "end": 4647, + "start": 4667, + "end": 4687, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 32 } }, "expression": { "type": "CallExpression", - "start": 4627, - "end": 4646, + "start": 4667, + "end": 4686, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 31 } }, "callee": { "type": "Identifier", - "start": 4627, - "end": 4641, + "start": 4667, + "end": 4681, "loc": { "start": { - "line": 127, + "line": 128, "column": 12 }, "end": { - "line": 127, + "line": 128, "column": 26 }, "identifierName": "parseMaterials" @@ -49228,15 +49973,15 @@ "arguments": [ { "type": "Identifier", - "start": 4642, - "end": 4645, + "start": 4682, + "end": 4685, "loc": { "start": { - "line": 127, + "line": 128, "column": 27 }, "end": { - "line": 127, + "line": 128, "column": 30 }, "identifierName": "ctx" @@ -49248,43 +49993,43 @@ }, { "type": "ExpressionStatement", - "start": 4660, - "end": 4683, + "start": 4700, + "end": 4723, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 35 } }, "expression": { "type": "CallExpression", - "start": 4660, - "end": 4682, + "start": 4700, + "end": 4722, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 34 } }, "callee": { "type": "Identifier", - "start": 4660, - "end": 4677, + "start": 4700, + "end": 4717, "loc": { "start": { - "line": 128, + "line": 129, "column": 12 }, "end": { - "line": 128, + "line": 129, "column": 29 }, "identifierName": "parseDefaultScene" @@ -49294,15 +50039,15 @@ "arguments": [ { "type": "Identifier", - "start": 4678, - "end": 4681, + "start": 4718, + "end": 4721, "loc": { "start": { - "line": 128, + "line": 129, "column": 30 }, "end": { - "line": 128, + "line": 129, "column": 33 }, "identifierName": "ctx" @@ -49314,43 +50059,43 @@ }, { "type": "ExpressionStatement", - "start": 4697, - "end": 4707, + "start": 4737, + "end": 4747, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 22 } }, "expression": { "type": "CallExpression", - "start": 4697, - "end": 4706, + "start": 4737, + "end": 4746, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 21 } }, "callee": { "type": "Identifier", - "start": 4697, - "end": 4704, + "start": 4737, + "end": 4744, "loc": { "start": { - "line": 130, + "line": 131, "column": 12 }, "end": { - "line": 130, + "line": 131, "column": 19 }, "identifierName": "resolve" @@ -49366,15 +50111,15 @@ }, { "type": "ArrowFunctionExpression", - "start": 4720, - "end": 4800, + "start": 4760, + "end": 4840, "loc": { "start": { - "line": 132, + "line": 133, "column": 11 }, "end": { - "line": 134, + "line": 135, "column": 9 } }, @@ -49385,15 +50130,15 @@ "params": [ { "type": "Identifier", - "start": 4721, - "end": 4727, + "start": 4761, + "end": 4767, "loc": { "start": { - "line": 132, + "line": 133, "column": 12 }, "end": { - "line": 132, + "line": 133, "column": 18 }, "identifierName": "errMsg" @@ -49403,58 +50148,58 @@ ], "body": { "type": "BlockStatement", - "start": 4732, - "end": 4800, + "start": 4772, + "end": 4840, "loc": { "start": { - "line": 132, + "line": 133, "column": 23 }, "end": { - "line": 134, + "line": 135, "column": 9 } }, "body": [ { "type": "ExpressionStatement", - "start": 4746, - "end": 4790, + "start": 4786, + "end": 4830, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 56 } }, "expression": { "type": "CallExpression", - "start": 4746, - "end": 4789, + "start": 4786, + "end": 4829, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 55 } }, "callee": { "type": "Identifier", - "start": 4746, - "end": 4752, + "start": 4786, + "end": 4792, "loc": { "start": { - "line": 133, + "line": 134, "column": 12 }, "end": { - "line": 133, + "line": 134, "column": 18 }, "identifierName": "reject" @@ -49464,30 +50209,30 @@ "arguments": [ { "type": "TemplateLiteral", - "start": 4753, - "end": 4788, + "start": 4793, + "end": 4828, "loc": { "start": { - "line": 133, + "line": 134, "column": 19 }, "end": { - "line": 133, + "line": 134, "column": 54 } }, "expressions": [ { "type": "Identifier", - "start": 4780, - "end": 4786, + "start": 4820, + "end": 4826, "loc": { "start": { - "line": 133, + "line": 134, "column": 46 }, "end": { - "line": 133, + "line": 134, "column": 52 }, "identifierName": "errMsg" @@ -49498,15 +50243,15 @@ "quasis": [ { "type": "TemplateElement", - "start": 4754, - "end": 4778, + "start": 4794, + "end": 4818, "loc": { "start": { - "line": 133, + "line": 134, "column": 20 }, "end": { - "line": 133, + "line": 134, "column": 44 } }, @@ -49518,15 +50263,15 @@ }, { "type": "TemplateElement", - "start": 4787, - "end": 4787, + "start": 4827, + "end": 4827, "loc": { "start": { - "line": 133, + "line": 134, "column": 53 }, "end": { - "line": 133, + "line": 134, "column": 53 } }, @@ -49578,292 +50323,1440 @@ ], "trailingComments": [] }, - "specifiers": null, - "source": null, - "leadingComments": null + "specifiers": null, + "source": null, + "leadingComments": null + } + ], + "directives": [] + }, + "comments": [ + { + "type": "CommentBlock", + "value": "*\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n ", + "start": 440, + "end": 2327, + "loc": { + "start": { + "line": 18, + "column": 0 + }, + "end": { + "line": 59, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " determined in testIfNodesHaveNames()", + "start": 3637, + "end": 3676, + "loc": { + "start": { + "line": 103, + "column": 39 + }, + "end": { + "line": 103, + "column": 78 + } + } + }, + { + "type": "CommentLine", + "value": " encoding: \"sRGB\"", + "start": 7471, + "end": 7494, + "loc": { + "start": { + "line": 240, + "column": 8 + }, + "end": { + "line": 240, + "column": 31 + } + } + }, + { + "type": "CommentLine", + "value": " textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;", + "start": 9519, + "end": 9615, + "loc": { + "start": { + "line": 289, + "column": 16 + }, + "end": { + "line": 289, + "column": 112 + } + } + }, + { + "type": "CommentLine", + "value": " Substitute RGBA for material, to use fast flat shading instead", + "start": 10497, + "end": 10562, + "loc": { + "start": { + "line": 310, + "column": 50 + }, + "end": { + "line": 310, + "column": 115 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", + "start": 15142, + "end": 15311, + "loc": { + "start": { + "line": 449, + "column": 0 + }, + "end": { + "line": 452, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", + "start": 16345, + "end": 16697, + "loc": { + "start": { + "line": 488, + "column": 0 + }, + "end": { + "line": 495, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " For when there are no nodes with names", + "start": 18125, + "end": 18166, + "loc": { + "start": { + "line": 532, + "column": 32 + }, + "end": { + "line": 532, + "column": 73 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", + "start": 18655, + "end": 18835, + "loc": { + "start": { + "line": 548, + "column": 0 + }, + "end": { + "line": 554, + "column": 3 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", + "start": 20157, + "end": 20424, + "loc": { + "start": { + "line": 606, + "column": 0 + }, + "end": { + "line": 613, + "column": 3 + } + } + }, + { + "type": "CommentLine", + "value": " POINTS", + "start": 21088, + "end": 21097, + "loc": { + "start": { + "line": 633, + "column": 32 + }, + "end": { + "line": 633, + "column": 41 + } + } + }, + { + "type": "CommentLine", + "value": " LINES", + "start": 21231, + "end": 21239, + "loc": { + "start": { + "line": 636, + "column": 32 + }, + "end": { + "line": 636, + "column": 40 + } + } + }, + { + "type": "CommentLine", + "value": " LINE_LOOP", + "start": 21372, + "end": 21384, + "loc": { + "start": { + "line": 639, + "column": 32 + }, + "end": { + "line": 639, + "column": 44 + } + } + }, + { + "type": "CommentLine", + "value": " LINE_STRIP", + "start": 21521, + "end": 21534, + "loc": { + "start": { + "line": 642, + "column": 32 + }, + "end": { + "line": 642, + "column": 45 + } + } + }, + { + "type": "CommentLine", + "value": " TRIANGLES", + "start": 21672, + "end": 21684, + "loc": { + "start": { + "line": 645, + "column": 32 + }, + "end": { + "line": 645, + "column": 44 + } + } + }, + { + "type": "CommentLine", + "value": " TRIANGLE_STRIP", + "start": 21821, + "end": 21838, + "loc": { + "start": { + "line": 648, + "column": 32 + }, + "end": { + "line": 648, + "column": 49 + } + } + }, + { + "type": "CommentLine", + "value": " TRIANGLE_FAN", + "start": 21980, + "end": 21995, + "loc": { + "start": { + "line": 651, + "column": 32 + }, + "end": { + "line": 651, + "column": 47 + } + } + } + ], + "tokens": [ + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 0, + "end": 6, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 7, + "end": 8, + "loc": { + "start": { + "line": 1, + "column": 7 + }, + "end": { + "line": 1, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "utils", + "start": 8, + "end": 13, + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 13 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 13, + "end": 14, + "loc": { + "start": { + "line": 1, + "column": 13 + }, + "end": { + "line": 1, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 15, + "end": 19, + "loc": { + "start": { + "line": 1, + "column": 15 + }, + "end": { + "line": 1, + "column": 19 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../XKTModel/lib/utils.js", + "start": 20, + "end": 46, + "loc": { + "start": { + "line": 1, + "column": 20 + }, + "end": { + "line": 1, + "column": 46 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 46, + "end": 47, + "loc": { + "start": { + "line": 1, + "column": 46 + }, + "end": { + "line": 1, + "column": 47 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 48, + "end": 54, + "loc": { + "start": { + "line": 2, + "column": 0 + }, + "end": { + "line": 2, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 55, + "end": 56, + "loc": { + "start": { + "line": 2, + "column": 7 + }, + "end": { + "line": 2, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "math", + "start": 56, + "end": 60, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 12 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 60, + "end": 61, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 13 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 62, + "end": 66, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 18 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "../lib/math.js", + "start": 67, + "end": 83, + "loc": { + "start": { + "line": 2, + "column": 19 + }, + "end": { + "line": 2, + "column": 35 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 83, + "end": 84, + "loc": { + "start": { + "line": 2, + "column": 35 + }, + "end": { + "line": 2, + "column": 36 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 86, + "end": 92, + "loc": { + "start": { + "line": 4, + "column": 0 + }, + "end": { + "line": 4, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 93, + "end": 94, + "loc": { + "start": { + "line": 4, + "column": 7 + }, + "end": { + "line": 4, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "parse", + "start": 94, + "end": 99, + "loc": { + "start": { + "line": 4, + "column": 8 + }, + "end": { + "line": 4, + "column": 13 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 99, + "end": 100, + "loc": { + "start": { + "line": 4, + "column": 13 + }, + "end": { + "line": 4, + "column": 14 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 101, + "end": 105, + "loc": { + "start": { + "line": 4, + "column": 15 + }, + "end": { + "line": 4, + "column": 19 + } + } + }, + { + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@loaders.gl/core", + "start": 106, + "end": 124, + "loc": { + "start": { + "line": 4, + "column": 20 + }, + "end": { + "line": 4, + "column": 38 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 124, + "end": 125, + "loc": { + "start": { + "line": 4, + "column": 38 + }, + "end": { + "line": 4, + "column": 39 + } + } + }, + { + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 126, + "end": 132, + "loc": { + "start": { + "line": 5, + "column": 0 + }, + "end": { + "line": 5, + "column": 6 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 133, + "end": 134, + "loc": { + "start": { + "line": 5, + "column": 7 + }, + "end": { + "line": 5, + "column": 8 + } } - ], - "directives": [] - }, - "comments": [ + }, { - "type": "CommentBlock", - "value": "*\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n ", - "start": 440, - "end": 2327, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "GLTFLoader", + "start": 134, + "end": 144, "loc": { "start": { - "line": 18, - "column": 0 + "line": 5, + "column": 8 }, "end": { - "line": 59, - "column": 3 + "line": 5, + "column": 18 } } }, { - "type": "CommentLine", - "value": " determined in testIfNodesHaveNames()", - "start": 3637, - "end": 3676, + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 144, + "end": 145, "loc": { "start": { - "line": 103, - "column": 39 + "line": 5, + "column": 18 }, "end": { - "line": 103, - "column": 78 + "line": 5, + "column": 19 } } }, { - "type": "CommentLine", - "value": " encoding: \"sRGB\"", - "start": 7431, - "end": 7454, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "from", + "start": 146, + "end": 150, "loc": { "start": { - "line": 239, - "column": 8 + "line": 5, + "column": 20 }, "end": { - "line": 239, - "column": 31 + "line": 5, + "column": 24 } } }, { - "type": "CommentLine", - "value": " textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;", - "start": 9479, - "end": 9575, + "type": { + "label": "string", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "@loaders.gl/gltf", + "start": 151, + "end": 169, "loc": { "start": { - "line": 288, - "column": 16 + "line": 5, + "column": 25 }, "end": { - "line": 288, - "column": 112 + "line": 5, + "column": 43 } } }, { - "type": "CommentLine", - "value": " Substitute RGBA for material, to use fast flat shading instead", - "start": 10457, - "end": 10522, + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 169, + "end": 170, "loc": { "start": { - "line": 309, - "column": 50 + "line": 5, + "column": 43 }, "end": { - "line": 309, - "column": 115 + "line": 5, + "column": 44 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", - "start": 15094, - "end": 15263, + "type": { + "label": "import", + "keyword": "import", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "import", + "start": 171, + "end": 177, "loc": { "start": { - "line": 448, + "line": 6, "column": 0 }, "end": { - "line": 451, - "column": 3 + "line": 6, + "column": 6 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", - "start": 16297, - "end": 16649, + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 178, + "end": 179, "loc": { "start": { - "line": 487, - "column": 0 + "line": 6, + "column": 7 }, "end": { - "line": 494, - "column": 3 + "line": 6, + "column": 8 } } }, { - "type": "CommentLine", - "value": " For when there are no nodes with names", - "start": 18077, - "end": 18118, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ClampToEdgeWrapping", + "start": 184, + "end": 203, "loc": { "start": { - "line": 531, - "column": 32 + "line": 7, + "column": 4 }, "end": { - "line": 531, - "column": 73 + "line": 7, + "column": 23 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", - "start": 18607, - "end": 18787, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 203, + "end": 204, "loc": { "start": { - "line": 547, - "column": 0 + "line": 7, + "column": 23 }, "end": { - "line": 553, - "column": 3 + "line": 7, + "column": 24 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", - "start": 19852, - "end": 20119, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearFilter", + "start": 209, + "end": 221, "loc": { "start": { - "line": 594, - "column": 0 + "line": 8, + "column": 4 }, "end": { - "line": 601, - "column": 3 + "line": 8, + "column": 16 } } }, { - "type": "CommentLine", - "value": " POINTS", - "start": 20792, - "end": 20801, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 221, + "end": 222, "loc": { "start": { - "line": 621, - "column": 32 + "line": 8, + "column": 16 }, "end": { - "line": 621, - "column": 41 + "line": 8, + "column": 17 } } }, { - "type": "CommentLine", - "value": " LINES", - "start": 20935, - "end": 20943, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearMipMapLinearFilter", + "start": 227, + "end": 251, "loc": { "start": { - "line": 624, - "column": 32 + "line": 9, + "column": 4 }, "end": { - "line": 624, - "column": 40 + "line": 9, + "column": 28 } } }, { - "type": "CommentLine", - "value": " LINE_LOOP", - "start": 21076, - "end": 21088, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 251, + "end": 252, "loc": { "start": { - "line": 627, - "column": 32 + "line": 9, + "column": 28 }, "end": { - "line": 627, - "column": 44 + "line": 9, + "column": 29 } } }, { - "type": "CommentLine", - "value": " LINE_STRIP", - "start": 21225, - "end": 21238, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "LinearMipMapNearestFilter", + "start": 257, + "end": 282, "loc": { "start": { - "line": 630, - "column": 32 + "line": 10, + "column": 4 }, "end": { - "line": 630, - "column": 45 + "line": 10, + "column": 29 } } }, { - "type": "CommentLine", - "value": " TRIANGLES", - "start": 21376, - "end": 21388, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 282, + "end": 283, "loc": { "start": { - "line": 633, - "column": 32 + "line": 10, + "column": 29 }, "end": { - "line": 633, - "column": 44 + "line": 10, + "column": 30 } } }, { - "type": "CommentLine", - "value": " TRIANGLE_STRIP", - "start": 21525, - "end": 21542, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "MirroredRepeatWrapping", + "start": 288, + "end": 310, "loc": { "start": { - "line": 636, - "column": 32 + "line": 11, + "column": 4 }, "end": { - "line": 636, - "column": 49 + "line": 11, + "column": 26 } } }, { - "type": "CommentLine", - "value": " TRIANGLE_FAN", - "start": 21684, - "end": 21699, + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 310, + "end": 311, "loc": { "start": { - "line": 639, - "column": 32 + "line": 11, + "column": 26 }, "end": { - "line": 639, - "column": 47 + "line": 11, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "NearestFilter", + "start": 316, + "end": 329, + "loc": { + "start": { + "line": 12, + "column": 4 + }, + "end": { + "line": 12, + "column": 17 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 329, + "end": 330, + "loc": { + "start": { + "line": 12, + "column": 17 + }, + "end": { + "line": 12, + "column": 18 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "NearestMipMapLinearFilter", + "start": 335, + "end": 360, + "loc": { + "start": { + "line": 13, + "column": 4 + }, + "end": { + "line": 13, + "column": 29 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 360, + "end": 361, + "loc": { + "start": { + "line": 13, + "column": 29 + }, + "end": { + "line": 13, + "column": 30 } } - } - ], - "tokens": [ + }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -49871,45 +51764,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 0, - "end": 6, + "value": "NearestMipMapNearestFilter", + "start": 366, + "end": 392, "loc": { "start": { - "line": 1, - "column": 0 + "line": 14, + "column": 4 }, "end": { - "line": 1, - "column": 6 + "line": 14, + "column": 30 } } }, { "type": { - "label": "{", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7, - "end": 8, + "start": 392, + "end": 393, "loc": { "start": { - "line": 1, - "column": 7 + "line": 14, + "column": 30 }, "end": { - "line": 1, - "column": 8 + "line": 14, + "column": 31 } } }, @@ -49925,17 +51818,17 @@ "postfix": false, "binop": null }, - "value": "utils", - "start": 8, - "end": 13, + "value": "RepeatWrapping", + "start": 398, + "end": 412, "loc": { "start": { - "line": 1, - "column": 8 + "line": 15, + "column": 4 }, "end": { - "line": 1, - "column": 13 + "line": 15, + "column": 18 } } }, @@ -49951,16 +51844,16 @@ "postfix": false, "binop": null }, - "start": 13, - "end": 14, + "start": 413, + "end": 414, "loc": { "start": { - "line": 1, - "column": 13 + "line": 16, + "column": 0 }, "end": { - "line": 1, - "column": 14 + "line": 16, + "column": 1 } } }, @@ -49977,16 +51870,16 @@ "binop": null }, "value": "from", - "start": 15, - "end": 19, + "start": 415, + "end": 419, "loc": { "start": { - "line": 1, - "column": 15 + "line": 16, + "column": 2 }, "end": { - "line": 1, - "column": 19 + "line": 16, + "column": 6 } } }, @@ -50003,17 +51896,17 @@ "binop": null, "updateContext": null }, - "value": "../XKTModel/lib/utils.js", - "start": 20, - "end": 46, + "value": "../constants.js", + "start": 420, + "end": 437, "loc": { "start": { - "line": 1, - "column": 20 + "line": 16, + "column": 7 }, "end": { - "line": 1, - "column": 46 + "line": 16, + "column": 24 } } }, @@ -50030,51 +51923,40 @@ "binop": null, "updateContext": null }, - "start": 46, - "end": 47, + "start": 437, + "end": 438, "loc": { "start": { - "line": 1, - "column": 46 + "line": 16, + "column": 24 }, "end": { - "line": 1, - "column": 47 + "line": 16, + "column": 25 } } }, { - "type": { - "label": "import", - "keyword": "import", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "import", - "start": 48, - "end": 54, + "type": "CommentBlock", + "value": "*\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n ", + "start": 440, + "end": 2327, "loc": { "start": { - "line": 2, + "line": 18, "column": 0 }, "end": { - "line": 2, - "column": 6 + "line": 59, + "column": 3 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "function", + "keyword": "function", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -50083,15 +51965,16 @@ "postfix": false, "binop": null }, - "start": 55, - "end": 56, + "value": "function", + "start": 2328, + "end": 2336, "loc": { "start": { - "line": 2, - "column": 7 + "line": 60, + "column": 0 }, "end": { - "line": 2, + "line": 60, "column": 8 } } @@ -50108,25 +51991,25 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 56, - "end": 60, + "value": "parseGLTFIntoXKTModel", + "start": 2337, + "end": 2358, "loc": { "start": { - "line": 2, - "column": 8 + "line": 60, + "column": 9 }, "end": { - "line": 2, - "column": 12 + "line": 60, + "column": 30 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50134,23 +52017,23 @@ "postfix": false, "binop": null }, - "start": 60, - "end": 61, + "start": 2358, + "end": 2359, "loc": { "start": { - "line": 2, - "column": 12 + "line": 60, + "column": 30 }, "end": { - "line": 2, - "column": 13 + "line": 60, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -50159,23 +52042,22 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 62, - "end": 66, + "start": 2359, + "end": 2360, "loc": { "start": { - "line": 2, - "column": 14 + "line": 60, + "column": 31 }, "end": { - "line": 2, - "column": 18 + "line": 60, + "column": 32 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50183,26 +52065,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "../lib/math.js", - "start": 67, - "end": 83, + "value": "data", + "start": 2396, + "end": 2400, "loc": { "start": { - "line": 2, - "column": 19 + "line": 61, + "column": 35 }, "end": { - "line": 2, - "column": 35 + "line": 61, + "column": 39 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -50213,23 +52094,22 @@ "binop": null, "updateContext": null }, - "start": 83, - "end": 84, + "start": 2400, + "end": 2401, "loc": { "start": { - "line": 2, - "column": 35 + "line": 61, + "column": 39 }, "end": { - "line": 2, - "column": 36 + "line": 61, + "column": 40 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50237,45 +52117,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "import", - "start": 86, - "end": 92, + "value": "baseUri", + "start": 2437, + "end": 2444, "loc": { "start": { - "line": 4, - "column": 0 + "line": 62, + "column": 35 }, "end": { - "line": 4, - "column": 6 + "line": 62, + "column": 42 } } }, { "type": { - "label": "{", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 93, - "end": 94, + "start": 2444, + "end": 2445, "loc": { "start": { - "line": 4, - "column": 7 + "line": 62, + "column": 42 }, "end": { - "line": 4, - "column": 8 + "line": 62, + "column": 43 } } }, @@ -50291,42 +52171,43 @@ "postfix": false, "binop": null }, - "value": "parse", - "start": 94, - "end": 99, + "value": "xktModel", + "start": 2481, + "end": 2489, "loc": { "start": { - "line": 4, - "column": 8 + "line": 63, + "column": 35 }, "end": { - "line": 4, - "column": 13 + "line": 63, + "column": 43 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 99, - "end": 100, + "start": 2489, + "end": 2490, "loc": { "start": { - "line": 4, - "column": 13 + "line": 63, + "column": 43 }, "end": { - "line": 4, - "column": 14 + "line": 63, + "column": 44 } } }, @@ -50342,25 +52223,25 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 101, - "end": 105, + "value": "metaModelData", + "start": 2526, + "end": 2539, "loc": { "start": { - "line": 4, - "column": 15 + "line": 64, + "column": 35 }, "end": { - "line": 4, - "column": 19 + "line": 64, + "column": 48 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50369,50 +52250,76 @@ "binop": null, "updateContext": null }, - "value": "@loaders.gl/core", - "start": 106, - "end": 124, + "start": 2539, + "end": 2540, "loc": { "start": { - "line": 4, - "column": 20 + "line": 64, + "column": 48 }, "end": { - "line": 4, - "column": 38 + "line": 64, + "column": 49 } } }, { "type": { - "label": ";", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "includeTextures", + "start": 2576, + "end": 2591, + "loc": { + "start": { + "line": 65, + "column": 35 + }, + "end": { + "line": 65, + "column": 50 + } + } + }, + { + "type": { + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 124, - "end": 125, + "value": "=", + "start": 2592, + "end": 2593, "loc": { "start": { - "line": 4, - "column": 38 + "line": 65, + "column": 51 }, "end": { - "line": 4, - "column": 39 + "line": 65, + "column": 52 } } }, { "type": { - "label": "import", - "keyword": "import", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50423,42 +52330,43 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 126, - "end": 132, + "value": "true", + "start": 2594, + "end": 2598, "loc": { "start": { - "line": 5, - "column": 0 + "line": 65, + "column": 53 }, "end": { - "line": 5, - "column": 6 + "line": 65, + "column": 57 } } }, { "type": { - "label": "{", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 133, - "end": 134, + "start": 2598, + "end": 2599, "loc": { "start": { - "line": 5, - "column": 7 + "line": 65, + "column": 57 }, "end": { - "line": 5, - "column": 8 + "line": 65, + "column": 58 } } }, @@ -50474,48 +52382,51 @@ "postfix": false, "binop": null }, - "value": "GLTFLoader", - "start": 134, - "end": 144, + "value": "includeNormals", + "start": 2635, + "end": 2649, "loc": { "start": { - "line": 5, - "column": 8 + "line": 66, + "column": 35 }, "end": { - "line": 5, - "column": 18 + "line": 66, + "column": 49 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 144, - "end": 145, + "value": "=", + "start": 2650, + "end": 2651, "loc": { "start": { - "line": 5, - "column": 18 + "line": 66, + "column": 50 }, "end": { - "line": 5, - "column": 19 + "line": 66, + "column": 51 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50523,27 +52434,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "from", - "start": 146, - "end": 150, + "value": "true", + "start": 2652, + "end": 2656, "loc": { "start": { - "line": 5, - "column": 20 + "line": 66, + "column": 52 }, "end": { - "line": 5, - "column": 24 + "line": 66, + "column": 56 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50552,52 +52464,50 @@ "binop": null, "updateContext": null }, - "value": "@loaders.gl/gltf", - "start": 151, - "end": 169, + "start": 2656, + "end": 2657, "loc": { "start": { - "line": 5, - "column": 25 + "line": 66, + "column": 56 }, "end": { - "line": 5, - "column": 43 + "line": 66, + "column": 57 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 169, - "end": 170, + "value": "getAttachment", + "start": 2693, + "end": 2706, "loc": { "start": { - "line": 5, - "column": 43 + "line": 67, + "column": 35 }, "end": { - "line": 5, - "column": 44 + "line": 67, + "column": 48 } } }, { "type": { - "label": "import", - "keyword": "import", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50606,24 +52516,23 @@ "binop": null, "updateContext": null }, - "value": "import", - "start": 171, - "end": 177, + "start": 2706, + "end": 2707, "loc": { "start": { - "line": 6, - "column": 0 + "line": 67, + "column": 48 }, "end": { - "line": 6, - "column": 6 + "line": 67, + "column": 49 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -50632,76 +52541,77 @@ "postfix": false, "binop": null }, - "start": 178, - "end": 179, + "value": "stats", + "start": 2743, + "end": 2748, "loc": { "start": { - "line": 6, - "column": 7 + "line": 68, + "column": 35 }, "end": { - "line": 6, - "column": 8 + "line": 68, + "column": 40 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ClampToEdgeWrapping", - "start": 184, - "end": 203, + "value": "=", + "start": 2749, + "end": 2750, "loc": { "start": { - "line": 7, - "column": 4 + "line": 68, + "column": 41 }, "end": { - "line": 7, - "column": 23 + "line": 68, + "column": 42 } } }, { "type": { - "label": ",", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 203, - "end": 204, + "start": 2751, + "end": 2752, "loc": { "start": { - "line": 7, - "column": 23 + "line": 68, + "column": 43 }, "end": { - "line": 7, - "column": 24 + "line": 68, + "column": 44 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50709,17 +52619,16 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 209, - "end": 221, + "start": 2752, + "end": 2753, "loc": { "start": { - "line": 8, - "column": 4 + "line": 68, + "column": 44 }, "end": { - "line": 8, - "column": 16 + "line": 68, + "column": 45 } } }, @@ -50736,16 +52645,16 @@ "binop": null, "updateContext": null }, - "start": 221, - "end": 222, + "start": 2753, + "end": 2754, "loc": { "start": { - "line": 8, - "column": 16 + "line": 68, + "column": 45 }, "end": { - "line": 8, - "column": 17 + "line": 68, + "column": 46 } } }, @@ -50761,51 +52670,50 @@ "postfix": false, "binop": null }, - "value": "LinearMipMapLinearFilter", - "start": 227, - "end": 251, + "value": "log", + "start": 2790, + "end": 2793, "loc": { "start": { - "line": 9, - "column": 4 + "line": 69, + "column": 35 }, "end": { - "line": 9, - "column": 28 + "line": 69, + "column": 38 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 251, - "end": 252, + "start": 2825, + "end": 2826, "loc": { "start": { - "line": 9, - "column": 28 + "line": 70, + "column": 31 }, "end": { - "line": 9, - "column": 29 + "line": 70, + "column": 32 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50813,77 +52721,78 @@ "postfix": false, "binop": null }, - "value": "LinearMipMapNearestFilter", - "start": 257, - "end": 282, + "start": 2826, + "end": 2827, "loc": { "start": { - "line": 10, - "column": 4 + "line": 70, + "column": 32 }, "end": { - "line": 10, - "column": 29 + "line": 70, + "column": 33 } } }, { "type": { - "label": ",", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 282, - "end": 283, + "start": 2828, + "end": 2829, "loc": { "start": { - "line": 10, - "column": 29 + "line": 70, + "column": 34 }, "end": { - "line": 10, - "column": 30 + "line": 70, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "MirroredRepeatWrapping", - "start": 288, - "end": 310, + "value": "return", + "start": 2835, + "end": 2841, "loc": { "start": { - "line": 11, + "line": 72, "column": 4 }, "end": { - "line": 11, - "column": 26 + "line": 72, + "column": 10 } } }, { "type": { - "label": ",", + "label": "new", + "keyword": "new", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -50892,16 +52801,17 @@ "binop": null, "updateContext": null }, - "start": 310, - "end": 311, + "value": "new", + "start": 2842, + "end": 2845, "loc": { "start": { - "line": 11, - "column": 26 + "line": 72, + "column": 11 }, "end": { - "line": 11, - "column": 27 + "line": 72, + "column": 14 } } }, @@ -50917,49 +52827,49 @@ "postfix": false, "binop": null }, - "value": "NearestFilter", - "start": 316, - "end": 329, + "value": "Promise", + "start": 2846, + "end": 2853, "loc": { "start": { - "line": 12, - "column": 4 + "line": 72, + "column": 15 }, "end": { - "line": 12, - "column": 17 + "line": 72, + "column": 22 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 329, - "end": 330, + "start": 2853, + "end": 2854, "loc": { "start": { - "line": 12, - "column": 17 + "line": 72, + "column": 22 }, "end": { - "line": 12, - "column": 18 + "line": 72, + "column": 23 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -50969,43 +52879,42 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapLinearFilter", - "start": 335, - "end": 360, + "value": "function", + "start": 2854, + "end": 2862, "loc": { "start": { - "line": 13, - "column": 4 + "line": 72, + "column": 23 }, "end": { - "line": 13, - "column": 29 + "line": 72, + "column": 31 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 360, - "end": 361, + "start": 2863, + "end": 2864, "loc": { "start": { - "line": 13, - "column": 29 + "line": 72, + "column": 32 }, "end": { - "line": 13, - "column": 30 + "line": 72, + "column": 33 } } }, @@ -51021,17 +52930,17 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapNearestFilter", - "start": 366, - "end": 392, + "value": "resolve", + "start": 2864, + "end": 2871, "loc": { "start": { - "line": 14, - "column": 4 + "line": 72, + "column": 33 }, "end": { - "line": 14, - "column": 30 + "line": 72, + "column": 40 } } }, @@ -51048,16 +52957,16 @@ "binop": null, "updateContext": null }, - "start": 392, - "end": 393, + "start": 2871, + "end": 2872, "loc": { "start": { - "line": 14, - "column": 30 + "line": 72, + "column": 40 }, "end": { - "line": 14, - "column": 31 + "line": 72, + "column": 41 } } }, @@ -51073,23 +52982,23 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 398, - "end": 412, + "value": "reject", + "start": 2873, + "end": 2879, "loc": { "start": { - "line": 15, - "column": 4 + "line": 72, + "column": 42 }, "end": { - "line": 15, - "column": 18 + "line": 72, + "column": 48 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -51099,23 +53008,23 @@ "postfix": false, "binop": null }, - "start": 413, - "end": 414, + "start": 2879, + "end": 2880, "loc": { "start": { - "line": 16, - "column": 0 + "line": 72, + "column": 48 }, "end": { - "line": 16, - "column": 1 + "line": 72, + "column": 49 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -51124,25 +53033,25 @@ "postfix": false, "binop": null }, - "value": "from", - "start": 415, - "end": 419, + "start": 2881, + "end": 2882, "loc": { "start": { - "line": 16, - "column": 2 + "line": 72, + "column": 50 }, "end": { - "line": 16, - "column": 6 + "line": 72, + "column": 51 } } }, { "type": { - "label": "string", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51151,86 +53060,69 @@ "binop": null, "updateContext": null }, - "value": "../constants.js", - "start": 420, - "end": 437, + "value": "if", + "start": 2892, + "end": 2894, "loc": { "start": { - "line": 16, - "column": 7 + "line": 74, + "column": 8 }, "end": { - "line": 16, - "column": 24 + "line": 74, + "column": 10 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 437, - "end": 438, - "loc": { - "start": { - "line": 16, - "column": 24 - }, - "end": { - "line": 16, - "column": 25 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n ", - "start": 440, - "end": 2327, + "start": 2895, + "end": 2896, "loc": { "start": { - "line": 18, - "column": 0 + "line": 74, + "column": 11 }, "end": { - "line": 59, - "column": 3 + "line": 74, + "column": 12 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 2328, - "end": 2336, + "value": "!", + "start": 2896, + "end": 2897, "loc": { "start": { - "line": 60, - "column": 0 + "line": 74, + "column": 12 }, "end": { - "line": 60, - "column": 8 + "line": 74, + "column": 13 } } }, @@ -51246,25 +53138,25 @@ "postfix": false, "binop": null }, - "value": "parseGLTFIntoXKTModel", - "start": 2337, - "end": 2358, + "value": "data", + "start": 2897, + "end": 2901, "loc": { "start": { - "line": 60, - "column": 9 + "line": 74, + "column": 13 }, "end": { - "line": 60, - "column": 30 + "line": 74, + "column": 17 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51272,16 +53164,16 @@ "postfix": false, "binop": null }, - "start": 2358, - "end": 2359, + "start": 2901, + "end": 2902, "loc": { "start": { - "line": 60, - "column": 30 + "line": 74, + "column": 17 }, "end": { - "line": 60, - "column": 31 + "line": 74, + "column": 18 } } }, @@ -51297,16 +53189,16 @@ "postfix": false, "binop": null }, - "start": 2359, - "end": 2360, + "start": 2903, + "end": 2904, "loc": { "start": { - "line": 60, - "column": 31 + "line": 74, + "column": 19 }, "end": { - "line": 60, - "column": 32 + "line": 74, + "column": 20 } } }, @@ -51314,58 +53206,32 @@ "type": { "label": "name", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "data", - "start": 2396, - "end": 2400, - "loc": { - "start": { - "line": 61, - "column": 35 - }, - "end": { - "line": 61, - "column": 39 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2400, - "end": 2401, + "value": "reject", + "start": 2917, + "end": 2923, "loc": { "start": { - "line": 61, - "column": 39 + "line": 75, + "column": 12 }, "end": { - "line": 61, - "column": 40 + "line": 75, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -51374,25 +53240,24 @@ "postfix": false, "binop": null }, - "value": "baseUri", - "start": 2437, - "end": 2444, + "start": 2923, + "end": 2924, "loc": { "start": { - "line": 62, - "column": 35 + "line": 75, + "column": 18 }, "end": { - "line": 62, - "column": 42 + "line": 75, + "column": 19 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51401,24 +53266,25 @@ "binop": null, "updateContext": null }, - "start": 2444, - "end": 2445, + "value": "Argument expected: data", + "start": 2924, + "end": 2949, "loc": { "start": { - "line": 62, - "column": 42 + "line": 75, + "column": 19 }, "end": { - "line": 62, - "column": 43 + "line": 75, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51426,23 +53292,22 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 2481, - "end": 2489, + "start": 2949, + "end": 2950, "loc": { "start": { - "line": 63, - "column": 35 + "line": 75, + "column": 44 }, "end": { - "line": 63, - "column": 43 + "line": 75, + "column": 45 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -51453,48 +53318,50 @@ "binop": null, "updateContext": null }, - "start": 2489, - "end": 2490, + "start": 2950, + "end": 2951, "loc": { "start": { - "line": 63, - "column": 43 + "line": 75, + "column": 45 }, "end": { - "line": 63, - "column": 44 + "line": 75, + "column": 46 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metaModelData", - "start": 2526, - "end": 2539, + "value": "return", + "start": 2964, + "end": 2970, "loc": { "start": { - "line": 64, - "column": 35 + "line": 76, + "column": 12 }, "end": { - "line": 64, - "column": 48 + "line": 76, + "column": 18 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -51505,24 +53372,24 @@ "binop": null, "updateContext": null }, - "start": 2539, - "end": 2540, + "start": 2970, + "end": 2971, "loc": { "start": { - "line": 64, - "column": 48 + "line": 76, + "column": 18 }, "end": { - "line": 64, - "column": 49 + "line": 76, + "column": 19 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51530,98 +53397,96 @@ "postfix": false, "binop": null }, - "value": "includeTextures", - "start": 2576, - "end": 2591, + "start": 2980, + "end": 2981, "loc": { "start": { - "line": 65, - "column": 35 + "line": 77, + "column": 8 }, "end": { - "line": 65, - "column": 50 + "line": 77, + "column": 9 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 2592, - "end": 2593, + "value": "if", + "start": 2991, + "end": 2993, "loc": { "start": { - "line": 65, - "column": 51 + "line": 79, + "column": 8 }, "end": { - "line": 65, - "column": 52 + "line": 79, + "column": 10 } } }, { "type": { - "label": "true", - "keyword": "true", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2594, - "end": 2598, + "start": 2994, + "end": 2995, "loc": { "start": { - "line": 65, - "column": 53 + "line": 79, + "column": 11 }, "end": { - "line": 65, - "column": 57 + "line": 79, + "column": 12 } } }, { "type": { - "label": ",", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 2598, - "end": 2599, + "value": "!", + "start": 2995, + "end": 2996, "loc": { "start": { - "line": 65, - "column": 57 + "line": 79, + "column": 12 }, "end": { - "line": 65, - "column": 58 + "line": 79, + "column": 13 } } }, @@ -51637,105 +53502,100 @@ "postfix": false, "binop": null }, - "value": "includeNormals", - "start": 2635, - "end": 2649, + "value": "xktModel", + "start": 2996, + "end": 3004, "loc": { "start": { - "line": 66, - "column": 35 + "line": 79, + "column": 13 }, "end": { - "line": 66, - "column": 49 + "line": 79, + "column": 21 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 2650, - "end": 2651, + "start": 3004, + "end": 3005, "loc": { "start": { - "line": 66, - "column": 50 + "line": 79, + "column": 21 }, "end": { - "line": 66, - "column": 51 + "line": 79, + "column": 22 } } }, { "type": { - "label": "true", - "keyword": "true", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 2652, - "end": 2656, + "start": 3006, + "end": 3007, "loc": { "start": { - "line": 66, - "column": 52 + "line": 79, + "column": 23 }, "end": { - "line": 66, - "column": 56 + "line": 79, + "column": 24 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2656, - "end": 2657, + "value": "reject", + "start": 3020, + "end": 3026, "loc": { "start": { - "line": 66, - "column": 56 + "line": 80, + "column": 12 }, "end": { - "line": 66, - "column": 57 + "line": 80, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -51744,25 +53604,24 @@ "postfix": false, "binop": null }, - "value": "getAttachment", - "start": 2693, - "end": 2706, + "start": 3026, + "end": 3027, "loc": { "start": { - "line": 67, - "column": 35 + "line": 80, + "column": 18 }, "end": { - "line": 67, - "column": 48 + "line": 80, + "column": 19 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51771,24 +53630,25 @@ "binop": null, "updateContext": null }, - "start": 2706, - "end": 2707, + "value": "Argument expected: xktModel", + "start": 3027, + "end": 3056, "loc": { "start": { - "line": 67, - "column": 48 + "line": 80, + "column": 19 }, "end": { - "line": 67, - "column": 49 + "line": 80, + "column": 48 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51796,120 +53656,121 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 2743, - "end": 2748, + "start": 3056, + "end": 3057, "loc": { "start": { - "line": 68, - "column": 35 + "line": 80, + "column": 48 }, "end": { - "line": 68, - "column": 40 + "line": 80, + "column": 49 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 2749, - "end": 2750, + "start": 3057, + "end": 3058, "loc": { "start": { - "line": 68, - "column": 41 + "line": 80, + "column": 49 }, "end": { - "line": 68, - "column": 42 + "line": 80, + "column": 50 } } }, { "type": { - "label": "{", + "label": "return", + "keyword": "return", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2751, - "end": 2752, + "value": "return", + "start": 3071, + "end": 3077, "loc": { "start": { - "line": 68, - "column": 43 + "line": 81, + "column": 12 }, "end": { - "line": 68, - "column": 44 + "line": 81, + "column": 18 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2752, - "end": 2753, + "start": 3077, + "end": 3078, "loc": { "start": { - "line": 68, - "column": 44 + "line": 81, + "column": 18 }, "end": { - "line": 68, - "column": 45 + "line": 81, + "column": 19 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 2753, - "end": 2754, + "start": 3087, + "end": 3088, "loc": { "start": { - "line": 68, - "column": 45 + "line": 82, + "column": 8 }, "end": { - "line": 68, - "column": 46 + "line": 82, + "column": 9 } } }, @@ -51925,23 +53786,23 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 2790, - "end": 2793, + "value": "stats", + "start": 3098, + "end": 3103, "loc": { "start": { - "line": 69, - "column": 35 + "line": 84, + "column": 8 }, "end": { - "line": 69, - "column": 38 + "line": 84, + "column": 13 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -51949,26 +53810,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2825, - "end": 2826, + "start": 3103, + "end": 3104, "loc": { "start": { - "line": 70, - "column": 31 + "line": 84, + "column": 13 }, "end": { - "line": 70, - "column": 32 + "line": 84, + "column": 14 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -51976,50 +53838,52 @@ "postfix": false, "binop": null }, - "start": 2826, - "end": 2827, + "value": "sourceFormat", + "start": 3104, + "end": 3116, "loc": { "start": { - "line": 70, - "column": 32 + "line": 84, + "column": 14 }, "end": { - "line": 70, - "column": 33 + "line": 84, + "column": 26 } } }, { "type": { - "label": "{", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2828, - "end": 2829, + "value": "=", + "start": 3117, + "end": 3118, "loc": { "start": { - "line": 70, - "column": 34 + "line": 84, + "column": 27 }, "end": { - "line": 70, - "column": 35 + "line": 84, + "column": 28 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52028,26 +53892,25 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 2835, - "end": 2841, + "value": "glTF", + "start": 3119, + "end": 3125, "loc": { "start": { - "line": 72, - "column": 4 + "line": 84, + "column": 29 }, "end": { - "line": 72, - "column": 10 + "line": 84, + "column": 35 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52056,17 +53919,16 @@ "binop": null, "updateContext": null }, - "value": "new", - "start": 2842, - "end": 2845, + "start": 3125, + "end": 3126, "loc": { - "start": { - "line": 72, - "column": 11 + "start": { + "line": 84, + "column": 35 }, "end": { - "line": 72, - "column": 14 + "line": 84, + "column": 36 } } }, @@ -52082,49 +53944,49 @@ "postfix": false, "binop": null }, - "value": "Promise", - "start": 2846, - "end": 2853, + "value": "stats", + "start": 3135, + "end": 3140, "loc": { "start": { - "line": 72, - "column": 15 + "line": 85, + "column": 8 }, "end": { - "line": 72, - "column": 22 + "line": 85, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2853, - "end": 2854, + "start": 3140, + "end": 3141, "loc": { "start": { - "line": 72, - "column": 22 + "line": 85, + "column": 13 }, "end": { - "line": 72, - "column": 23 + "line": 85, + "column": 14 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52134,48 +53996,50 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 2854, - "end": 2862, + "value": "schemaVersion", + "start": 3141, + "end": 3154, "loc": { "start": { - "line": 72, - "column": 23 + "line": 85, + "column": 14 }, "end": { - "line": 72, - "column": 31 + "line": 85, + "column": 27 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2863, - "end": 2864, + "value": "=", + "start": 3155, + "end": 3156, "loc": { "start": { - "line": 72, - "column": 32 + "line": 85, + "column": 28 }, "end": { - "line": 72, - "column": 33 + "line": 85, + "column": 29 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52183,25 +54047,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "resolve", - "start": 2864, - "end": 2871, + "value": "2.0", + "start": 3157, + "end": 3162, "loc": { "start": { - "line": 72, - "column": 33 + "line": 85, + "column": 30 }, "end": { - "line": 72, - "column": 40 + "line": 85, + "column": 35 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -52212,16 +54077,16 @@ "binop": null, "updateContext": null }, - "start": 2871, - "end": 2872, + "start": 3162, + "end": 3163, "loc": { "start": { - "line": 72, - "column": 40 + "line": 85, + "column": 35 }, "end": { - "line": 72, - "column": 41 + "line": 85, + "column": 36 } } }, @@ -52237,23 +54102,23 @@ "postfix": false, "binop": null }, - "value": "reject", - "start": 2873, - "end": 2879, + "value": "stats", + "start": 3172, + "end": 3177, "loc": { "start": { - "line": 72, - "column": 42 + "line": 86, + "column": 8 }, "end": { - "line": 72, - "column": 48 + "line": 86, + "column": 13 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -52261,25 +54126,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2879, - "end": 2880, + "start": 3177, + "end": 3178, "loc": { "start": { - "line": 72, - "column": 48 + "line": 86, + "column": 13 }, "end": { - "line": 72, - "column": 49 + "line": 86, + "column": 14 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -52288,96 +54154,97 @@ "postfix": false, "binop": null }, - "start": 2881, - "end": 2882, + "value": "title", + "start": 3178, + "end": 3183, "loc": { "start": { - "line": 72, - "column": 50 + "line": 86, + "column": 14 }, "end": { - "line": 72, - "column": 51 + "line": 86, + "column": 19 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 2892, - "end": 2894, + "value": "=", + "start": 3184, + "end": 3185, "loc": { "start": { - "line": 74, - "column": 8 + "line": 86, + "column": 20 }, "end": { - "line": 74, - "column": 10 + "line": 86, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2895, - "end": 2896, + "value": "", + "start": 3186, + "end": 3188, "loc": { "start": { - "line": 74, - "column": 11 + "line": 86, + "column": 22 }, "end": { - "line": 74, - "column": 12 + "line": 86, + "column": 24 } } }, { "type": { - "label": "prefix", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 2896, - "end": 2897, + "start": 3188, + "end": 3189, "loc": { "start": { - "line": 74, - "column": 12 + "line": 86, + "column": 24 }, "end": { - "line": 74, - "column": 13 + "line": 86, + "column": 25 } } }, @@ -52393,23 +54260,23 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 2897, - "end": 2901, + "value": "stats", + "start": 3198, + "end": 3203, "loc": { "start": { - "line": 74, - "column": 13 + "line": 87, + "column": 8 }, "end": { - "line": 74, - "column": 17 + "line": 87, + "column": 13 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -52417,25 +54284,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2901, - "end": 2902, + "start": 3203, + "end": 3204, "loc": { "start": { - "line": 74, - "column": 17 + "line": 87, + "column": 13 }, "end": { - "line": 74, - "column": 18 + "line": 87, + "column": 14 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -52444,75 +54312,79 @@ "postfix": false, "binop": null }, - "start": 2903, - "end": 2904, + "value": "author", + "start": 3204, + "end": 3210, "loc": { "start": { - "line": 74, - "column": 19 + "line": 87, + "column": 14 }, "end": { - "line": 74, + "line": 87, "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "reject", - "start": 2917, - "end": 2923, + "value": "=", + "start": 3211, + "end": 3212, "loc": { "start": { - "line": 75, - "column": 12 + "line": 87, + "column": 21 }, "end": { - "line": 75, - "column": 18 + "line": 87, + "column": 22 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2923, - "end": 2924, + "value": "", + "start": 3213, + "end": 3215, "loc": { "start": { - "line": 75, - "column": 18 + "line": 87, + "column": 23 }, "end": { - "line": 75, - "column": 19 + "line": 87, + "column": 25 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52521,25 +54393,24 @@ "binop": null, "updateContext": null }, - "value": "Argument expected: data", - "start": 2924, - "end": 2949, + "start": 3215, + "end": 3216, "loc": { "start": { - "line": 75, - "column": 19 + "line": 87, + "column": 25 }, "end": { - "line": 75, - "column": 44 + "line": 87, + "column": 26 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52547,23 +54418,24 @@ "postfix": false, "binop": null }, - "start": 2949, - "end": 2950, + "value": "stats", + "start": 3225, + "end": 3230, "loc": { "start": { - "line": 75, - "column": 44 + "line": 88, + "column": 8 }, "end": { - "line": 75, - "column": 45 + "line": 88, + "column": 13 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -52573,103 +54445,103 @@ "binop": null, "updateContext": null }, - "start": 2950, - "end": 2951, + "start": 3230, + "end": 3231, "loc": { "start": { - "line": 75, - "column": 45 + "line": 88, + "column": 13 }, "end": { - "line": 75, - "column": 46 + "line": 88, + "column": 14 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 2964, - "end": 2970, + "value": "created", + "start": 3231, + "end": 3238, "loc": { "start": { - "line": 76, - "column": 12 + "line": 88, + "column": 14 }, "end": { - "line": 76, - "column": 18 + "line": 88, + "column": 21 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 2970, - "end": 2971, + "value": "=", + "start": 3239, + "end": 3240, "loc": { "start": { - "line": 76, - "column": 18 + "line": 88, + "column": 22 }, "end": { - "line": 76, - "column": 19 + "line": 88, + "column": 23 } } }, { "type": { - "label": "}", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 2980, - "end": 2981, + "value": "", + "start": 3241, + "end": 3243, "loc": { "start": { - "line": 77, - "column": 8 + "line": 88, + "column": 24 }, "end": { - "line": 77, - "column": 9 + "line": 88, + "column": 26 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -52679,24 +54551,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 2991, - "end": 2993, + "start": 3243, + "end": 3244, "loc": { "start": { - "line": 79, - "column": 8 + "line": 88, + "column": 26 }, "end": { - "line": 79, - "column": 10 + "line": 88, + "column": 27 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -52705,77 +54576,51 @@ "postfix": false, "binop": null }, - "start": 2994, - "end": 2995, - "loc": { - "start": { - "line": 79, - "column": 11 - }, - "end": { - "line": 79, - "column": 12 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "!", - "start": 2995, - "end": 2996, + "value": "stats", + "start": 3253, + "end": 3258, "loc": { "start": { - "line": 79, - "column": 12 + "line": 89, + "column": 8 }, "end": { - "line": 79, + "line": 89, "column": 13 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktModel", - "start": 2996, - "end": 3004, + "start": 3258, + "end": 3259, "loc": { "start": { - "line": 79, + "line": 89, "column": 13 }, "end": { - "line": 79, - "column": 21 + "line": 89, + "column": 14 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52783,47 +54628,50 @@ "postfix": false, "binop": null }, - "start": 3004, - "end": 3005, + "value": "numTriangles", + "start": 3259, + "end": 3271, "loc": { "start": { - "line": 79, - "column": 21 + "line": 89, + "column": 14 }, "end": { - "line": 79, - "column": 22 + "line": 89, + "column": 26 } } }, { "type": { - "label": "{", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3006, - "end": 3007, + "value": "=", + "start": 3272, + "end": 3273, "loc": { "start": { - "line": 79, - "column": 23 + "line": 89, + "column": 27 }, "end": { - "line": 79, - "column": 24 + "line": 89, + "column": 28 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52831,50 +54679,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "reject", - "start": 3020, - "end": 3026, + "value": 0, + "start": 3274, + "end": 3275, "loc": { "start": { - "line": 80, - "column": 12 + "line": 89, + "column": 29 }, "end": { - "line": 80, - "column": 18 + "line": 89, + "column": 30 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3026, - "end": 3027, + "start": 3275, + "end": 3276, "loc": { "start": { - "line": 80, - "column": 18 + "line": 89, + "column": 30 }, "end": { - "line": 80, - "column": 19 + "line": 89, + "column": 31 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -52882,26 +54732,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Argument expected: xktModel", - "start": 3027, - "end": 3056, + "value": "stats", + "start": 3285, + "end": 3290, "loc": { "start": { - "line": 80, - "column": 19 + "line": 90, + "column": 8 }, "end": { - "line": 80, - "column": 48 + "line": 90, + "column": 13 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -52909,80 +54758,80 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3056, - "end": 3057, + "start": 3290, + "end": 3291, "loc": { "start": { - "line": 80, - "column": 48 + "line": 90, + "column": 13 }, "end": { - "line": 80, - "column": 49 + "line": 90, + "column": 14 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3057, - "end": 3058, + "value": "numVertices", + "start": 3291, + "end": 3302, "loc": { "start": { - "line": 80, - "column": 49 + "line": 90, + "column": 14 }, "end": { - "line": 80, - "column": 50 + "line": 90, + "column": 25 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "return", - "start": 3071, - "end": 3077, + "value": "=", + "start": 3303, + "end": 3304, "loc": { "start": { - "line": 81, - "column": 12 + "line": 90, + "column": 26 }, "end": { - "line": 81, - "column": 18 + "line": 90, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -52991,41 +54840,43 @@ "binop": null, "updateContext": null }, - "start": 3077, - "end": 3078, + "value": 0, + "start": 3305, + "end": 3306, "loc": { "start": { - "line": 81, - "column": 18 + "line": 90, + "column": 28 }, "end": { - "line": 81, - "column": 19 + "line": 90, + "column": 29 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3087, - "end": 3088, + "start": 3306, + "end": 3307, "loc": { "start": { - "line": 82, - "column": 8 + "line": 90, + "column": 29 }, "end": { - "line": 82, - "column": 9 + "line": 90, + "column": 30 } } }, @@ -53042,15 +54893,15 @@ "binop": null }, "value": "stats", - "start": 3098, - "end": 3103, + "start": 3316, + "end": 3321, "loc": { "start": { - "line": 84, + "line": 91, "column": 8 }, "end": { - "line": 84, + "line": 91, "column": 13 } } @@ -53068,15 +54919,15 @@ "binop": null, "updateContext": null }, - "start": 3103, - "end": 3104, + "start": 3321, + "end": 3322, "loc": { "start": { - "line": 84, + "line": 91, "column": 13 }, "end": { - "line": 84, + "line": 91, "column": 14 } } @@ -53093,17 +54944,17 @@ "postfix": false, "binop": null }, - "value": "sourceFormat", - "start": 3104, - "end": 3116, + "value": "numNormals", + "start": 3322, + "end": 3332, "loc": { "start": { - "line": 84, + "line": 91, "column": 14 }, "end": { - "line": 84, - "column": 26 + "line": 91, + "column": 24 } } }, @@ -53121,22 +54972,22 @@ "updateContext": null }, "value": "=", - "start": 3117, - "end": 3118, + "start": 3333, + "end": 3334, "loc": { "start": { - "line": 84, - "column": 27 + "line": 91, + "column": 25 }, "end": { - "line": 84, - "column": 28 + "line": 91, + "column": 26 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53147,17 +54998,17 @@ "binop": null, "updateContext": null }, - "value": "glTF", - "start": 3119, - "end": 3125, + "value": 0, + "start": 3335, + "end": 3336, "loc": { "start": { - "line": 84, - "column": 29 + "line": 91, + "column": 27 }, "end": { - "line": 84, - "column": 35 + "line": 91, + "column": 28 } } }, @@ -53174,16 +55025,16 @@ "binop": null, "updateContext": null }, - "start": 3125, - "end": 3126, + "start": 3336, + "end": 3337, "loc": { "start": { - "line": 84, - "column": 35 + "line": 91, + "column": 28 }, "end": { - "line": 84, - "column": 36 + "line": 91, + "column": 29 } } }, @@ -53200,15 +55051,15 @@ "binop": null }, "value": "stats", - "start": 3135, - "end": 3140, + "start": 3346, + "end": 3351, "loc": { "start": { - "line": 85, + "line": 92, "column": 8 }, "end": { - "line": 85, + "line": 92, "column": 13 } } @@ -53226,15 +55077,15 @@ "binop": null, "updateContext": null }, - "start": 3140, - "end": 3141, + "start": 3351, + "end": 3352, "loc": { "start": { - "line": 85, + "line": 92, "column": 13 }, "end": { - "line": 85, + "line": 92, "column": 14 } } @@ -53251,17 +55102,17 @@ "postfix": false, "binop": null }, - "value": "schemaVersion", - "start": 3141, - "end": 3154, + "value": "numUVs", + "start": 3352, + "end": 3358, "loc": { "start": { - "line": 85, + "line": 92, "column": 14 }, "end": { - "line": 85, - "column": 27 + "line": 92, + "column": 20 } } }, @@ -53279,22 +55130,22 @@ "updateContext": null }, "value": "=", - "start": 3155, - "end": 3156, + "start": 3359, + "end": 3360, "loc": { "start": { - "line": 85, - "column": 28 + "line": 92, + "column": 21 }, "end": { - "line": 85, - "column": 29 + "line": 92, + "column": 22 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53305,17 +55156,17 @@ "binop": null, "updateContext": null }, - "value": "2.0", - "start": 3157, - "end": 3162, + "value": 0, + "start": 3361, + "end": 3362, "loc": { "start": { - "line": 85, - "column": 30 + "line": 92, + "column": 23 }, "end": { - "line": 85, - "column": 35 + "line": 92, + "column": 24 } } }, @@ -53332,16 +55183,16 @@ "binop": null, "updateContext": null }, - "start": 3162, - "end": 3163, + "start": 3362, + "end": 3363, "loc": { "start": { - "line": 85, - "column": 35 + "line": 92, + "column": 24 }, "end": { - "line": 85, - "column": 36 + "line": 92, + "column": 25 } } }, @@ -53358,15 +55209,15 @@ "binop": null }, "value": "stats", - "start": 3172, - "end": 3177, + "start": 3372, + "end": 3377, "loc": { "start": { - "line": 86, + "line": 93, "column": 8 }, "end": { - "line": 86, + "line": 93, "column": 13 } } @@ -53384,15 +55235,15 @@ "binop": null, "updateContext": null }, - "start": 3177, - "end": 3178, + "start": 3377, + "end": 3378, "loc": { "start": { - "line": 86, + "line": 93, "column": 13 }, "end": { - "line": 86, + "line": 93, "column": 14 } } @@ -53409,17 +55260,17 @@ "postfix": false, "binop": null }, - "value": "title", - "start": 3178, - "end": 3183, + "value": "numTextures", + "start": 3378, + "end": 3389, "loc": { "start": { - "line": 86, + "line": 93, "column": 14 }, "end": { - "line": 86, - "column": 19 + "line": 93, + "column": 25 } } }, @@ -53437,22 +55288,22 @@ "updateContext": null }, "value": "=", - "start": 3184, - "end": 3185, + "start": 3390, + "end": 3391, "loc": { "start": { - "line": 86, - "column": 20 + "line": 93, + "column": 26 }, "end": { - "line": 86, - "column": 21 + "line": 93, + "column": 27 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53463,17 +55314,17 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 3186, - "end": 3188, + "value": 0, + "start": 3392, + "end": 3393, "loc": { "start": { - "line": 86, - "column": 22 + "line": 93, + "column": 28 }, "end": { - "line": 86, - "column": 24 + "line": 93, + "column": 29 } } }, @@ -53490,16 +55341,16 @@ "binop": null, "updateContext": null }, - "start": 3188, - "end": 3189, + "start": 3393, + "end": 3394, "loc": { "start": { - "line": 86, - "column": 24 + "line": 93, + "column": 29 }, "end": { - "line": 86, - "column": 25 + "line": 93, + "column": 30 } } }, @@ -53516,15 +55367,15 @@ "binop": null }, "value": "stats", - "start": 3198, - "end": 3203, + "start": 3403, + "end": 3408, "loc": { "start": { - "line": 87, + "line": 94, "column": 8 }, "end": { - "line": 87, + "line": 94, "column": 13 } } @@ -53542,15 +55393,15 @@ "binop": null, "updateContext": null }, - "start": 3203, - "end": 3204, + "start": 3408, + "end": 3409, "loc": { "start": { - "line": 87, + "line": 94, "column": 13 }, "end": { - "line": 87, + "line": 94, "column": 14 } } @@ -53567,17 +55418,17 @@ "postfix": false, "binop": null }, - "value": "author", - "start": 3204, - "end": 3210, + "value": "numObjects", + "start": 3409, + "end": 3419, "loc": { "start": { - "line": 87, + "line": 94, "column": 14 }, "end": { - "line": 87, - "column": 20 + "line": 94, + "column": 24 } } }, @@ -53595,22 +55446,22 @@ "updateContext": null }, "value": "=", - "start": 3211, - "end": 3212, + "start": 3420, + "end": 3421, "loc": { "start": { - "line": 87, - "column": 21 + "line": 94, + "column": 25 }, "end": { - "line": 87, - "column": 22 + "line": 94, + "column": 26 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53621,17 +55472,17 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 3213, - "end": 3215, + "value": 0, + "start": 3422, + "end": 3423, "loc": { "start": { - "line": 87, - "column": 23 + "line": 94, + "column": 27 }, "end": { - "line": 87, - "column": 25 + "line": 94, + "column": 28 } } }, @@ -53648,16 +55499,16 @@ "binop": null, "updateContext": null }, - "start": 3215, - "end": 3216, + "start": 3423, + "end": 3424, "loc": { "start": { - "line": 87, - "column": 25 + "line": 94, + "column": 28 }, "end": { - "line": 87, - "column": 26 + "line": 94, + "column": 29 } } }, @@ -53674,15 +55525,15 @@ "binop": null }, "value": "stats", - "start": 3225, - "end": 3230, + "start": 3433, + "end": 3438, "loc": { "start": { - "line": 88, + "line": 95, "column": 8 }, "end": { - "line": 88, + "line": 95, "column": 13 } } @@ -53700,15 +55551,15 @@ "binop": null, "updateContext": null }, - "start": 3230, - "end": 3231, + "start": 3438, + "end": 3439, "loc": { "start": { - "line": 88, + "line": 95, "column": 13 }, "end": { - "line": 88, + "line": 95, "column": 14 } } @@ -53725,17 +55576,17 @@ "postfix": false, "binop": null }, - "value": "created", - "start": 3231, - "end": 3238, + "value": "numGeometries", + "start": 3439, + "end": 3452, "loc": { "start": { - "line": 88, + "line": 95, "column": 14 }, "end": { - "line": 88, - "column": 21 + "line": 95, + "column": 27 } } }, @@ -53753,22 +55604,22 @@ "updateContext": null }, "value": "=", - "start": 3239, - "end": 3240, + "start": 3453, + "end": 3454, "loc": { "start": { - "line": 88, - "column": 22 + "line": 95, + "column": 28 }, "end": { - "line": 88, - "column": 23 + "line": 95, + "column": 29 } } }, { "type": { - "label": "string", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53779,17 +55630,17 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 3241, - "end": 3243, + "value": 0, + "start": 3455, + "end": 3456, "loc": { "start": { - "line": 88, - "column": 24 + "line": 95, + "column": 30 }, "end": { - "line": 88, - "column": 26 + "line": 95, + "column": 31 } } }, @@ -53806,16 +55657,16 @@ "binop": null, "updateContext": null }, - "start": 3243, - "end": 3244, + "start": 3456, + "end": 3457, "loc": { "start": { - "line": 88, - "column": 26 + "line": 95, + "column": 31 }, "end": { - "line": 88, - "column": 27 + "line": 95, + "column": 32 } } }, @@ -53831,42 +55682,41 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3253, - "end": 3258, + "value": "parse", + "start": 3467, + "end": 3472, "loc": { "start": { - "line": 89, + "line": 97, "column": 8 }, "end": { - "line": 89, + "line": 97, "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3258, - "end": 3259, + "start": 3472, + "end": 3473, "loc": { "start": { - "line": 89, + "line": 97, "column": 13 }, "end": { - "line": 89, + "line": 97, "column": 14 } } @@ -53883,50 +55733,49 @@ "postfix": false, "binop": null }, - "value": "numTriangles", - "start": 3259, - "end": 3271, + "value": "data", + "start": 3473, + "end": 3477, "loc": { "start": { - "line": 89, + "line": 97, "column": 14 }, "end": { - "line": 89, - "column": 26 + "line": 97, + "column": 18 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 3272, - "end": 3273, + "start": 3477, + "end": 3478, "loc": { "start": { - "line": 89, - "column": 27 + "line": 97, + "column": 18 }, "end": { - "line": 89, - "column": 28 + "line": 97, + "column": 19 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -53934,26 +55783,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 3274, - "end": 3275, + "value": "GLTFLoader", + "start": 3479, + "end": 3489, "loc": { "start": { - "line": 89, - "column": 29 + "line": 97, + "column": 20 }, "end": { - "line": 89, + "line": 97, "column": 30 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -53964,23 +55812,23 @@ "binop": null, "updateContext": null }, - "start": 3275, - "end": 3276, + "start": 3489, + "end": 3490, "loc": { "start": { - "line": 89, + "line": 97, "column": 30 }, "end": { - "line": 89, + "line": 97, "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -53989,43 +55837,16 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3285, - "end": 3290, - "loc": { - "start": { - "line": 90, - "column": 8 - }, - "end": { - "line": 90, - "column": 13 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 3290, - "end": 3291, + "start": 3491, + "end": 3492, "loc": { "start": { - "line": 90, - "column": 13 + "line": 97, + "column": 32 }, "end": { - "line": 90, - "column": 14 + "line": 97, + "column": 33 } } }, @@ -54041,78 +55862,74 @@ "postfix": false, "binop": null }, - "value": "numVertices", - "start": 3291, - "end": 3302, + "value": "baseUri", + "start": 3505, + "end": 3512, "loc": { "start": { - "line": 90, - "column": 14 + "line": 98, + "column": 12 }, "end": { - "line": 90, - "column": 25 + "line": 98, + "column": 19 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 3303, - "end": 3304, + "start": 3521, + "end": 3522, "loc": { "start": { - "line": 90, - "column": 26 + "line": 99, + "column": 8 }, "end": { - "line": 90, - "column": 27 + "line": 99, + "column": 9 } } }, { "type": { - "label": "num", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 3305, - "end": 3306, + "start": 3522, + "end": 3523, "loc": { "start": { - "line": 90, - "column": 28 + "line": 99, + "column": 9 }, "end": { - "line": 90, - "column": 29 + "line": 99, + "column": 10 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -54122,16 +55939,16 @@ "binop": null, "updateContext": null }, - "start": 3306, - "end": 3307, + "start": 3523, + "end": 3524, "loc": { "start": { - "line": 90, - "column": 29 + "line": 99, + "column": 10 }, "end": { - "line": 90, - "column": 30 + "line": 99, + "column": 11 } } }, @@ -54147,50 +55964,49 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3316, - "end": 3321, + "value": "then", + "start": 3524, + "end": 3528, "loc": { "start": { - "line": 91, - "column": 8 + "line": 99, + "column": 11 }, "end": { - "line": 91, - "column": 13 + "line": 99, + "column": 15 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3321, - "end": 3322, + "start": 3528, + "end": 3529, "loc": { "start": { - "line": 91, - "column": 13 + "line": 99, + "column": 15 }, "end": { - "line": 91, - "column": 14 + "line": 99, + "column": 16 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54199,77 +56015,73 @@ "postfix": false, "binop": null }, - "value": "numNormals", - "start": 3322, - "end": 3332, + "start": 3529, + "end": 3530, "loc": { "start": { - "line": 91, - "column": 14 + "line": 99, + "column": 16 }, "end": { - "line": 91, - "column": 24 + "line": 99, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 3333, - "end": 3334, + "value": "gltfData", + "start": 3530, + "end": 3538, "loc": { "start": { - "line": 91, - "column": 25 + "line": 99, + "column": 17 }, "end": { - "line": 91, - "column": 26 + "line": 99, + "column": 25 } } }, { "type": { - "label": "num", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 3335, - "end": 3336, + "start": 3538, + "end": 3539, "loc": { "start": { - "line": 91, - "column": 27 + "line": 99, + "column": 25 }, "end": { - "line": 91, - "column": 28 + "line": 99, + "column": 26 } } }, { "type": { - "label": ";", + "label": "=>", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -54280,23 +56092,23 @@ "binop": null, "updateContext": null }, - "start": 3336, - "end": 3337, + "start": 3540, + "end": 3542, "loc": { "start": { - "line": 91, - "column": 28 + "line": 99, + "column": 27 }, "end": { - "line": 91, + "line": 99, "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54305,23 +56117,23 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3346, - "end": 3351, + "start": 3543, + "end": 3544, "loc": { "start": { - "line": 92, - "column": 8 + "line": 99, + "column": 30 }, "end": { - "line": 92, - "column": 13 + "line": 99, + "column": 31 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -54332,16 +56144,17 @@ "binop": null, "updateContext": null }, - "start": 3351, - "end": 3352, + "value": "const", + "start": 3558, + "end": 3563, "loc": { "start": { - "line": 92, - "column": 13 + "line": 101, + "column": 12 }, "end": { - "line": 92, - "column": 14 + "line": 101, + "column": 17 } } }, @@ -54357,17 +56170,17 @@ "postfix": false, "binop": null }, - "value": "numUVs", - "start": 3352, - "end": 3358, + "value": "ctx", + "start": 3564, + "end": 3567, "loc": { "start": { - "line": 92, - "column": 14 + "line": 101, + "column": 18 }, "end": { - "line": 92, - "column": 20 + "line": 101, + "column": 21 } } }, @@ -54385,68 +56198,40 @@ "updateContext": null }, "value": "=", - "start": 3359, - "end": 3360, + "start": 3568, + "end": 3569, "loc": { "start": { - "line": 92, - "column": 21 - }, - "end": { - "line": 92, + "line": 101, "column": 22 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": 0, - "start": 3361, - "end": 3362, - "loc": { - "start": { - "line": 92, - "column": 23 }, "end": { - "line": 92, - "column": 24 + "line": 101, + "column": 23 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3362, - "end": 3363, + "start": 3570, + "end": 3571, "loc": { "start": { - "line": 92, + "line": 101, "column": 24 }, "end": { - "line": 92, + "line": 101, "column": 25 } } @@ -54463,24 +56248,24 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3372, - "end": 3377, + "value": "gltfData", + "start": 3588, + "end": 3596, "loc": { "start": { - "line": 93, - "column": 8 + "line": 102, + "column": 16 }, "end": { - "line": 93, - "column": 13 + "line": 102, + "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -54490,16 +56275,16 @@ "binop": null, "updateContext": null }, - "start": 3377, - "end": 3378, + "start": 3596, + "end": 3597, "loc": { "start": { - "line": 93, - "column": 13 + "line": 102, + "column": 24 }, "end": { - "line": 93, - "column": 14 + "line": 102, + "column": 25 } } }, @@ -54515,50 +56300,50 @@ "postfix": false, "binop": null }, - "value": "numTextures", - "start": 3378, - "end": 3389, + "value": "nodesHaveNames", + "start": 3614, + "end": 3628, "loc": { "start": { - "line": 93, - "column": 14 + "line": 103, + "column": 16 }, "end": { - "line": 93, - "column": 25 + "line": 103, + "column": 30 } } }, { "type": { - "label": "=", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 3390, - "end": 3391, + "start": 3628, + "end": 3629, "loc": { "start": { - "line": 93, - "column": 26 + "line": 103, + "column": 30 }, "end": { - "line": 93, - "column": 27 + "line": 103, + "column": 31 } } }, { "type": { - "label": "num", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -54569,23 +56354,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 3392, - "end": 3393, + "value": "false", + "start": 3630, + "end": 3635, "loc": { "start": { - "line": 93, - "column": 28 + "line": 103, + "column": 32 }, "end": { - "line": 93, - "column": 29 + "line": 103, + "column": 37 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -54596,16 +56381,32 @@ "binop": null, "updateContext": null }, - "start": 3393, - "end": 3394, + "start": 3635, + "end": 3636, + "loc": { + "start": { + "line": 103, + "column": 37 + }, + "end": { + "line": 103, + "column": 38 + } + } + }, + { + "type": "CommentLine", + "value": " determined in testIfNodesHaveNames()", + "start": 3637, + "end": 3676, "loc": { "start": { - "line": 93, - "column": 29 + "line": 103, + "column": 39 }, "end": { - "line": 93, - "column": 30 + "line": 103, + "column": 78 } } }, @@ -54621,24 +56422,24 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3403, - "end": 3408, + "value": "getAttachment", + "start": 3693, + "end": 3706, "loc": { "start": { - "line": 94, - "column": 8 + "line": 104, + "column": 16 }, "end": { - "line": 94, - "column": 13 + "line": 104, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -54648,16 +56449,16 @@ "binop": null, "updateContext": null }, - "start": 3408, - "end": 3409, + "start": 3706, + "end": 3707, "loc": { "start": { - "line": 94, - "column": 13 + "line": 104, + "column": 29 }, "end": { - "line": 94, - "column": 14 + "line": 104, + "column": 30 } } }, @@ -54673,105 +56474,102 @@ "postfix": false, "binop": null }, - "value": "numObjects", - "start": 3409, - "end": 3419, + "value": "getAttachment", + "start": 3708, + "end": 3721, "loc": { "start": { - "line": 94, - "column": 14 + "line": 104, + "column": 31 }, "end": { - "line": 94, - "column": 24 + "line": 104, + "column": 44 } } }, { "type": { - "label": "=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "=", - "start": 3420, - "end": 3421, + "value": "||", + "start": 3722, + "end": 3724, "loc": { "start": { - "line": 94, - "column": 25 + "line": 104, + "column": 45 }, "end": { - "line": 94, - "column": 26 + "line": 104, + "column": 47 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 3422, - "end": 3423, + "start": 3725, + "end": 3726, "loc": { "start": { - "line": 94, - "column": 27 + "line": 104, + "column": 48 }, "end": { - "line": 94, - "column": 28 + "line": 104, + "column": 49 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3423, - "end": 3424, + "start": 3726, + "end": 3727, "loc": { "start": { - "line": 94, - "column": 28 + "line": 104, + "column": 49 }, "end": { - "line": 94, - "column": 29 + "line": 104, + "column": 50 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54779,24 +56577,23 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 3433, - "end": 3438, + "start": 3727, + "end": 3728, "loc": { "start": { - "line": 95, - "column": 8 + "line": 104, + "column": 50 }, "end": { - "line": 95, - "column": 13 + "line": 104, + "column": 51 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=>", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -54806,23 +56603,23 @@ "binop": null, "updateContext": null }, - "start": 3438, - "end": 3439, + "start": 3729, + "end": 3731, "loc": { "start": { - "line": 95, - "column": 13 + "line": 104, + "column": 52 }, "end": { - "line": 95, - "column": 14 + "line": 104, + "column": 54 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54831,51 +56628,52 @@ "postfix": false, "binop": null }, - "value": "numGeometries", - "start": 3439, - "end": 3452, + "start": 3732, + "end": 3733, "loc": { "start": { - "line": 95, - "column": 14 + "line": 104, + "column": 55 }, "end": { - "line": 95, - "column": 27 + "line": 104, + "column": 56 } } }, { "type": { - "label": "=", + "label": "throw", + "keyword": "throw", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 3453, - "end": 3454, + "value": "throw", + "start": 3754, + "end": 3759, "loc": { "start": { - "line": 95, - "column": 28 + "line": 105, + "column": 20 }, "end": { - "line": 95, - "column": 29 + "line": 105, + "column": 25 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "new", + "keyword": "new", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54885,50 +56683,50 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 3455, - "end": 3456, + "value": "new", + "start": 3760, + "end": 3763, "loc": { "start": { - "line": 95, - "column": 30 + "line": 105, + "column": 26 }, "end": { - "line": 95, - "column": 31 + "line": 105, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3456, - "end": 3457, + "value": "Error", + "start": 3764, + "end": 3769, "loc": { "start": { - "line": 95, - "column": 31 + "line": 105, + "column": 30 }, "end": { - "line": 95, - "column": 32 + "line": 105, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -54937,50 +56735,51 @@ "postfix": false, "binop": null }, - "value": "parse", - "start": 3467, - "end": 3472, + "start": 3769, + "end": 3770, "loc": { "start": { - "line": 97, - "column": 8 + "line": 105, + "column": 35 }, "end": { - "line": 97, - "column": 13 + "line": 105, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3472, - "end": 3473, + "value": "You must define getAttachment() method to convert glTF with external resources", + "start": 3770, + "end": 3850, "loc": { "start": { - "line": 97, - "column": 13 + "line": 105, + "column": 36 }, "end": { - "line": 97, - "column": 14 + "line": 105, + "column": 116 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -54988,51 +56787,49 @@ "postfix": false, "binop": null }, - "value": "data", - "start": 3473, - "end": 3477, + "start": 3850, + "end": 3851, "loc": { "start": { - "line": 97, - "column": 14 + "line": 105, + "column": 116 }, "end": { - "line": 97, - "column": 18 + "line": 105, + "column": 117 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3477, - "end": 3478, + "start": 3868, + "end": 3869, "loc": { "start": { - "line": 97, - "column": 18 + "line": 106, + "column": 16 }, "end": { - "line": 97, - "column": 19 + "line": 106, + "column": 17 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55040,17 +56837,16 @@ "postfix": false, "binop": null }, - "value": "GLTFLoader", - "start": 3479, - "end": 3489, + "start": 3869, + "end": 3870, "loc": { "start": { - "line": 97, - "column": 20 + "line": 106, + "column": 17 }, "end": { - "line": 97, - "column": 30 + "line": 106, + "column": 18 } } }, @@ -55067,23 +56863,23 @@ "binop": null, "updateContext": null }, - "start": 3489, - "end": 3490, + "start": 3870, + "end": 3871, "loc": { "start": { - "line": 97, - "column": 30 + "line": 106, + "column": 18 }, "end": { - "line": 97, - "column": 31 + "line": 106, + "column": 19 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55092,50 +56888,51 @@ "postfix": false, "binop": null }, - "start": 3491, - "end": 3492, + "value": "log", + "start": 3888, + "end": 3891, "loc": { "start": { - "line": 97, - "column": 32 + "line": 107, + "column": 16 }, "end": { - "line": 97, - "column": 33 + "line": 107, + "column": 19 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "baseUri", - "start": 3505, - "end": 3512, + "start": 3891, + "end": 3892, "loc": { "start": { - "line": 98, - "column": 12 + "line": 107, + "column": 19 }, "end": { - "line": 98, - "column": 19 + "line": 107, + "column": 20 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55143,24 +56940,24 @@ "postfix": false, "binop": null }, - "start": 3521, - "end": 3522, + "start": 3893, + "end": 3894, "loc": { "start": { - "line": 99, - "column": 8 + "line": 107, + "column": 21 }, "end": { - "line": 99, - "column": 9 + "line": 107, + "column": 22 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55168,48 +56965,51 @@ "postfix": false, "binop": null }, - "start": 3522, - "end": 3523, + "value": "log", + "start": 3894, + "end": 3897, "loc": { "start": { - "line": 99, - "column": 9 + "line": 107, + "column": 22 }, "end": { - "line": 99, - "column": 10 + "line": 107, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 3523, - "end": 3524, + "value": "||", + "start": 3898, + "end": 3900, "loc": { "start": { - "line": 99, - "column": 10 + "line": 107, + "column": 26 }, "end": { - "line": 99, - "column": 11 + "line": 107, + "column": 28 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -55219,17 +57019,17 @@ "postfix": false, "binop": null }, - "value": "then", - "start": 3524, - "end": 3528, + "value": "function", + "start": 3901, + "end": 3909, "loc": { "start": { - "line": 99, - "column": 11 + "line": 107, + "column": 29 }, "end": { - "line": 99, - "column": 15 + "line": 107, + "column": 37 } } }, @@ -55245,23 +57045,23 @@ "postfix": false, "binop": null }, - "start": 3528, - "end": 3529, + "start": 3910, + "end": 3911, "loc": { "start": { - "line": 99, - "column": 15 + "line": 107, + "column": 38 }, "end": { - "line": 99, - "column": 16 + "line": 107, + "column": 39 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55270,24 +57070,25 @@ "postfix": false, "binop": null }, - "start": 3529, - "end": 3530, + "value": "msg", + "start": 3911, + "end": 3914, "loc": { "start": { - "line": 99, - "column": 16 + "line": 107, + "column": 39 }, "end": { - "line": 99, - "column": 17 + "line": 107, + "column": 42 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55295,25 +57096,24 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 3530, - "end": 3538, + "start": 3914, + "end": 3915, "loc": { "start": { - "line": 99, - "column": 17 + "line": 107, + "column": 42 }, "end": { - "line": 99, - "column": 25 + "line": 107, + "column": 43 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55321,50 +57121,49 @@ "postfix": false, "binop": null }, - "start": 3538, - "end": 3539, + "start": 3916, + "end": 3917, "loc": { "start": { - "line": 99, - "column": 25 + "line": 107, + "column": 44 }, "end": { - "line": 99, - "column": 26 + "line": 107, + "column": 45 } } }, { "type": { - "label": "=>", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3540, - "end": 3542, + "start": 3934, + "end": 3935, "loc": { "start": { - "line": 99, - "column": 27 + "line": 108, + "column": 16 }, "end": { - "line": 99, - "column": 29 + "line": 108, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55372,24 +57171,23 @@ "postfix": false, "binop": null }, - "start": 3543, - "end": 3544, + "start": 3935, + "end": 3936, "loc": { "start": { - "line": 99, - "column": 30 + "line": 108, + "column": 17 }, "end": { - "line": 99, - "column": 31 + "line": 108, + "column": 18 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -55399,17 +57197,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 3558, - "end": 3563, + "start": 3936, + "end": 3937, "loc": { "start": { - "line": 101, - "column": 12 + "line": 108, + "column": 18 }, "end": { - "line": 101, - "column": 17 + "line": 108, + "column": 19 } } }, @@ -55425,51 +57222,51 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 3564, - "end": 3567, + "value": "error", + "start": 3954, + "end": 3959, "loc": { "start": { - "line": 101, - "column": 18 + "line": 109, + "column": 16 }, "end": { - "line": 101, + "line": 109, "column": 21 } } }, { "type": { - "label": "=", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 3568, - "end": 3569, + "start": 3959, + "end": 3960, "loc": { "start": { - "line": 101, - "column": 22 + "line": 109, + "column": 21 }, "end": { - "line": 101, - "column": 23 + "line": 109, + "column": 22 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "function", + "keyword": "function", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55478,23 +57275,24 @@ "postfix": false, "binop": null }, - "start": 3570, - "end": 3571, + "value": "function", + "start": 3961, + "end": 3969, "loc": { "start": { - "line": 101, - "column": 24 + "line": 109, + "column": 23 }, "end": { - "line": 101, - "column": 25 + "line": 109, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55503,51 +57301,50 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 3588, - "end": 3596, + "start": 3970, + "end": 3971, "loc": { "start": { - "line": 102, - "column": 16 + "line": 109, + "column": 32 }, "end": { - "line": 102, - "column": 24 + "line": 109, + "column": 33 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3596, - "end": 3597, + "value": "msg", + "start": 3971, + "end": 3974, "loc": { "start": { - "line": 102, - "column": 24 + "line": 109, + "column": 33 }, "end": { - "line": 102, - "column": 25 + "line": 109, + "column": 36 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55555,50 +57352,47 @@ "postfix": false, "binop": null }, - "value": "nodesHaveNames", - "start": 3614, - "end": 3628, + "start": 3974, + "end": 3975, "loc": { "start": { - "line": 103, - "column": 16 + "line": 109, + "column": 36 }, "end": { - "line": 103, - "column": 30 + "line": 109, + "column": 37 } } }, { "type": { - "label": ":", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3628, - "end": 3629, + "start": 3976, + "end": 3977, "loc": { "start": { - "line": 103, - "column": 30 + "line": 109, + "column": 38 }, "end": { - "line": 103, - "column": 31 + "line": 109, + "column": 39 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -55606,27 +57400,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 3630, - "end": 3635, + "value": "console", + "start": 3998, + "end": 4005, "loc": { "start": { - "line": 103, - "column": 32 + "line": 110, + "column": 20 }, "end": { - "line": 103, - "column": 37 + "line": 110, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -55636,39 +57429,49 @@ "binop": null, "updateContext": null }, - "start": 3635, - "end": 3636, + "start": 4005, + "end": 4006, "loc": { "start": { - "line": 103, - "column": 37 + "line": 110, + "column": 27 }, "end": { - "line": 103, - "column": 38 + "line": 110, + "column": 28 } } }, { - "type": "CommentLine", - "value": " determined in testIfNodesHaveNames()", - "start": 3637, - "end": 3676, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "error", + "start": 4006, + "end": 4011, "loc": { "start": { - "line": 103, - "column": 39 + "line": 110, + "column": 28 }, "end": { - "line": 103, - "column": 78 + "line": 110, + "column": 33 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55677,51 +57480,50 @@ "postfix": false, "binop": null }, - "value": "getAttachment", - "start": 3693, - "end": 3706, + "start": 4011, + "end": 4012, "loc": { "start": { - "line": 104, - "column": 16 + "line": 110, + "column": 33 }, "end": { - "line": 104, - "column": 29 + "line": 110, + "column": 34 } } }, { "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3706, - "end": 3707, + "value": "msg", + "start": 4012, + "end": 4015, "loc": { "start": { - "line": 104, - "column": 29 + "line": 110, + "column": 34 }, "end": { - "line": 104, - "column": 30 + "line": 110, + "column": 37 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55729,23 +57531,22 @@ "postfix": false, "binop": null }, - "value": "getAttachment", - "start": 3708, - "end": 3721, + "start": 4015, + "end": 4016, "loc": { "start": { - "line": 104, - "column": 31 + "line": 110, + "column": 37 }, "end": { - "line": 104, - "column": 44 + "line": 110, + "column": 38 } } }, { "type": { - "label": "||", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -55753,28 +57554,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 3722, - "end": 3724, + "start": 4016, + "end": 4017, "loc": { "start": { - "line": 104, - "column": 45 + "line": 110, + "column": 38 }, "end": { - "line": 104, - "column": 47 + "line": 110, + "column": 39 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55782,49 +57582,50 @@ "postfix": false, "binop": null }, - "start": 3725, - "end": 3726, + "start": 4034, + "end": 4035, "loc": { "start": { - "line": 104, - "column": 48 + "line": 111, + "column": 16 }, "end": { - "line": 104, - "column": 49 + "line": 111, + "column": 17 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3726, - "end": 3727, + "start": 4035, + "end": 4036, "loc": { "start": { - "line": 104, - "column": 49 + "line": 111, + "column": 17 }, "end": { - "line": 104, - "column": 50 + "line": 111, + "column": 18 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -55832,22 +57633,23 @@ "postfix": false, "binop": null }, - "start": 3727, - "end": 3728, + "value": "xktModel", + "start": 4053, + "end": 4061, "loc": { "start": { - "line": 104, - "column": 50 + "line": 112, + "column": 16 }, "end": { - "line": 104, - "column": 51 + "line": 112, + "column": 24 } } }, { "type": { - "label": "=>", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -55858,23 +57660,23 @@ "binop": null, "updateContext": null }, - "start": 3729, - "end": 3731, + "start": 4061, + "end": 4062, "loc": { "start": { - "line": 104, - "column": 52 + "line": 112, + "column": 24 }, "end": { - "line": 104, - "column": 54 + "line": 112, + "column": 25 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -55883,23 +57685,23 @@ "postfix": false, "binop": null }, - "start": 3732, - "end": 3733, + "value": "includeNormals", + "start": 4079, + "end": 4093, "loc": { "start": { - "line": 104, - "column": 55 + "line": 113, + "column": 16 }, "end": { - "line": 104, - "column": 56 + "line": 113, + "column": 30 } } }, { "type": { - "label": "throw", - "keyword": "throw", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -55910,24 +57712,22 @@ "binop": null, "updateContext": null }, - "value": "throw", - "start": 3754, - "end": 3759, + "start": 4093, + "end": 4094, "loc": { "start": { - "line": 105, - "column": 20 + "line": 113, + "column": 30 }, "end": { - "line": 105, - "column": 25 + "line": 113, + "column": 31 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -55935,20 +57735,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 3760, - "end": 3763, + "start": 4095, + "end": 4096, "loc": { "start": { - "line": 105, - "column": 26 + "line": 113, + "column": 32 }, "end": { - "line": 105, - "column": 29 + "line": 113, + "column": 33 } } }, @@ -55964,48 +57762,51 @@ "postfix": false, "binop": null }, - "value": "Error", - "start": 3764, - "end": 3769, + "value": "includeNormals", + "start": 4096, + "end": 4110, "loc": { "start": { - "line": 105, - "column": 30 + "line": 113, + "column": 33 }, "end": { - "line": 105, - "column": 35 + "line": 113, + "column": 47 } } }, { "type": { - "label": "(", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 3769, - "end": 3770, + "value": "!==", + "start": 4111, + "end": 4114, "loc": { "start": { - "line": 105, - "column": 35 + "line": 113, + "column": 48 }, "end": { - "line": 105, - "column": 36 + "line": 113, + "column": 51 } } }, { "type": { - "label": "string", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56016,17 +57817,17 @@ "binop": null, "updateContext": null }, - "value": "You must define getAttachment() method to convert glTF with external resources", - "start": 3770, - "end": 3850, + "value": "false", + "start": 4115, + "end": 4120, "loc": { "start": { - "line": 105, - "column": 36 + "line": 113, + "column": 52 }, "end": { - "line": 105, - "column": 116 + "line": 113, + "column": 57 } } }, @@ -56042,24 +57843,50 @@ "postfix": false, "binop": null }, - "start": 3850, - "end": 3851, + "start": 4120, + "end": 4121, "loc": { "start": { - "line": 105, - "column": 116 + "line": 113, + "column": 57 }, "end": { - "line": 105, - "column": 117 + "line": 113, + "column": 58 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4121, + "end": 4122, + "loc": { + "start": { + "line": 113, + "column": 58 + }, + "end": { + "line": 113, + "column": 59 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56067,67 +57894,68 @@ "postfix": false, "binop": null }, - "start": 3868, - "end": 3869, + "value": "includeTextures", + "start": 4139, + "end": 4154, "loc": { "start": { - "line": 106, + "line": 114, "column": 16 }, "end": { - "line": 106, - "column": 17 + "line": 114, + "column": 31 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3869, - "end": 3870, + "start": 4154, + "end": 4155, "loc": { "start": { - "line": 106, - "column": 17 + "line": 114, + "column": 31 }, "end": { - "line": 106, - "column": 18 + "line": 114, + "column": 32 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 3870, - "end": 3871, + "start": 4156, + "end": 4157, "loc": { "start": { - "line": 106, - "column": 18 + "line": 114, + "column": 33 }, "end": { - "line": 106, - "column": 19 + "line": 114, + "column": 34 } } }, @@ -56143,23 +57971,23 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 3888, - "end": 3891, + "value": "includeTextures", + "start": 4157, + "end": 4172, "loc": { "start": { - "line": 107, - "column": 16 + "line": 114, + "column": 34 }, "end": { - "line": 107, - "column": 19 + "line": 114, + "column": 49 } } }, { "type": { - "label": ":", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -56167,52 +57995,56 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 3891, - "end": 3892, + "value": "!==", + "start": 4173, + "end": 4176, "loc": { "start": { - "line": 107, - "column": 19 + "line": 114, + "column": 50 }, "end": { - "line": 107, - "column": 20 + "line": 114, + "column": 53 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "false", + "keyword": "false", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3893, - "end": 3894, + "value": "false", + "start": 4177, + "end": 4182, "loc": { "start": { - "line": 107, - "column": 21 + "line": 114, + "column": 54 }, "end": { - "line": 107, - "column": 22 + "line": 114, + "column": 59 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56220,23 +58052,22 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 3894, - "end": 3897, + "start": 4182, + "end": 4183, "loc": { "start": { - "line": 107, - "column": 22 + "line": 114, + "column": 59 }, "end": { - "line": 107, - "column": 25 + "line": 114, + "column": 60 } } }, { "type": { - "label": "||", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -56244,27 +58075,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 3898, - "end": 3900, + "start": 4183, + "end": 4184, "loc": { "start": { - "line": 107, - "column": 26 + "line": 114, + "column": 60 }, "end": { - "line": 107, - "column": 28 + "line": 114, + "column": 61 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56274,49 +58103,50 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 3901, - "end": 3909, + "value": "geometryCreated", + "start": 4201, + "end": 4216, "loc": { "start": { - "line": 107, - "column": 29 + "line": 115, + "column": 16 }, "end": { - "line": 107, - "column": 37 + "line": 115, + "column": 31 } } }, { "type": { - "label": "(", + "label": ":", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3910, - "end": 3911, + "start": 4216, + "end": 4217, "loc": { "start": { - "line": 107, - "column": 38 + "line": 115, + "column": 31 }, "end": { - "line": 107, - "column": 39 + "line": 115, + "column": 32 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56325,23 +58155,22 @@ "postfix": false, "binop": null }, - "value": "msg", - "start": 3911, - "end": 3914, + "start": 4218, + "end": 4219, "loc": { "start": { - "line": 107, - "column": 39 + "line": 115, + "column": 33 }, "end": { - "line": 107, - "column": 42 + "line": 115, + "column": 34 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56351,49 +58180,50 @@ "postfix": false, "binop": null }, - "start": 3914, - "end": 3915, + "start": 4219, + "end": 4220, "loc": { "start": { - "line": 107, - "column": 42 + "line": 115, + "column": 34 }, "end": { - "line": 107, - "column": 43 + "line": 115, + "column": 35 } } }, { "type": { - "label": "{", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3916, - "end": 3917, + "start": 4220, + "end": 4221, "loc": { "start": { - "line": 107, - "column": 44 + "line": 115, + "column": 35 }, "end": { - "line": 107, - "column": 45 + "line": 115, + "column": 36 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56401,41 +58231,70 @@ "postfix": false, "binop": null }, - "start": 3934, - "end": 3935, + "value": "nextId", + "start": 4238, + "end": 4244, "loc": { "start": { - "line": 108, + "line": 116, "column": 16 }, "end": { - "line": 108, - "column": 17 + "line": 116, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3935, - "end": 3936, + "start": 4244, + "end": 4245, "loc": { "start": { - "line": 108, - "column": 17 + "line": 116, + "column": 22 }, "end": { - "line": 108, - "column": 18 + "line": 116, + "column": 23 + } + } + }, + { + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 4246, + "end": 4247, + "loc": { + "start": { + "line": 116, + "column": 24 + }, + "end": { + "line": 116, + "column": 25 } } }, @@ -56452,16 +58311,16 @@ "binop": null, "updateContext": null }, - "start": 3936, - "end": 3937, + "start": 4247, + "end": 4248, "loc": { "start": { - "line": 108, - "column": 18 + "line": 116, + "column": 25 }, "end": { - "line": 108, - "column": 19 + "line": 116, + "column": 26 } } }, @@ -56477,17 +58336,17 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 3954, - "end": 3959, + "value": "geometriesCreated", + "start": 4265, + "end": 4282, "loc": { "start": { - "line": 109, + "line": 117, "column": 16 }, "end": { - "line": 109, - "column": 21 + "line": 117, + "column": 33 } } }, @@ -56504,24 +58363,23 @@ "binop": null, "updateContext": null }, - "start": 3959, - "end": 3960, + "start": 4283, + "end": 4284, "loc": { "start": { - "line": 109, - "column": 21 + "line": 117, + "column": 34 }, "end": { - "line": 109, - "column": 22 + "line": 117, + "column": 35 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -56530,25 +58388,24 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 3961, - "end": 3969, + "start": 4285, + "end": 4286, "loc": { "start": { - "line": 109, - "column": 23 + "line": 117, + "column": 36 }, "end": { - "line": 109, - "column": 31 + "line": 117, + "column": 37 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56556,16 +58413,42 @@ "postfix": false, "binop": null }, - "start": 3970, - "end": 3971, + "start": 4286, + "end": 4287, "loc": { "start": { - "line": 109, - "column": 32 + "line": 117, + "column": 37 }, "end": { - "line": 109, - "column": 33 + "line": 117, + "column": 38 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 4287, + "end": 4288, + "loc": { + "start": { + "line": 117, + "column": 38 + }, + "end": { + "line": 117, + "column": 39 } } }, @@ -56581,23 +58464,23 @@ "postfix": false, "binop": null }, - "value": "msg", - "start": 3971, - "end": 3974, + "value": "stats", + "start": 4305, + "end": 4310, "loc": { "start": { - "line": 109, - "column": 33 + "line": 118, + "column": 16 }, "end": { - "line": 109, - "column": 36 + "line": 118, + "column": 21 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -56607,41 +58490,42 @@ "postfix": false, "binop": null }, - "start": 3974, - "end": 3975, + "start": 4323, + "end": 4324, "loc": { "start": { - "line": 109, - "column": 36 + "line": 119, + "column": 12 }, "end": { - "line": 109, - "column": 37 + "line": 119, + "column": 13 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 3976, - "end": 3977, + "start": 4324, + "end": 4325, "loc": { "start": { - "line": 109, - "column": 38 + "line": 119, + "column": 13 }, "end": { - "line": 109, - "column": 39 + "line": 119, + "column": 14 } } }, @@ -56657,17 +58541,17 @@ "postfix": false, "binop": null }, - "value": "console", - "start": 3998, - "end": 4005, + "value": "ctx", + "start": 4339, + "end": 4342, "loc": { "start": { - "line": 110, - "column": 20 + "line": 121, + "column": 12 }, "end": { - "line": 110, - "column": 27 + "line": 121, + "column": 15 } } }, @@ -56684,16 +58568,16 @@ "binop": null, "updateContext": null }, - "start": 4005, - "end": 4006, + "start": 4342, + "end": 4343, "loc": { "start": { - "line": 110, - "column": 27 + "line": 121, + "column": 15 }, "end": { - "line": 110, - "column": 28 + "line": 121, + "column": 16 } } }, @@ -56709,17 +58593,17 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 4006, - "end": 4011, + "value": "log", + "start": 4343, + "end": 4346, "loc": { "start": { - "line": 110, - "column": 28 + "line": 121, + "column": 16 }, "end": { - "line": 110, - "column": 33 + "line": 121, + "column": 19 } } }, @@ -56735,22 +58619,22 @@ "postfix": false, "binop": null }, - "start": 4011, - "end": 4012, + "start": 4346, + "end": 4347, "loc": { "start": { - "line": 110, - "column": 33 + "line": 121, + "column": 19 }, "end": { - "line": 110, - "column": 34 + "line": 121, + "column": 20 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56758,19 +58642,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "msg", - "start": 4012, - "end": 4015, + "value": "Using parser: parseGLTFIntoXKTModel", + "start": 4347, + "end": 4384, "loc": { "start": { - "line": 110, - "column": 34 + "line": 121, + "column": 20 }, "end": { - "line": 110, - "column": 37 + "line": 121, + "column": 57 } } }, @@ -56786,16 +58671,16 @@ "postfix": false, "binop": null }, - "start": 4015, - "end": 4016, + "start": 4384, + "end": 4385, "loc": { "start": { - "line": 110, - "column": 37 + "line": 121, + "column": 57 }, "end": { - "line": 110, - "column": 38 + "line": 121, + "column": 58 } } }, @@ -56812,24 +58697,24 @@ "binop": null, "updateContext": null }, - "start": 4016, - "end": 4017, + "start": 4385, + "end": 4386, "loc": { "start": { - "line": 110, - "column": 38 + "line": 121, + "column": 58 }, "end": { - "line": 110, - "column": 39 + "line": 121, + "column": 59 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -56837,23 +58722,24 @@ "postfix": false, "binop": null }, - "start": 4034, - "end": 4035, + "value": "ctx", + "start": 4399, + "end": 4402, "loc": { "start": { - "line": 111, - "column": 16 + "line": 122, + "column": 12 }, "end": { - "line": 111, - "column": 17 + "line": 122, + "column": 15 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -56863,16 +58749,16 @@ "binop": null, "updateContext": null }, - "start": 4035, - "end": 4036, + "start": 4402, + "end": 4403, "loc": { "start": { - "line": 111, - "column": 17 + "line": 122, + "column": 15 }, "end": { - "line": 111, - "column": 18 + "line": 122, + "column": 16 } } }, @@ -56888,49 +58774,48 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 4053, - "end": 4061, + "value": "log", + "start": 4403, + "end": 4406, "loc": { "start": { - "line": 112, + "line": 122, "column": 16 }, "end": { - "line": 112, - "column": 24 + "line": 122, + "column": 19 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4061, - "end": 4062, + "start": 4406, + "end": 4407, "loc": { "start": { - "line": 112, - "column": 24 + "line": 122, + "column": 19 }, "end": { - "line": 112, - "column": 25 + "line": 122, + "column": 20 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -56940,24 +58825,23 @@ "postfix": false, "binop": null }, - "value": "includeNormals", - "start": 4079, - "end": 4093, + "start": 4407, + "end": 4408, "loc": { "start": { - "line": 113, - "column": 16 + "line": 122, + "column": 20 }, "end": { - "line": 113, - "column": 30 + "line": 122, + "column": 21 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -56967,22 +58851,23 @@ "binop": null, "updateContext": null }, - "start": 4093, - "end": 4094, + "value": "Parsing normals: ", + "start": 4408, + "end": 4425, "loc": { "start": { - "line": 113, - "column": 30 + "line": 122, + "column": 21 }, "end": { - "line": 113, - "column": 31 + "line": 122, + "column": 38 } } }, { "type": { - "label": "(", + "label": "${", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -56992,16 +58877,16 @@ "postfix": false, "binop": null }, - "start": 4095, - "end": 4096, + "start": 4425, + "end": 4427, "loc": { "start": { - "line": 113, - "column": 32 + "line": 122, + "column": 38 }, "end": { - "line": 113, - "column": 33 + "line": 122, + "column": 40 } } }, @@ -57017,53 +58902,25 @@ "postfix": false, "binop": null }, - "value": "includeNormals", - "start": 4096, - "end": 4110, - "loc": { - "start": { - "line": 113, - "column": 33 - }, - "end": { - "line": 113, - "column": 47 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 4111, - "end": 4114, + "value": "ctx", + "start": 4427, + "end": 4430, "loc": { "start": { - "line": 113, - "column": 48 + "line": 122, + "column": 40 }, "end": { - "line": 113, - "column": 51 + "line": 122, + "column": 43 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57072,25 +58929,24 @@ "binop": null, "updateContext": null }, - "value": "false", - "start": 4115, - "end": 4120, + "start": 4430, + "end": 4431, "loc": { "start": { - "line": 113, - "column": 52 + "line": 122, + "column": 43 }, "end": { - "line": 113, - "column": 57 + "line": 122, + "column": 44 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57098,22 +58954,23 @@ "postfix": false, "binop": null }, - "start": 4120, - "end": 4121, + "value": "includeNormals", + "start": 4431, + "end": 4445, "loc": { "start": { - "line": 113, - "column": 57 + "line": 122, + "column": 44 }, "end": { - "line": 113, + "line": 122, "column": 58 } } }, { "type": { - "label": ",", + "label": "?", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -57124,22 +58981,22 @@ "binop": null, "updateContext": null }, - "start": 4121, - "end": 4122, + "start": 4446, + "end": 4447, "loc": { "start": { - "line": 113, - "column": 58 + "line": 122, + "column": 59 }, "end": { - "line": 113, - "column": 59 + "line": 122, + "column": 60 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57147,19 +59004,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "includeTextures", - "start": 4139, - "end": 4154, + "value": "enabled", + "start": 4448, + "end": 4457, "loc": { "start": { - "line": 114, - "column": 16 + "line": 122, + "column": 61 }, "end": { - "line": 114, - "column": 31 + "line": 122, + "column": 70 } } }, @@ -57176,49 +59034,51 @@ "binop": null, "updateContext": null }, - "start": 4154, - "end": 4155, + "start": 4458, + "end": 4459, "loc": { "start": { - "line": 114, - "column": 31 + "line": 122, + "column": 71 }, "end": { - "line": 114, - "column": 32 + "line": 122, + "column": 72 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "string", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4156, - "end": 4157, + "value": "disabled", + "start": 4460, + "end": 4470, "loc": { "start": { - "line": 114, - "column": 33 + "line": 122, + "column": 73 }, "end": { - "line": 114, - "column": 34 + "line": 122, + "column": 83 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57226,51 +59086,49 @@ "postfix": false, "binop": null }, - "value": "includeTextures", - "start": 4157, - "end": 4172, + "start": 4470, + "end": 4471, "loc": { "start": { - "line": 114, - "column": 34 + "line": 122, + "column": 83 }, "end": { - "line": 114, - "column": 49 + "line": 122, + "column": 84 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 4173, - "end": 4176, + "value": "", + "start": 4471, + "end": 4471, "loc": { "start": { - "line": 114, - "column": 50 + "line": 122, + "column": 84 }, "end": { - "line": 114, - "column": 53 + "line": 122, + "column": 84 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57278,20 +59136,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 4177, - "end": 4182, + "start": 4471, + "end": 4472, "loc": { "start": { - "line": 114, - "column": 54 + "line": 122, + "column": 84 }, "end": { - "line": 114, - "column": 59 + "line": 122, + "column": 85 } } }, @@ -57307,22 +59163,22 @@ "postfix": false, "binop": null }, - "start": 4182, - "end": 4183, + "start": 4472, + "end": 4473, "loc": { "start": { - "line": 114, - "column": 59 + "line": 122, + "column": 85 }, "end": { - "line": 114, - "column": 60 + "line": 122, + "column": 86 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -57333,16 +59189,16 @@ "binop": null, "updateContext": null }, - "start": 4183, - "end": 4184, + "start": 4473, + "end": 4474, "loc": { "start": { - "line": 114, - "column": 60 + "line": 122, + "column": 86 }, "end": { - "line": 114, - "column": 61 + "line": 122, + "column": 87 } } }, @@ -57358,24 +59214,24 @@ "postfix": false, "binop": null }, - "value": "geometryCreated", - "start": 4201, - "end": 4216, + "value": "ctx", + "start": 4487, + "end": 4490, "loc": { "start": { - "line": 115, - "column": 16 + "line": 123, + "column": 12 }, "end": { - "line": 115, - "column": 31 + "line": 123, + "column": 15 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -57385,23 +59241,23 @@ "binop": null, "updateContext": null }, - "start": 4216, - "end": 4217, + "start": 4490, + "end": 4491, "loc": { "start": { - "line": 115, - "column": 31 + "line": 123, + "column": 15 }, "end": { - "line": 115, - "column": 32 + "line": 123, + "column": 16 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -57410,24 +59266,25 @@ "postfix": false, "binop": null }, - "start": 4218, - "end": 4219, + "value": "log", + "start": 4491, + "end": 4494, "loc": { "start": { - "line": 115, - "column": 33 + "line": 123, + "column": 16 }, "end": { - "line": 115, - "column": 34 + "line": 123, + "column": 19 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57435,100 +59292,99 @@ "postfix": false, "binop": null }, - "start": 4219, - "end": 4220, + "start": 4494, + "end": 4495, "loc": { "start": { - "line": 115, - "column": 34 + "line": 123, + "column": 19 }, "end": { - "line": 115, - "column": 35 + "line": 123, + "column": 20 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "`", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4220, - "end": 4221, + "start": 4495, + "end": 4496, "loc": { "start": { - "line": 115, - "column": 35 + "line": 123, + "column": 20 }, "end": { - "line": 115, - "column": 36 + "line": 123, + "column": 21 } } }, { "type": { - "label": "name", + "label": "template", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "nextId", - "start": 4238, - "end": 4244, + "value": "Parsing textures: ", + "start": 4496, + "end": 4514, "loc": { "start": { - "line": 116, - "column": 16 + "line": 123, + "column": 21 }, "end": { - "line": 116, - "column": 22 + "line": 123, + "column": 39 } } }, { "type": { - "label": ":", + "label": "${", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4244, - "end": 4245, + "start": 4514, + "end": 4516, "loc": { "start": { - "line": 116, - "column": 22 + "line": 123, + "column": 39 }, "end": { - "line": 116, - "column": 23 + "line": 123, + "column": 41 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57536,27 +59392,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 4246, - "end": 4247, + "value": "ctx", + "start": 4516, + "end": 4519, "loc": { "start": { - "line": 116, - "column": 24 + "line": 123, + "column": 41 }, "end": { - "line": 116, - "column": 25 + "line": 123, + "column": 44 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -57566,16 +59421,16 @@ "binop": null, "updateContext": null }, - "start": 4247, - "end": 4248, + "start": 4519, + "end": 4520, "loc": { "start": { - "line": 116, - "column": 25 + "line": 123, + "column": 44 }, "end": { - "line": 116, - "column": 26 + "line": 123, + "column": 45 } } }, @@ -57591,50 +59446,51 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 4265, - "end": 4270, + "value": "includeTextures", + "start": 4520, + "end": 4535, "loc": { "start": { - "line": 117, - "column": 16 + "line": 123, + "column": 45 }, "end": { - "line": 117, - "column": 21 + "line": 123, + "column": 60 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "?", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4283, - "end": 4284, + "start": 4536, + "end": 4537, "loc": { "start": { - "line": 118, - "column": 12 + "line": 123, + "column": 61 }, "end": { - "line": 118, - "column": 13 + "line": 123, + "column": 62 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57643,50 +59499,51 @@ "binop": null, "updateContext": null }, - "start": 4284, - "end": 4285, + "value": "enabled", + "start": 4538, + "end": 4547, "loc": { "start": { - "line": 118, - "column": 13 + "line": 123, + "column": 63 }, "end": { - "line": 118, - "column": 14 + "line": 123, + "column": 72 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 4299, - "end": 4302, + "start": 4548, + "end": 4549, "loc": { "start": { - "line": 120, - "column": 12 + "line": 123, + "column": 73 }, "end": { - "line": 120, - "column": 15 + "line": 123, + "column": 74 } } }, { "type": { - "label": ".", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57695,24 +59552,25 @@ "binop": null, "updateContext": null }, - "start": 4302, - "end": 4303, + "value": "disabled", + "start": 4550, + "end": 4560, "loc": { "start": { - "line": 120, - "column": 15 + "line": 123, + "column": 75 }, "end": { - "line": 120, - "column": 16 + "line": 123, + "column": 85 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -57720,48 +59578,49 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 4303, - "end": 4306, + "start": 4560, + "end": 4561, "loc": { "start": { - "line": 120, - "column": 16 + "line": 123, + "column": 85 }, "end": { - "line": 120, - "column": 19 + "line": 123, + "column": 86 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "template", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4306, - "end": 4307, + "value": "", + "start": 4561, + "end": 4561, "loc": { "start": { - "line": 120, - "column": 19 + "line": 123, + "column": 86 }, "end": { - "line": 120, - "column": 20 + "line": 123, + "column": 86 } } }, { "type": { - "label": "string", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57769,20 +59628,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Using parser: parseGLTFIntoXKTModel", - "start": 4307, - "end": 4344, + "start": 4561, + "end": 4562, "loc": { "start": { - "line": 120, - "column": 20 + "line": 123, + "column": 86 }, "end": { - "line": 120, - "column": 57 + "line": 123, + "column": 87 } } }, @@ -57798,16 +59655,16 @@ "postfix": false, "binop": null }, - "start": 4344, - "end": 4345, + "start": 4562, + "end": 4563, "loc": { "start": { - "line": 120, - "column": 57 + "line": 123, + "column": 87 }, "end": { - "line": 120, - "column": 58 + "line": 123, + "column": 88 } } }, @@ -57824,67 +59681,68 @@ "binop": null, "updateContext": null }, - "start": 4345, - "end": 4346, + "start": 4563, + "end": 4564, "loc": { "start": { - "line": 120, - "column": 58 + "line": 123, + "column": 88 }, "end": { - "line": 120, - "column": 59 + "line": 123, + "column": 89 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 4359, - "end": 4362, + "value": "if", + "start": 4578, + "end": 4580, "loc": { "start": { - "line": 121, + "line": 125, "column": 12 }, "end": { - "line": 121, - "column": 15 + "line": 125, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4362, - "end": 4363, + "start": 4581, + "end": 4582, "loc": { "start": { - "line": 121, + "line": 125, "column": 15 }, "end": { - "line": 121, + "line": 125, "column": 16 } } @@ -57901,48 +59759,49 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 4363, - "end": 4366, + "value": "ctx", + "start": 4582, + "end": 4585, "loc": { "start": { - "line": 121, + "line": 125, "column": 16 }, "end": { - "line": 121, + "line": 125, "column": 19 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4366, - "end": 4367, + "start": 4585, + "end": 4586, "loc": { "start": { - "line": 121, + "line": 125, "column": 19 }, "end": { - "line": 121, + "line": 125, "column": 20 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -57952,22 +59811,23 @@ "postfix": false, "binop": null }, - "start": 4367, - "end": 4368, + "value": "includeTextures", + "start": 4586, + "end": 4601, "loc": { "start": { - "line": 121, + "line": 125, "column": 20 }, "end": { - "line": 121, - "column": 21 + "line": 125, + "column": 35 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -57975,26 +59835,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Parsing normals: ", - "start": 4368, - "end": 4385, + "start": 4601, + "end": 4602, "loc": { "start": { - "line": 121, - "column": 21 + "line": 125, + "column": 35 }, "end": { - "line": 121, - "column": 38 + "line": 125, + "column": 36 } } }, { "type": { - "label": "${", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -58004,16 +59862,16 @@ "postfix": false, "binop": null }, - "start": 4385, - "end": 4387, + "start": 4603, + "end": 4604, "loc": { "start": { - "line": 121, - "column": 38 + "line": 125, + "column": 37 }, "end": { - "line": 121, - "column": 40 + "line": 125, + "column": 38 } } }, @@ -58029,43 +59887,42 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4387, - "end": 4390, + "value": "parseTextures", + "start": 4621, + "end": 4634, "loc": { "start": { - "line": 121, - "column": 40 + "line": 126, + "column": 16 }, "end": { - "line": 121, - "column": 43 + "line": 126, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4390, - "end": 4391, + "start": 4634, + "end": 4635, "loc": { "start": { - "line": 121, - "column": 43 + "line": 126, + "column": 29 }, "end": { - "line": 121, - "column": 44 + "line": 126, + "column": 30 } } }, @@ -58081,76 +59938,48 @@ "postfix": false, "binop": null }, - "value": "includeNormals", - "start": 4391, - "end": 4405, - "loc": { - "start": { - "line": 121, - "column": 44 - }, - "end": { - "line": 121, - "column": 58 - } - } - }, - { - "type": { - "label": "?", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 4406, - "end": 4407, + "value": "ctx", + "start": 4635, + "end": 4638, "loc": { "start": { - "line": 121, - "column": 59 + "line": 126, + "column": 30 }, "end": { - "line": 121, - "column": 60 + "line": 126, + "column": 33 } } }, { "type": { - "label": "string", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "enabled", - "start": 4408, - "end": 4417, + "start": 4638, + "end": 4639, "loc": { "start": { - "line": 121, - "column": 61 + "line": 126, + "column": 33 }, "end": { - "line": 121, - "column": 70 + "line": 126, + "column": 34 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -58161,51 +59990,49 @@ "binop": null, "updateContext": null }, - "start": 4418, - "end": 4419, + "start": 4639, + "end": 4640, "loc": { "start": { - "line": 121, - "column": 71 + "line": 126, + "column": 34 }, "end": { - "line": 121, - "column": 72 + "line": 126, + "column": 35 } } }, { "type": { - "label": "string", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "disabled", - "start": 4420, - "end": 4430, + "start": 4653, + "end": 4654, "loc": { "start": { - "line": 121, - "column": 73 + "line": 127, + "column": 12 }, "end": { - "line": 121, - "column": 83 + "line": 127, + "column": 13 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58213,49 +60040,48 @@ "postfix": false, "binop": null }, - "start": 4430, - "end": 4431, + "value": "parseMaterials", + "start": 4667, + "end": 4681, "loc": { "start": { - "line": 121, - "column": 83 + "line": 128, + "column": 12 }, "end": { - "line": 121, - "column": 84 + "line": 128, + "column": 26 } } }, { "type": { - "label": "template", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "", - "start": 4431, - "end": 4431, + "start": 4681, + "end": 4682, "loc": { "start": { - "line": 121, - "column": 84 + "line": 128, + "column": 26 }, "end": { - "line": 121, - "column": 84 + "line": 128, + "column": 27 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58265,16 +60091,17 @@ "postfix": false, "binop": null }, - "start": 4431, - "end": 4432, + "value": "ctx", + "start": 4682, + "end": 4685, "loc": { "start": { - "line": 121, - "column": 84 + "line": 128, + "column": 27 }, "end": { - "line": 121, - "column": 85 + "line": 128, + "column": 30 } } }, @@ -58290,16 +60117,16 @@ "postfix": false, "binop": null }, - "start": 4432, - "end": 4433, + "start": 4685, + "end": 4686, "loc": { "start": { - "line": 121, - "column": 85 + "line": 128, + "column": 30 }, "end": { - "line": 121, - "column": 86 + "line": 128, + "column": 31 } } }, @@ -58316,16 +60143,16 @@ "binop": null, "updateContext": null }, - "start": 4433, - "end": 4434, + "start": 4686, + "end": 4687, "loc": { "start": { - "line": 121, - "column": 86 + "line": 128, + "column": 31 }, "end": { - "line": 121, - "column": 87 + "line": 128, + "column": 32 } } }, @@ -58341,43 +60168,42 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4447, - "end": 4450, + "value": "parseDefaultScene", + "start": 4700, + "end": 4717, "loc": { "start": { - "line": 122, + "line": 129, "column": 12 }, "end": { - "line": 122, - "column": 15 + "line": 129, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4450, - "end": 4451, + "start": 4717, + "end": 4718, "loc": { "start": { - "line": 122, - "column": 15 + "line": 129, + "column": 29 }, "end": { - "line": 122, - "column": 16 + "line": 129, + "column": 30 } } }, @@ -58393,25 +60219,25 @@ "postfix": false, "binop": null }, - "value": "log", - "start": 4451, - "end": 4454, + "value": "ctx", + "start": 4718, + "end": 4721, "loc": { "start": { - "line": 122, - "column": 16 + "line": 129, + "column": 30 }, "end": { - "line": 122, - "column": 19 + "line": 129, + "column": 33 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58419,74 +60245,74 @@ "postfix": false, "binop": null }, - "start": 4454, - "end": 4455, + "start": 4721, + "end": 4722, "loc": { "start": { - "line": 122, - "column": 19 + "line": 129, + "column": 33 }, "end": { - "line": 122, - "column": 20 + "line": 129, + "column": 34 } } }, { "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4455, - "end": 4456, + "start": 4722, + "end": 4723, "loc": { "start": { - "line": 122, - "column": 20 + "line": 129, + "column": 34 }, "end": { - "line": 122, - "column": 21 + "line": 129, + "column": 35 } } }, { "type": { - "label": "template", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Parsing textures: ", - "start": 4456, - "end": 4474, + "value": "resolve", + "start": 4737, + "end": 4744, "loc": { "start": { - "line": 122, - "column": 21 + "line": 131, + "column": 12 }, "end": { - "line": 122, - "column": 39 + "line": 131, + "column": 19 } } }, { "type": { - "label": "${", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -58496,24 +60322,24 @@ "postfix": false, "binop": null }, - "start": 4474, - "end": 4476, + "start": 4744, + "end": 4745, "loc": { "start": { - "line": 122, - "column": 39 + "line": 131, + "column": 19 }, "end": { - "line": 122, - "column": 41 + "line": 131, + "column": 20 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58521,24 +60347,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4476, - "end": 4479, + "start": 4745, + "end": 4746, "loc": { "start": { - "line": 122, - "column": 41 + "line": 131, + "column": 20 }, "end": { - "line": 122, - "column": 44 + "line": 131, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58548,24 +60373,24 @@ "binop": null, "updateContext": null }, - "start": 4479, - "end": 4480, + "start": 4746, + "end": 4747, "loc": { "start": { - "line": 122, - "column": 44 + "line": 131, + "column": 21 }, "end": { - "line": 122, - "column": 45 + "line": 131, + "column": 22 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58573,23 +60398,22 @@ "postfix": false, "binop": null }, - "value": "includeTextures", - "start": 4480, - "end": 4495, + "start": 4757, + "end": 4758, "loc": { "start": { - "line": 122, - "column": 45 + "line": 133, + "column": 8 }, "end": { - "line": 122, - "column": 60 + "line": 133, + "column": 9 } } }, { "type": { - "label": "?", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -58600,22 +60424,47 @@ "binop": null, "updateContext": null }, - "start": 4496, - "end": 4497, + "start": 4758, + "end": 4759, "loc": { "start": { - "line": 122, - "column": 61 + "line": 133, + "column": 9 }, "end": { - "line": 122, - "column": 62 + "line": 133, + "column": 10 } } }, { "type": { - "label": "string", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 4760, + "end": 4761, + "loc": { + "start": { + "line": 133, + "column": 11 + }, + "end": { + "line": 133, + "column": 12 + } + } + }, + { + "type": { + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58623,54 +60472,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "enabled", - "start": 4498, - "end": 4507, + "value": "errMsg", + "start": 4761, + "end": 4767, "loc": { "start": { - "line": 122, - "column": 63 + "line": 133, + "column": 12 }, "end": { - "line": 122, - "column": 72 + "line": 133, + "column": 18 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4508, - "end": 4509, + "start": 4767, + "end": 4768, "loc": { "start": { - "line": 122, - "column": 73 + "line": 133, + "column": 18 }, "end": { - "line": 122, - "column": 74 + "line": 133, + "column": 19 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": "=>", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58679,25 +60526,24 @@ "binop": null, "updateContext": null }, - "value": "disabled", - "start": 4510, - "end": 4520, + "start": 4769, + "end": 4771, "loc": { "start": { - "line": 122, - "column": 75 + "line": 133, + "column": 20 }, "end": { - "line": 122, - "column": 85 + "line": 133, + "column": 22 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58705,50 +60551,49 @@ "postfix": false, "binop": null }, - "start": 4520, - "end": 4521, + "start": 4772, + "end": 4773, "loc": { "start": { - "line": 122, - "column": 85 + "line": 133, + "column": 23 }, "end": { - "line": 122, - "column": 86 + "line": 133, + "column": 24 } } }, { "type": { - "label": "template", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "", - "start": 4521, - "end": 4521, + "value": "reject", + "start": 4786, + "end": 4792, "loc": { "start": { - "line": 122, - "column": 86 + "line": 134, + "column": 12 }, "end": { - "line": 122, - "column": 86 + "line": 134, + "column": 18 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -58757,24 +60602,24 @@ "postfix": false, "binop": null }, - "start": 4521, - "end": 4522, + "start": 4792, + "end": 4793, "loc": { - "start": { - "line": 122, - "column": 86 + "start": { + "line": 134, + "column": 18 }, "end": { - "line": 122, - "column": 87 + "line": 134, + "column": 19 } } }, { "type": { - "label": ")", + "label": "`", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58782,23 +60627,23 @@ "postfix": false, "binop": null }, - "start": 4522, - "end": 4523, + "start": 4793, + "end": 4794, "loc": { "start": { - "line": 122, - "column": 87 + "line": 134, + "column": 19 }, "end": { - "line": 122, - "column": 88 + "line": 134, + "column": 20 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -58808,51 +60653,49 @@ "binop": null, "updateContext": null }, - "start": 4523, - "end": 4524, + "value": "[parseGLTFIntoXKTModel] ", + "start": 4794, + "end": 4818, "loc": { "start": { - "line": 122, - "column": 88 + "line": 134, + "column": 20 }, "end": { - "line": 122, - "column": 89 + "line": 134, + "column": 44 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, + "label": "${", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 4538, - "end": 4540, + "start": 4818, + "end": 4820, "loc": { "start": { - "line": 124, - "column": 12 + "line": 134, + "column": 44 }, "end": { - "line": 124, - "column": 14 + "line": 134, + "column": 46 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -58861,24 +60704,25 @@ "postfix": false, "binop": null }, - "start": 4541, - "end": 4542, + "value": "errMsg", + "start": 4820, + "end": 4826, "loc": { "start": { - "line": 124, - "column": 15 + "line": 134, + "column": 46 }, "end": { - "line": 124, - "column": 16 + "line": 134, + "column": 52 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -58886,23 +60730,22 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4542, - "end": 4545, + "start": 4826, + "end": 4827, "loc": { "start": { - "line": 124, - "column": 16 + "line": 134, + "column": 52 }, "end": { - "line": 124, - "column": 19 + "line": 134, + "column": 53 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -58913,22 +60756,23 @@ "binop": null, "updateContext": null }, - "start": 4545, - "end": 4546, + "value": "", + "start": 4827, + "end": 4827, "loc": { "start": { - "line": 124, - "column": 19 + "line": 134, + "column": 53 }, "end": { - "line": 124, - "column": 20 + "line": 134, + "column": 53 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -58938,17 +60782,16 @@ "postfix": false, "binop": null }, - "value": "includeTextures", - "start": 4546, - "end": 4561, + "start": 4827, + "end": 4828, "loc": { "start": { - "line": 124, - "column": 20 + "line": 134, + "column": 53 }, "end": { - "line": 124, - "column": 35 + "line": 134, + "column": 54 } } }, @@ -58964,49 +60807,50 @@ "postfix": false, "binop": null }, - "start": 4561, - "end": 4562, + "start": 4828, + "end": 4829, "loc": { "start": { - "line": 124, - "column": 35 + "line": 134, + "column": 54 }, "end": { - "line": 124, - "column": 36 + "line": 134, + "column": 55 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4563, - "end": 4564, + "start": 4829, + "end": 4830, "loc": { "start": { - "line": 124, - "column": 37 + "line": 134, + "column": 55 }, "end": { - "line": 124, - "column": 38 + "line": 134, + "column": 56 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59014,25 +60858,24 @@ "postfix": false, "binop": null }, - "value": "parseTextures", - "start": 4581, - "end": 4594, + "start": 4839, + "end": 4840, "loc": { "start": { - "line": 125, - "column": 16 + "line": 135, + "column": 8 }, "end": { - "line": 125, - "column": 29 + "line": 135, + "column": 9 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59040,48 +60883,48 @@ "postfix": false, "binop": null }, - "start": 4594, - "end": 4595, + "start": 4840, + "end": 4841, "loc": { "start": { - "line": 125, - "column": 29 + "line": 135, + "column": 9 }, "end": { - "line": 125, - "column": 30 + "line": 135, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 4595, - "end": 4598, + "start": 4841, + "end": 4842, "loc": { "start": { - "line": 125, - "column": 30 + "line": 135, + "column": 10 }, "end": { - "line": 125, - "column": 33 + "line": 135, + "column": 11 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59091,75 +60934,75 @@ "postfix": false, "binop": null }, - "start": 4598, - "end": 4599, + "start": 4847, + "end": 4848, "loc": { "start": { - "line": 125, - "column": 33 + "line": 136, + "column": 4 }, "end": { - "line": 125, - "column": 34 + "line": 136, + "column": 5 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4599, - "end": 4600, + "start": 4848, + "end": 4849, "loc": { "start": { - "line": 125, - "column": 34 + "line": 136, + "column": 5 }, "end": { - "line": 125, - "column": 35 + "line": 136, + "column": 6 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4613, - "end": 4614, + "start": 4849, + "end": 4850, "loc": { "start": { - "line": 126, - "column": 12 + "line": 136, + "column": 6 }, "end": { - "line": 126, - "column": 13 + "line": 136, + "column": 7 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59167,24 +61010,24 @@ "postfix": false, "binop": null }, - "value": "parseMaterials", - "start": 4627, - "end": 4641, + "start": 4851, + "end": 4852, "loc": { "start": { - "line": 127, - "column": 12 + "line": 137, + "column": 0 }, "end": { - "line": 127, - "column": 26 + "line": 137, + "column": 1 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "function", + "keyword": "function", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -59193,16 +61036,17 @@ "postfix": false, "binop": null }, - "start": 4641, - "end": 4642, + "value": "function", + "start": 4854, + "end": 4862, "loc": { "start": { - "line": 127, - "column": 26 + "line": 139, + "column": 0 }, "end": { - "line": 127, - "column": 27 + "line": 139, + "column": 8 } } }, @@ -59218,25 +61062,25 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4642, - "end": 4645, + "value": "parseTextures", + "start": 4863, + "end": 4876, "loc": { "start": { - "line": 127, - "column": 27 + "line": 139, + "column": 9 }, "end": { - "line": 127, - "column": 30 + "line": 139, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59244,50 +61088,50 @@ "postfix": false, "binop": null }, - "start": 4645, - "end": 4646, + "start": 4876, + "end": 4877, "loc": { "start": { - "line": 127, - "column": 30 + "line": 139, + "column": 22 }, "end": { - "line": 127, - "column": 31 + "line": 139, + "column": 23 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4646, - "end": 4647, + "value": "ctx", + "start": 4877, + "end": 4880, "loc": { "start": { - "line": 127, - "column": 31 + "line": 139, + "column": 23 }, "end": { - "line": 127, - "column": 32 + "line": 139, + "column": 26 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59295,23 +61139,22 @@ "postfix": false, "binop": null }, - "value": "parseDefaultScene", - "start": 4660, - "end": 4677, + "start": 4880, + "end": 4881, "loc": { "start": { - "line": 128, - "column": 12 + "line": 139, + "column": 26 }, "end": { - "line": 128, - "column": 29 + "line": 139, + "column": 27 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -59321,50 +61164,52 @@ "postfix": false, "binop": null }, - "start": 4677, - "end": 4678, + "start": 4882, + "end": 4883, "loc": { "start": { - "line": 128, - "column": 29 + "line": 139, + "column": 28 }, "end": { - "line": 128, - "column": 30 + "line": 139, + "column": 29 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 4678, - "end": 4681, + "value": "const", + "start": 4888, + "end": 4893, "loc": { "start": { - "line": 128, - "column": 30 + "line": 140, + "column": 4 }, "end": { - "line": 128, - "column": 33 + "line": 140, + "column": 9 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59372,42 +61217,44 @@ "postfix": false, "binop": null }, - "start": 4681, - "end": 4682, + "value": "gltfData", + "start": 4894, + "end": 4902, "loc": { "start": { - "line": 128, - "column": 33 + "line": 140, + "column": 10 }, "end": { - "line": 128, - "column": 34 + "line": 140, + "column": 18 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 4682, - "end": 4683, + "value": "=", + "start": 4903, + "end": 4904, "loc": { "start": { - "line": 128, - "column": 34 + "line": 140, + "column": 19 }, "end": { - "line": 128, - "column": 35 + "line": 140, + "column": 20 } } }, @@ -59423,50 +61270,51 @@ "postfix": false, "binop": null }, - "value": "resolve", - "start": 4697, - "end": 4704, + "value": "ctx", + "start": 4905, + "end": 4908, "loc": { "start": { - "line": 130, - "column": 12 + "line": 140, + "column": 21 }, "end": { - "line": 130, - "column": 19 + "line": 140, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4704, - "end": 4705, + "start": 4908, + "end": 4909, "loc": { "start": { - "line": 130, - "column": 19 + "line": 140, + "column": 24 }, "end": { - "line": 130, - "column": 20 + "line": 140, + "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59474,16 +61322,17 @@ "postfix": false, "binop": null }, - "start": 4705, - "end": 4706, + "value": "gltfData", + "start": 4909, + "end": 4917, "loc": { "start": { - "line": 130, - "column": 20 + "line": 140, + "column": 25 }, "end": { - "line": 130, - "column": 21 + "line": 140, + "column": 33 } } }, @@ -59500,22 +61349,23 @@ "binop": null, "updateContext": null }, - "start": 4706, - "end": 4707, + "start": 4917, + "end": 4918, "loc": { "start": { - "line": 130, - "column": 21 + "line": 140, + "column": 33 }, "end": { - "line": 130, - "column": 22 + "line": 140, + "column": 34 } } }, { "type": { - "label": "}", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59523,69 +61373,73 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4717, - "end": 4718, + "value": "const", + "start": 4923, + "end": 4928, "loc": { "start": { - "line": 132, - "column": 8 + "line": 141, + "column": 4 }, "end": { - "line": 132, + "line": 141, "column": 9 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4718, - "end": 4719, + "value": "textures", + "start": 4929, + "end": 4937, "loc": { "start": { - "line": 132, - "column": 9 + "line": 141, + "column": 10 }, "end": { - "line": 132, - "column": 10 + "line": 141, + "column": 18 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4720, - "end": 4721, + "value": "=", + "start": 4938, + "end": 4939, "loc": { "start": { - "line": 132, - "column": 11 + "line": 141, + "column": 19 }, "end": { - "line": 132, - "column": 12 + "line": 141, + "column": 20 } } }, @@ -59601,23 +61455,23 @@ "postfix": false, "binop": null }, - "value": "errMsg", - "start": 4721, - "end": 4727, + "value": "gltfData", + "start": 4940, + "end": 4948, "loc": { "start": { - "line": 132, - "column": 12 + "line": 141, + "column": 21 }, "end": { - "line": 132, - "column": 18 + "line": 141, + "column": 29 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59625,95 +61479,99 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4727, - "end": 4728, + "start": 4948, + "end": 4949, "loc": { "start": { - "line": 132, - "column": 18 + "line": 141, + "column": 29 }, "end": { - "line": 132, - "column": 19 + "line": 141, + "column": 30 } } }, { "type": { - "label": "=>", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4729, - "end": 4731, + "value": "textures", + "start": 4949, + "end": 4957, "loc": { "start": { - "line": 132, - "column": 20 + "line": 141, + "column": 30 }, "end": { - "line": 132, - "column": 22 + "line": 141, + "column": 38 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4732, - "end": 4733, + "start": 4957, + "end": 4958, "loc": { "start": { - "line": 132, - "column": 23 + "line": 141, + "column": 38 }, "end": { - "line": 132, - "column": 24 + "line": 141, + "column": 39 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "reject", - "start": 4746, - "end": 4752, + "value": "if", + "start": 4963, + "end": 4965, "loc": { "start": { - "line": 133, - "column": 12 + "line": 142, + "column": 4 }, "end": { - "line": 133, - "column": 18 + "line": 142, + "column": 6 } } }, @@ -59729,22 +61587,22 @@ "postfix": false, "binop": null }, - "start": 4752, - "end": 4753, + "start": 4966, + "end": 4967, "loc": { "start": { - "line": 133, - "column": 18 + "line": 142, + "column": 7 }, "end": { - "line": 133, - "column": 19 + "line": 142, + "column": 8 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59754,22 +61612,23 @@ "postfix": false, "binop": null }, - "start": 4753, - "end": 4754, + "value": "textures", + "start": 4967, + "end": 4975, "loc": { "start": { - "line": 133, - "column": 19 + "line": 142, + "column": 8 }, "end": { - "line": 133, - "column": 20 + "line": 142, + "column": 16 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59777,26 +61636,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "[parseGLTFIntoXKTModel] ", - "start": 4754, - "end": 4778, + "start": 4975, + "end": 4976, "loc": { "start": { - "line": 133, - "column": 20 + "line": 142, + "column": 16 }, "end": { - "line": 133, - "column": 44 + "line": 142, + "column": 17 } } }, { "type": { - "label": "${", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -59806,50 +61663,52 @@ "postfix": false, "binop": null }, - "start": 4778, - "end": 4780, + "start": 4977, + "end": 4978, "loc": { "start": { - "line": 133, - "column": 44 + "line": 142, + "column": 18 }, "end": { - "line": 133, - "column": 46 + "line": 142, + "column": 19 } } }, { "type": { - "label": "name", + "label": "for", + "keyword": "for", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "errMsg", - "start": 4780, - "end": 4786, + "value": "for", + "start": 4987, + "end": 4990, "loc": { "start": { - "line": 133, - "column": 46 + "line": 143, + "column": 8 }, "end": { - "line": 133, - "column": 52 + "line": 143, + "column": 11 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59857,22 +61716,23 @@ "postfix": false, "binop": null }, - "start": 4786, - "end": 4787, + "start": 4991, + "end": 4992, "loc": { "start": { - "line": 133, - "column": 52 + "line": 143, + "column": 12 }, "end": { - "line": 133, - "column": 53 + "line": 143, + "column": 13 } } }, { "type": { - "label": "template", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -59883,23 +61743,23 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 4787, - "end": 4787, + "value": "let", + "start": 4992, + "end": 4995, "loc": { "start": { - "line": 133, - "column": 53 + "line": 143, + "column": 13 }, "end": { - "line": 133, - "column": 53 + "line": 143, + "column": 16 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -59909,49 +61769,52 @@ "postfix": false, "binop": null }, - "start": 4787, - "end": 4788, + "value": "i", + "start": 4996, + "end": 4997, "loc": { "start": { - "line": 133, - "column": 53 + "line": 143, + "column": 17 }, "end": { - "line": 133, - "column": 54 + "line": 143, + "column": 18 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4788, - "end": 4789, + "value": "=", + "start": 4998, + "end": 4999, "loc": { "start": { - "line": 133, - "column": 54 + "line": 143, + "column": 19 }, "end": { - "line": 133, - "column": 55 + "line": 143, + "column": 20 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -59960,49 +61823,51 @@ "binop": null, "updateContext": null }, - "start": 4789, - "end": 4790, + "value": 0, + "start": 5000, + "end": 5001, "loc": { "start": { - "line": 133, - "column": 55 + "line": 143, + "column": 21 }, "end": { - "line": 133, - "column": 56 + "line": 143, + "column": 22 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4799, - "end": 4800, + "start": 5001, + "end": 5002, "loc": { "start": { - "line": 134, - "column": 8 + "line": 143, + "column": 22 }, "end": { - "line": 134, - "column": 9 + "line": 143, + "column": 23 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60010,50 +61875,52 @@ "postfix": false, "binop": null }, - "start": 4800, - "end": 4801, + "value": "len", + "start": 5003, + "end": 5006, "loc": { "start": { - "line": 134, - "column": 9 + "line": 143, + "column": 24 }, "end": { - "line": 134, - "column": 10 + "line": 143, + "column": 27 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 4801, - "end": 4802, + "value": "=", + "start": 5007, + "end": 5008, "loc": { "start": { - "line": 134, - "column": 10 + "line": 143, + "column": 28 }, "end": { - "line": 134, - "column": 11 + "line": 143, + "column": 29 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60061,22 +61928,23 @@ "postfix": false, "binop": null }, - "start": 4807, - "end": 4808, + "value": "textures", + "start": 5009, + "end": 5017, "loc": { "start": { - "line": 135, - "column": 4 + "line": 143, + "column": 30 }, "end": { - "line": 135, - "column": 5 + "line": 143, + "column": 38 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60084,52 +61952,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 4808, - "end": 4809, - "loc": { - "start": { - "line": 135, - "column": 5 - }, - "end": { - "line": 135, - "column": 6 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null, "updateContext": null }, - "start": 4809, - "end": 4810, + "start": 5017, + "end": 5018, "loc": { "start": { - "line": 135, - "column": 6 + "line": 143, + "column": 38 }, "end": { - "line": 135, - "column": 7 + "line": 143, + "column": 39 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60137,43 +61980,43 @@ "postfix": false, "binop": null }, - "start": 4811, - "end": 4812, + "value": "length", + "start": 5018, + "end": 5024, "loc": { "start": { - "line": 136, - "column": 0 + "line": 143, + "column": 39 }, "end": { - "line": 136, - "column": 1 + "line": 143, + "column": 45 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 4814, - "end": 4822, + "start": 5024, + "end": 5025, "loc": { "start": { - "line": 138, - "column": 0 + "line": 143, + "column": 45 }, "end": { - "line": 138, - "column": 8 + "line": 143, + "column": 46 } } }, @@ -60189,42 +62032,44 @@ "postfix": false, "binop": null }, - "value": "parseTextures", - "start": 4823, - "end": 4836, + "value": "i", + "start": 5026, + "end": 5027, "loc": { "start": { - "line": 138, - "column": 9 + "line": 143, + "column": 47 }, "end": { - "line": 138, - "column": 22 + "line": 143, + "column": 48 } } }, { "type": { - "label": "(", + "label": "", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 7, + "updateContext": null }, - "start": 4836, - "end": 4837, + "value": "<", + "start": 5028, + "end": 5029, "loc": { "start": { - "line": 138, - "column": 22 + "line": 143, + "column": 49 }, "end": { - "line": 138, - "column": 23 + "line": 143, + "column": 50 } } }, @@ -60240,49 +62085,50 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4837, - "end": 4840, + "value": "len", + "start": 5030, + "end": 5033, "loc": { "start": { - "line": 138, - "column": 23 + "line": 143, + "column": 51 }, "end": { - "line": 138, - "column": 26 + "line": 143, + "column": 54 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4840, - "end": 4841, + "start": 5033, + "end": 5034, "loc": { "start": { - "line": 138, - "column": 26 + "line": 143, + "column": 54 }, "end": { - "line": 138, - "column": 27 + "line": 143, + "column": 55 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -60291,52 +62137,51 @@ "postfix": false, "binop": null }, - "start": 4842, - "end": 4843, + "value": "i", + "start": 5035, + "end": 5036, "loc": { "start": { - "line": 138, - "column": 28 + "line": 143, + "column": 56 }, "end": { - "line": 138, - "column": 29 + "line": 143, + "column": 57 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "value": "const", - "start": 4848, - "end": 4853, + "value": "++", + "start": 5036, + "end": 5038, "loc": { "start": { - "line": 139, - "column": 4 + "line": 143, + "column": 57 }, "end": { - "line": 139, - "column": 9 + "line": 143, + "column": 59 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60344,44 +62189,41 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 4854, - "end": 4862, + "start": 5038, + "end": 5039, "loc": { "start": { - "line": 139, - "column": 10 + "line": 143, + "column": 59 }, "end": { - "line": 139, - "column": 18 + "line": 143, + "column": 60 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 4863, - "end": 4864, + "start": 5040, + "end": 5041, "loc": { "start": { - "line": 139, - "column": 19 + "line": 143, + "column": 61 }, "end": { - "line": 139, - "column": 20 + "line": 143, + "column": 62 } } }, @@ -60397,42 +62239,41 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 4865, - "end": 4868, + "value": "parseTexture", + "start": 5054, + "end": 5066, "loc": { "start": { - "line": 139, - "column": 21 + "line": 144, + "column": 12 }, "end": { - "line": 139, + "line": 144, "column": 24 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4868, - "end": 4869, + "start": 5066, + "end": 5067, "loc": { "start": { - "line": 139, + "line": 144, "column": 24 }, "end": { - "line": 139, + "line": 144, "column": 25 } } @@ -60449,23 +62290,23 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 4869, - "end": 4877, + "value": "ctx", + "start": 5067, + "end": 5070, "loc": { "start": { - "line": 139, + "line": 144, "column": 25 }, "end": { - "line": 139, - "column": 33 + "line": 144, + "column": 28 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -60476,129 +62317,126 @@ "binop": null, "updateContext": null }, - "start": 4877, - "end": 4878, + "start": 5070, + "end": 5071, "loc": { "start": { - "line": 139, - "column": 33 + "line": 144, + "column": 28 }, "end": { - "line": 139, - "column": 34 + "line": 144, + "column": 29 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 4883, - "end": 4888, + "value": "textures", + "start": 5072, + "end": 5080, "loc": { "start": { - "line": 140, - "column": 4 + "line": 144, + "column": 30 }, "end": { - "line": 140, - "column": 9 + "line": 144, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textures", - "start": 4889, - "end": 4897, + "start": 5080, + "end": 5081, "loc": { "start": { - "line": 140, - "column": 10 + "line": 144, + "column": 38 }, "end": { - "line": 140, - "column": 18 + "line": 144, + "column": 39 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 4898, - "end": 4899, + "value": "i", + "start": 5081, + "end": 5082, "loc": { "start": { - "line": 140, - "column": 19 + "line": 144, + "column": 39 }, "end": { - "line": 140, - "column": 20 + "line": 144, + "column": 40 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "gltfData", - "start": 4900, - "end": 4908, + "start": 5082, + "end": 5083, "loc": { "start": { - "line": 140, - "column": 21 + "line": 144, + "column": 40 }, "end": { - "line": 140, - "column": 29 + "line": 144, + "column": 41 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60606,78 +62444,76 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4908, - "end": 4909, + "start": 5083, + "end": 5084, "loc": { "start": { - "line": 140, - "column": 29 + "line": 144, + "column": 41 }, "end": { - "line": 140, - "column": 30 + "line": 144, + "column": 42 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textures", - "start": 4909, - "end": 4917, + "start": 5084, + "end": 5085, "loc": { "start": { - "line": 140, - "column": 30 + "line": 144, + "column": 42 }, "end": { - "line": 140, - "column": 38 + "line": 144, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4917, - "end": 4918, + "value": "ctx", + "start": 5098, + "end": 5101, "loc": { "start": { - "line": 140, - "column": 38 + "line": 145, + "column": 12 }, "end": { - "line": 140, - "column": 39 + "line": 145, + "column": 15 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60688,24 +62524,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 4923, - "end": 4925, + "start": 5101, + "end": 5102, "loc": { "start": { - "line": 141, - "column": 4 + "line": 145, + "column": 15 }, "end": { - "line": 141, - "column": 6 + "line": 145, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -60714,50 +62549,51 @@ "postfix": false, "binop": null }, - "start": 4926, - "end": 4927, + "value": "stats", + "start": 5102, + "end": 5107, "loc": { "start": { - "line": 141, - "column": 7 + "line": 145, + "column": 16 }, "end": { - "line": 141, - "column": 8 + "line": 145, + "column": 21 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textures", - "start": 4927, - "end": 4935, + "start": 5107, + "end": 5108, "loc": { "start": { - "line": 141, - "column": 8 + "line": 145, + "column": 21 }, "end": { - "line": 141, - "column": 16 + "line": 145, + "column": 22 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60765,77 +62601,77 @@ "postfix": false, "binop": null }, - "start": 4935, - "end": 4936, + "value": "numTextures", + "start": 5108, + "end": 5119, "loc": { "start": { - "line": 141, - "column": 16 + "line": 145, + "column": 22 }, "end": { - "line": 141, - "column": 17 + "line": 145, + "column": 33 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 4937, - "end": 4938, + "value": "++", + "start": 5119, + "end": 5121, "loc": { "start": { - "line": 141, - "column": 18 + "line": 145, + "column": 33 }, "end": { - "line": 141, - "column": 19 + "line": 145, + "column": 35 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 4947, - "end": 4950, + "start": 5121, + "end": 5122, "loc": { "start": { - "line": 142, - "column": 8 + "line": 145, + "column": 35 }, "end": { - "line": 142, - "column": 11 + "line": 145, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60843,23 +62679,22 @@ "postfix": false, "binop": null }, - "start": 4951, - "end": 4952, + "start": 5131, + "end": 5132, "loc": { "start": { - "line": 142, - "column": 12 + "line": 146, + "column": 8 }, "end": { - "line": 142, - "column": 13 + "line": 146, + "column": 9 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -60867,28 +62702,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 4952, - "end": 4955, + "start": 5137, + "end": 5138, "loc": { "start": { - "line": 142, - "column": 13 + "line": 147, + "column": 4 }, "end": { - "line": 142, - "column": 16 + "line": 147, + "column": 5 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -60896,50 +62729,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 4956, - "end": 4957, + "start": 5139, + "end": 5140, "loc": { "start": { - "line": 142, - "column": 17 + "line": 148, + "column": 0 }, "end": { - "line": 142, - "column": 18 + "line": 148, + "column": 1 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 4958, - "end": 4959, + "value": "function", + "start": 5142, + "end": 5150, "loc": { "start": { - "line": 142, - "column": 19 + "line": 150, + "column": 0 }, "end": { - "line": 142, - "column": 20 + "line": 150, + "column": 8 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -60947,46 +62779,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 4960, - "end": 4961, + "value": "parseTexture", + "start": 5151, + "end": 5163, "loc": { "start": { - "line": 142, - "column": 21 + "line": 150, + "column": 9 }, "end": { - "line": 142, - "column": 22 + "line": 150, + "column": 21 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4961, - "end": 4962, + "start": 5163, + "end": 5164, "loc": { "start": { - "line": 142, - "column": 22 + "line": 150, + "column": 21 }, "end": { - "line": 142, - "column": 23 + "line": 150, + "column": 22 } } }, @@ -61002,44 +62832,43 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 4963, - "end": 4966, + "value": "ctx", + "start": 5164, + "end": 5167, "loc": { "start": { - "line": 142, - "column": 24 + "line": 150, + "column": 22 }, "end": { - "line": 142, - "column": 27 + "line": 150, + "column": 25 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 4967, - "end": 4968, + "start": 5167, + "end": 5168, "loc": { "start": { - "line": 142, - "column": 28 + "line": 150, + "column": 25 }, "end": { - "line": 142, - "column": 29 + "line": 150, + "column": 26 } } }, @@ -61055,23 +62884,23 @@ "postfix": false, "binop": null }, - "value": "textures", - "start": 4969, - "end": 4977, + "value": "texture", + "start": 5169, + "end": 5176, "loc": { "start": { - "line": 142, - "column": 30 + "line": 150, + "column": 27 }, "end": { - "line": 142, - "column": 38 + "line": 150, + "column": 34 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -61079,26 +62908,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 4977, - "end": 4978, + "start": 5176, + "end": 5177, "loc": { "start": { - "line": 142, - "column": 38 + "line": 150, + "column": 34 }, "end": { - "line": 142, - "column": 39 + "line": 150, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61107,24 +62935,24 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 4978, - "end": 4984, + "start": 5178, + "end": 5179, "loc": { "start": { - "line": 142, - "column": 39 + "line": 150, + "column": 36 }, "end": { - "line": 142, - "column": 45 + "line": 150, + "column": 37 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61134,23 +62962,24 @@ "binop": null, "updateContext": null }, - "start": 4984, - "end": 4985, + "value": "if", + "start": 5184, + "end": 5186, "loc": { "start": { - "line": 142, - "column": 45 + "line": 151, + "column": 4 }, "end": { - "line": 142, - "column": 46 + "line": 151, + "column": 6 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61159,44 +62988,43 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 4986, - "end": 4987, + "start": 5187, + "end": 5188, "loc": { "start": { - "line": 142, - "column": 47 + "line": 151, + "column": 7 }, "end": { - "line": 142, - "column": 48 + "line": 151, + "column": 8 } } }, { "type": { - "label": "", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 4988, - "end": 4989, + "value": "!", + "start": 5188, + "end": 5189, "loc": { "start": { - "line": 142, - "column": 49 + "line": 151, + "column": 8 }, "end": { - "line": 142, - "column": 50 + "line": 151, + "column": 9 } } }, @@ -61212,24 +63040,24 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 4990, - "end": 4993, + "value": "texture", + "start": 5189, + "end": 5196, "loc": { "start": { - "line": 142, - "column": 51 + "line": 151, + "column": 9 }, "end": { - "line": 142, - "column": 54 + "line": 151, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61239,16 +63067,16 @@ "binop": null, "updateContext": null }, - "start": 4993, - "end": 4994, + "start": 5196, + "end": 5197, "loc": { "start": { - "line": 142, - "column": 54 + "line": 151, + "column": 16 }, "end": { - "line": 142, - "column": 55 + "line": 151, + "column": 17 } } }, @@ -61264,75 +63092,78 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 4995, - "end": 4996, + "value": "source", + "start": 5197, + "end": 5203, "loc": { "start": { - "line": 142, - "column": 56 + "line": 151, + "column": 17 }, "end": { - "line": 142, - "column": 57 + "line": 151, + "column": 23 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, + "label": "||", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": 1, + "updateContext": null }, - "value": "++", - "start": 4996, - "end": 4998, + "value": "||", + "start": 5204, + "end": 5206, "loc": { "start": { - "line": 142, - "column": 57 + "line": 151, + "column": 24 }, "end": { - "line": 142, - "column": 59 + "line": 151, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 4998, - "end": 4999, + "value": "!", + "start": 5207, + "end": 5208, "loc": { "start": { - "line": 142, - "column": 59 + "line": 151, + "column": 27 }, "end": { - "line": 142, - "column": 60 + "line": 151, + "column": 28 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61341,49 +63172,50 @@ "postfix": false, "binop": null }, - "start": 5000, - "end": 5001, + "value": "texture", + "start": 5208, + "end": 5215, "loc": { "start": { - "line": 142, - "column": 61 + "line": 151, + "column": 28 }, "end": { - "line": 142, - "column": 62 + "line": 151, + "column": 35 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseTexture", - "start": 5014, - "end": 5026, + "start": 5215, + "end": 5216, "loc": { "start": { - "line": 143, - "column": 12 + "line": 151, + "column": 35 }, "end": { - "line": 143, - "column": 24 + "line": 151, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61392,76 +63224,77 @@ "postfix": false, "binop": null }, - "start": 5026, - "end": 5027, + "value": "source", + "start": 5216, + "end": 5222, "loc": { "start": { - "line": 143, - "column": 24 + "line": 151, + "column": 36 }, "end": { - "line": 143, - "column": 25 + "line": 151, + "column": 42 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 5027, - "end": 5030, + "start": 5222, + "end": 5223, "loc": { "start": { - "line": 143, - "column": 25 + "line": 151, + "column": 42 }, "end": { - "line": 143, - "column": 28 + "line": 151, + "column": 43 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5030, - "end": 5031, + "value": "image", + "start": 5223, + "end": 5228, "loc": { "start": { - "line": 143, - "column": 28 + "line": 151, + "column": 43 }, "end": { - "line": 143, - "column": 29 + "line": 151, + "column": 48 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -61469,23 +63302,22 @@ "postfix": false, "binop": null }, - "value": "textures", - "start": 5032, - "end": 5040, + "start": 5228, + "end": 5229, "loc": { "start": { - "line": 143, - "column": 30 + "line": 151, + "column": 48 }, - "end": { - "line": 143, - "column": 38 + "end": { + "line": 151, + "column": 49 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -61493,52 +63325,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5040, - "end": 5041, + "start": 5230, + "end": 5231, "loc": { "start": { - "line": 143, - "column": 38 + "line": 151, + "column": 50 }, "end": { - "line": 143, - "column": 39 + "line": 151, + "column": 51 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 5041, - "end": 5042, + "value": "return", + "start": 5240, + "end": 5246, "loc": { "start": { - "line": 143, - "column": 39 + "line": 152, + "column": 8 }, "end": { - "line": 143, - "column": 40 + "line": 152, + "column": 14 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61548,22 +63381,22 @@ "binop": null, "updateContext": null }, - "start": 5042, - "end": 5043, + "start": 5246, + "end": 5247, "loc": { "start": { - "line": 143, - "column": 40 + "line": 152, + "column": 14 }, "end": { - "line": 143, - "column": 41 + "line": 152, + "column": 15 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -61573,23 +63406,24 @@ "postfix": false, "binop": null }, - "start": 5043, - "end": 5044, + "start": 5252, + "end": 5253, "loc": { "start": { - "line": 143, - "column": 41 + "line": 153, + "column": 4 }, "end": { - "line": 143, - "column": 42 + "line": 153, + "column": 5 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61599,16 +63433,17 @@ "binop": null, "updateContext": null }, - "start": 5044, - "end": 5045, + "value": "const", + "start": 5258, + "end": 5263, "loc": { "start": { - "line": 143, - "column": 42 + "line": 154, + "column": 4 }, "end": { - "line": 143, - "column": 43 + "line": 154, + "column": 9 } } }, @@ -61624,49 +63459,50 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 5058, - "end": 5061, + "value": "textureId", + "start": 5264, + "end": 5273, "loc": { "start": { - "line": 144, - "column": 12 + "line": 154, + "column": 10 }, "end": { - "line": 144, - "column": 15 + "line": 154, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5061, - "end": 5062, + "value": "=", + "start": 5274, + "end": 5275, "loc": { "start": { - "line": 144, - "column": 15 + "line": 154, + "column": 20 }, "end": { - "line": 144, - "column": 16 + "line": 154, + "column": 21 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -61676,23 +63512,22 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 5062, - "end": 5067, + "start": 5276, + "end": 5277, "loc": { "start": { - "line": 144, - "column": 16 + "line": 154, + "column": 22 }, "end": { - "line": 144, - "column": 21 + "line": 154, + "column": 23 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -61703,23 +63538,24 @@ "binop": null, "updateContext": null }, - "start": 5067, - "end": 5068, + "value": "texture-", + "start": 5277, + "end": 5285, "loc": { "start": { - "line": 144, - "column": 21 + "line": 154, + "column": 23 }, "end": { - "line": 144, - "column": 22 + "line": 154, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -61728,50 +63564,49 @@ "postfix": false, "binop": null }, - "value": "numTextures", - "start": 5068, - "end": 5079, + "start": 5285, + "end": 5287, "loc": { "start": { - "line": 144, - "column": 22 + "line": 154, + "column": 31 }, "end": { - "line": 144, + "line": 154, "column": 33 } } }, { "type": { - "label": "++/--", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 5079, - "end": 5081, + "value": "ctx", + "start": 5287, + "end": 5290, "loc": { "start": { - "line": 144, + "line": 154, "column": 33 }, "end": { - "line": 144, - "column": 35 + "line": 154, + "column": 36 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61781,24 +63616,24 @@ "binop": null, "updateContext": null }, - "start": 5081, - "end": 5082, + "start": 5290, + "end": 5291, "loc": { "start": { - "line": 144, - "column": 35 + "line": 154, + "column": 36 }, "end": { - "line": 144, - "column": 36 + "line": 154, + "column": 37 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -61806,41 +63641,43 @@ "postfix": false, "binop": null }, - "start": 5091, - "end": 5092, + "value": "nextId", + "start": 5291, + "end": 5297, "loc": { "start": { - "line": 145, - "column": 8 + "line": 154, + "column": 37 }, "end": { - "line": 145, - "column": 9 + "line": 154, + "column": 43 } } }, { "type": { - "label": "}", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 5097, - "end": 5098, + "value": "++", + "start": 5297, + "end": 5299, "loc": { "start": { - "line": 146, - "column": 4 + "line": 154, + "column": 43 }, "end": { - "line": 146, - "column": 5 + "line": 154, + "column": 45 } } }, @@ -61856,49 +63693,49 @@ "postfix": false, "binop": null }, - "start": 5099, - "end": 5100, + "start": 5299, + "end": 5300, "loc": { "start": { - "line": 147, - "column": 0 + "line": 154, + "column": 45 }, "end": { - "line": 147, - "column": 1 + "line": 154, + "column": 46 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "template", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 5102, - "end": 5110, + "value": "", + "start": 5300, + "end": 5300, "loc": { "start": { - "line": 149, - "column": 0 + "line": 154, + "column": 46 }, "end": { - "line": 149, - "column": 8 + "line": 154, + "column": 46 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -61908,75 +63745,50 @@ "postfix": false, "binop": null }, - "value": "parseTexture", - "start": 5111, - "end": 5123, + "start": 5300, + "end": 5301, "loc": { "start": { - "line": 149, - "column": 9 + "line": 154, + "column": 46 }, "end": { - "line": 149, - "column": 21 + "line": 154, + "column": 47 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5123, - "end": 5124, + "start": 5301, + "end": 5302, "loc": { "start": { - "line": 149, - "column": 21 + "line": 154, + "column": 47 }, "end": { - "line": 149, - "column": 22 + "line": 154, + "column": 48 } } }, { "type": { - "label": "name", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "ctx", - "start": 5124, - "end": 5127, - "loc": { - "start": { - "line": 149, - "column": 22 - }, - "end": { - "line": 149, - "column": 25 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -61986,16 +63798,17 @@ "binop": null, "updateContext": null }, - "start": 5127, - "end": 5128, + "value": "let", + "start": 5308, + "end": 5311, "loc": { "start": { - "line": 149, - "column": 25 + "line": 156, + "column": 4 }, "end": { - "line": 149, - "column": 26 + "line": 156, + "column": 7 } } }, @@ -62011,49 +63824,51 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 5129, - "end": 5136, + "value": "minFilter", + "start": 5312, + "end": 5321, "loc": { "start": { - "line": 149, - "column": 27 + "line": 156, + "column": 8 }, "end": { - "line": 149, - "column": 34 + "line": 156, + "column": 17 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5136, - "end": 5137, + "value": "=", + "start": 5322, + "end": 5323, "loc": { "start": { - "line": 149, - "column": 34 + "line": 156, + "column": 18 }, "end": { - "line": 149, - "column": 35 + "line": 156, + "column": 19 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -62062,24 +63877,24 @@ "postfix": false, "binop": null }, - "start": 5138, - "end": 5139, + "value": "NearestMipMapLinearFilter", + "start": 5324, + "end": 5349, "loc": { "start": { - "line": 149, - "column": 36 + "line": 156, + "column": 20 }, "end": { - "line": 149, - "column": 37 + "line": 156, + "column": 45 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -62089,69 +63904,69 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 5144, - "end": 5146, + "start": 5349, + "end": 5350, "loc": { "start": { - "line": 150, - "column": 4 + "line": 156, + "column": 45 }, "end": { - "line": 150, - "column": 6 + "line": 156, + "column": 46 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "switch", + "keyword": "switch", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5147, - "end": 5148, + "value": "switch", + "start": 5355, + "end": 5361, "loc": { "start": { - "line": 150, - "column": 7 + "line": 157, + "column": 4 }, "end": { - "line": 150, - "column": 8 + "line": 157, + "column": 10 } } }, { "type": { - "label": "prefix", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 5148, - "end": 5149, + "start": 5362, + "end": 5363, "loc": { "start": { - "line": 150, - "column": 8 + "line": 157, + "column": 11 }, "end": { - "line": 150, - "column": 9 + "line": 157, + "column": 12 } } }, @@ -62168,16 +63983,16 @@ "binop": null }, "value": "texture", - "start": 5149, - "end": 5156, + "start": 5363, + "end": 5370, "loc": { "start": { - "line": 150, - "column": 9 + "line": 157, + "column": 12 }, "end": { - "line": 150, - "column": 16 + "line": 157, + "column": 19 } } }, @@ -62194,16 +64009,16 @@ "binop": null, "updateContext": null }, - "start": 5156, - "end": 5157, + "start": 5370, + "end": 5371, "loc": { "start": { - "line": 150, - "column": 16 + "line": 157, + "column": 19 }, "end": { - "line": 150, - "column": 17 + "line": 157, + "column": 20 } } }, @@ -62219,70 +64034,42 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 5157, - "end": 5163, + "value": "sampler", + "start": 5371, + "end": 5378, "loc": { "start": { - "line": 150, - "column": 17 + "line": 157, + "column": 20 }, "end": { - "line": 150, - "column": 23 + "line": 157, + "column": 27 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null - }, - "value": "||", - "start": 5164, - "end": 5166, - "loc": { - "start": { - "line": 150, - "column": 24 - }, - "end": { - "line": 150, - "column": 26 - } - } - }, - { - "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 5167, - "end": 5168, + "start": 5378, + "end": 5379, "loc": { "start": { - "line": 150, + "line": 157, "column": 27 }, "end": { - "line": 150, + "line": 157, "column": 28 } } @@ -62299,23 +64086,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 5168, - "end": 5175, + "value": "minFilter", + "start": 5379, + "end": 5388, "loc": { "start": { - "line": 150, + "line": 157, "column": 28 }, "end": { - "line": 150, - "column": 35 + "line": 157, + "column": 37 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -62323,26 +64110,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5175, - "end": 5176, + "start": 5388, + "end": 5389, "loc": { "start": { - "line": 150, - "column": 35 + "line": 157, + "column": 37 }, "end": { - "line": 150, - "column": 36 + "line": 157, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -62351,24 +64137,24 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 5176, - "end": 5182, + "start": 5390, + "end": 5391, "loc": { "start": { - "line": 150, - "column": 36 + "line": 157, + "column": 39 }, "end": { - "line": 150, - "column": 42 + "line": 157, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "case", + "keyword": "case", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -62378,22 +64164,23 @@ "binop": null, "updateContext": null }, - "start": 5182, - "end": 5183, + "value": "case", + "start": 5400, + "end": 5404, "loc": { "start": { - "line": 150, - "column": 42 + "line": 158, + "column": 8 }, "end": { - "line": 150, - "column": 43 + "line": 158, + "column": 12 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -62401,131 +64188,107 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "image", - "start": 5183, - "end": 5188, + "value": 9728, + "start": 5405, + "end": 5409, "loc": { "start": { - "line": 150, - "column": 43 + "line": 158, + "column": 13 }, "end": { - "line": 150, - "column": 48 + "line": 158, + "column": 17 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5188, - "end": 5189, + "start": 5409, + "end": 5410, "loc": { "start": { - "line": 150, - "column": 48 + "line": 158, + "column": 17 }, "end": { - "line": 150, - "column": 49 + "line": 158, + "column": 18 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 5190, - "end": 5191, - "loc": { - "start": { - "line": 150, - "column": 50 - }, - "end": { - "line": 150, - "column": 51 - } - } - }, - { - "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 5200, - "end": 5206, + "value": "minFilter", + "start": 5423, + "end": 5432, "loc": { "start": { - "line": 151, - "column": 8 + "line": 159, + "column": 12 }, "end": { - "line": 151, - "column": 14 + "line": 159, + "column": 21 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5206, - "end": 5207, + "value": "=", + "start": 5433, + "end": 5434, "loc": { "start": { - "line": 151, - "column": 14 + "line": 159, + "column": 22 }, "end": { - "line": 151, - "column": 15 + "line": 159, + "column": 23 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62533,24 +64296,24 @@ "postfix": false, "binop": null }, - "start": 5212, - "end": 5213, + "value": "NearestFilter", + "start": 5435, + "end": 5448, "loc": { "start": { - "line": 152, - "column": 4 + "line": 159, + "column": 24 }, "end": { - "line": 152, - "column": 5 + "line": 159, + "column": 37 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -62560,103 +64323,106 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 5218, - "end": 5223, + "start": 5448, + "end": 5449, "loc": { "start": { - "line": 153, - "column": 4 + "line": 159, + "column": 37 }, "end": { - "line": 153, - "column": 9 + "line": 159, + "column": 38 } } }, { "type": { - "label": "name", + "label": "break", + "keyword": "break", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureId", - "start": 5224, - "end": 5233, + "value": "break", + "start": 5462, + "end": 5467, "loc": { "start": { - "line": 153, - "column": 10 + "line": 160, + "column": 12 }, "end": { - "line": 153, - "column": 19 + "line": 160, + "column": 17 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5234, - "end": 5235, + "start": 5467, + "end": 5468, "loc": { "start": { - "line": 153, - "column": 20 + "line": 160, + "column": 17 }, "end": { - "line": 153, - "column": 21 + "line": 160, + "column": 18 } } }, { "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5236, - "end": 5237, + "value": "case", + "start": 5477, + "end": 5481, "loc": { "start": { - "line": 153, - "column": 22 + "line": 161, + "column": 8 }, "end": { - "line": 153, - "column": 23 + "line": 161, + "column": 12 } } }, { "type": { - "label": "template", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62665,42 +64431,43 @@ "binop": null, "updateContext": null }, - "value": "texture-", - "start": 5237, - "end": 5245, + "value": 9729, + "start": 5482, + "end": 5486, "loc": { "start": { - "line": 153, - "column": 23 + "line": 161, + "column": 13 }, "end": { - "line": 153, - "column": 31 + "line": 161, + "column": 17 } } }, { "type": { - "label": "${", + "label": ":", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5245, - "end": 5247, + "start": 5486, + "end": 5487, "loc": { "start": { - "line": 153, - "column": 31 + "line": 161, + "column": 17 }, "end": { - "line": 153, - "column": 33 + "line": 161, + "column": 18 } } }, @@ -62716,43 +64483,44 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 5247, - "end": 5250, + "value": "minFilter", + "start": 5500, + "end": 5509, "loc": { "start": { - "line": 153, - "column": 33 + "line": 162, + "column": 12 }, "end": { - "line": 153, - "column": 36 + "line": 162, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5250, - "end": 5251, + "value": "=", + "start": 5510, + "end": 5511, "loc": { "start": { - "line": 153, - "column": 36 + "line": 162, + "column": 22 }, "end": { - "line": 153, - "column": 37 + "line": 162, + "column": 23 } } }, @@ -62768,49 +64536,50 @@ "postfix": false, "binop": null }, - "value": "nextId", - "start": 5251, - "end": 5257, + "value": "LinearFilter", + "start": 5512, + "end": 5524, "loc": { "start": { - "line": 153, - "column": 37 + "line": 162, + "column": 24 }, "end": { - "line": 153, - "column": 43 + "line": 162, + "column": 36 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "++", - "start": 5257, - "end": 5259, + "start": 5524, + "end": 5525, "loc": { "start": { - "line": 153, - "column": 43 + "line": 162, + "column": 36 }, "end": { - "line": 153, - "column": 45 + "line": 162, + "column": 37 } } }, { "type": { - "label": "}", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -62818,25 +64587,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5259, - "end": 5260, + "value": "break", + "start": 5538, + "end": 5543, "loc": { "start": { - "line": 153, - "column": 45 + "line": 163, + "column": 12 }, "end": { - "line": 153, - "column": 46 + "line": 163, + "column": 17 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -62846,50 +64617,52 @@ "binop": null, "updateContext": null }, - "value": "", - "start": 5260, - "end": 5260, + "start": 5543, + "end": 5544, "loc": { "start": { - "line": 153, - "column": 46 + "line": 163, + "column": 17 }, "end": { - "line": 153, - "column": 46 + "line": 163, + "column": 18 } } }, { "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5260, - "end": 5261, + "value": "case", + "start": 5553, + "end": 5557, "loc": { "start": { - "line": 153, - "column": 46 + "line": 164, + "column": 8 }, "end": { - "line": 153, - "column": 47 + "line": 164, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -62898,24 +64671,24 @@ "binop": null, "updateContext": null }, - "start": 5261, - "end": 5262, + "value": 9984, + "start": 5558, + "end": 5562, "loc": { "start": { - "line": 153, - "column": 47 + "line": 164, + "column": 13 }, "end": { - "line": 153, - "column": 48 + "line": 164, + "column": 17 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -62925,17 +64698,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 5268, - "end": 5271, + "start": 5562, + "end": 5563, "loc": { "start": { - "line": 155, - "column": 4 + "line": 164, + "column": 17 }, "end": { - "line": 155, - "column": 7 + "line": 164, + "column": 18 } } }, @@ -62952,16 +64724,16 @@ "binop": null }, "value": "minFilter", - "start": 5272, - "end": 5281, + "start": 5576, + "end": 5585, "loc": { "start": { - "line": 155, - "column": 8 + "line": 165, + "column": 12 }, "end": { - "line": 155, - "column": 17 + "line": 165, + "column": 21 } } }, @@ -62979,16 +64751,16 @@ "updateContext": null }, "value": "=", - "start": 5282, - "end": 5283, + "start": 5586, + "end": 5587, "loc": { "start": { - "line": 155, - "column": 18 + "line": 165, + "column": 22 }, "end": { - "line": 155, - "column": 19 + "line": 165, + "column": 23 } } }, @@ -63004,17 +64776,17 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapLinearFilter", - "start": 5284, - "end": 5309, + "value": "NearestMipMapNearestFilter", + "start": 5588, + "end": 5614, "loc": { "start": { - "line": 155, - "column": 20 + "line": 165, + "column": 24 }, "end": { - "line": 155, - "column": 45 + "line": 165, + "column": 50 } } }, @@ -63031,23 +64803,23 @@ "binop": null, "updateContext": null }, - "start": 5309, - "end": 5310, + "start": 5614, + "end": 5615, "loc": { "start": { - "line": 155, - "column": 45 + "line": 165, + "column": 50 }, "end": { - "line": 155, - "column": 46 + "line": 165, + "column": 51 } } }, { "type": { - "label": "switch", - "keyword": "switch", + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -63058,48 +64830,77 @@ "binop": null, "updateContext": null }, - "value": "switch", - "start": 5315, - "end": 5321, + "value": "break", + "start": 5628, + "end": 5633, "loc": { "start": { - "line": 156, - "column": 4 + "line": 166, + "column": 12 }, "end": { - "line": 156, - "column": 10 + "line": 166, + "column": 17 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5322, - "end": 5323, + "start": 5633, + "end": 5634, "loc": { "start": { - "line": 156, - "column": 11 + "line": 166, + "column": 17 }, "end": { - "line": 156, + "line": 166, + "column": 18 + } + } + }, + { + "type": { + "label": "case", + "keyword": "case", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "case", + "start": 5643, + "end": 5647, + "loc": { + "start": { + "line": 167, + "column": 8 + }, + "end": { + "line": 167, "column": 12 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -63107,26 +64908,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "texture", - "start": 5323, - "end": 5330, + "value": 9985, + "start": 5648, + "end": 5652, "loc": { "start": { - "line": 156, - "column": 12 + "line": 167, + "column": 13 }, "end": { - "line": 156, - "column": 19 + "line": 167, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -63136,16 +64938,16 @@ "binop": null, "updateContext": null }, - "start": 5330, - "end": 5331, + "start": 5652, + "end": 5653, "loc": { "start": { - "line": 156, - "column": 19 + "line": 167, + "column": 17 }, "end": { - "line": 156, - "column": 20 + "line": 167, + "column": 18 } } }, @@ -63161,43 +64963,44 @@ "postfix": false, "binop": null }, - "value": "sampler", - "start": 5331, - "end": 5338, + "value": "minFilter", + "start": 5666, + "end": 5675, "loc": { "start": { - "line": 156, - "column": 20 + "line": 168, + "column": 12 }, "end": { - "line": 156, - "column": 27 + "line": 168, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5338, - "end": 5339, + "value": "=", + "start": 5676, + "end": 5677, "loc": { "start": { - "line": 156, - "column": 27 + "line": 168, + "column": 22 }, "end": { - "line": 156, - "column": 28 + "line": 168, + "column": 23 } } }, @@ -63213,23 +65016,50 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 5339, - "end": 5348, + "value": "LinearMipMapNearestFilter", + "start": 5678, + "end": 5703, "loc": { "start": { - "line": 156, - "column": 28 + "line": 168, + "column": 24 }, "end": { - "line": 156, - "column": 37 + "line": 168, + "column": 49 } } }, { "type": { - "label": ")", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 5703, + "end": 5704, + "loc": { + "start": { + "line": 168, + "column": 49 + }, + "end": { + "line": 168, + "column": 50 + } + } + }, + { + "type": { + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -63237,43 +65067,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5348, - "end": 5349, + "value": "break", + "start": 5717, + "end": 5722, "loc": { "start": { - "line": 156, - "column": 37 + "line": 169, + "column": 12 }, "end": { - "line": 156, - "column": 38 + "line": 169, + "column": 17 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5350, - "end": 5351, + "start": 5722, + "end": 5723, "loc": { "start": { - "line": 156, - "column": 39 + "line": 169, + "column": 17 }, "end": { - "line": 156, - "column": 40 + "line": 169, + "column": 18 } } }, @@ -63292,15 +65125,15 @@ "updateContext": null }, "value": "case", - "start": 5360, - "end": 5364, + "start": 5732, + "end": 5736, "loc": { "start": { - "line": 157, + "line": 170, "column": 8 }, "end": { - "line": 157, + "line": 170, "column": 12 } } @@ -63318,16 +65151,16 @@ "binop": null, "updateContext": null }, - "value": 9728, - "start": 5365, - "end": 5369, + "value": 9986, + "start": 5737, + "end": 5741, "loc": { "start": { - "line": 157, + "line": 170, "column": 13 }, "end": { - "line": 157, + "line": 170, "column": 17 } } @@ -63345,15 +65178,15 @@ "binop": null, "updateContext": null }, - "start": 5369, - "end": 5370, + "start": 5741, + "end": 5742, "loc": { "start": { - "line": 157, + "line": 170, "column": 17 }, "end": { - "line": 157, + "line": 170, "column": 18 } } @@ -63371,15 +65204,15 @@ "binop": null }, "value": "minFilter", - "start": 5383, - "end": 5392, + "start": 5755, + "end": 5764, "loc": { "start": { - "line": 158, + "line": 171, "column": 12 }, "end": { - "line": 158, + "line": 171, "column": 21 } } @@ -63398,15 +65231,15 @@ "updateContext": null }, "value": "=", - "start": 5393, - "end": 5394, + "start": 5765, + "end": 5766, "loc": { "start": { - "line": 158, + "line": 171, "column": 22 }, "end": { - "line": 158, + "line": 171, "column": 23 } } @@ -63423,17 +65256,17 @@ "postfix": false, "binop": null }, - "value": "NearestFilter", - "start": 5395, - "end": 5408, + "value": "NearestMipMapLinearFilter", + "start": 5767, + "end": 5792, "loc": { "start": { - "line": 158, + "line": 171, "column": 24 }, "end": { - "line": 158, - "column": 37 + "line": 171, + "column": 49 } } }, @@ -63450,16 +65283,16 @@ "binop": null, "updateContext": null }, - "start": 5408, - "end": 5409, + "start": 5792, + "end": 5793, "loc": { "start": { - "line": 158, - "column": 37 + "line": 171, + "column": 49 }, "end": { - "line": 158, - "column": 38 + "line": 171, + "column": 50 } } }, @@ -63478,15 +65311,15 @@ "updateContext": null }, "value": "break", - "start": 5422, - "end": 5427, + "start": 5806, + "end": 5811, "loc": { "start": { - "line": 159, + "line": 172, "column": 12 }, "end": { - "line": 159, + "line": 172, "column": 17 } } @@ -63504,15 +65337,15 @@ "binop": null, "updateContext": null }, - "start": 5427, - "end": 5428, + "start": 5811, + "end": 5812, "loc": { "start": { - "line": 159, + "line": 172, "column": 17 }, "end": { - "line": 159, + "line": 172, "column": 18 } } @@ -63532,15 +65365,15 @@ "updateContext": null }, "value": "case", - "start": 5437, - "end": 5441, + "start": 5821, + "end": 5825, "loc": { "start": { - "line": 160, + "line": 173, "column": 8 }, "end": { - "line": 160, + "line": 173, "column": 12 } } @@ -63558,16 +65391,16 @@ "binop": null, "updateContext": null }, - "value": 9729, - "start": 5442, - "end": 5446, + "value": 9987, + "start": 5826, + "end": 5830, "loc": { "start": { - "line": 160, + "line": 173, "column": 13 }, "end": { - "line": 160, + "line": 173, "column": 17 } } @@ -63585,15 +65418,15 @@ "binop": null, "updateContext": null }, - "start": 5446, - "end": 5447, + "start": 5830, + "end": 5831, "loc": { "start": { - "line": 160, + "line": 173, "column": 17 }, "end": { - "line": 160, + "line": 173, "column": 18 } } @@ -63611,15 +65444,15 @@ "binop": null }, "value": "minFilter", - "start": 5460, - "end": 5469, + "start": 5844, + "end": 5853, "loc": { "start": { - "line": 161, + "line": 174, "column": 12 }, "end": { - "line": 161, + "line": 174, "column": 21 } } @@ -63638,15 +65471,15 @@ "updateContext": null }, "value": "=", - "start": 5470, - "end": 5471, + "start": 5854, + "end": 5855, "loc": { "start": { - "line": 161, + "line": 174, "column": 22 }, "end": { - "line": 161, + "line": 174, "column": 23 } } @@ -63663,17 +65496,17 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 5472, - "end": 5484, + "value": "LinearMipMapLinearFilter", + "start": 5856, + "end": 5880, "loc": { "start": { - "line": 161, + "line": 174, "column": 24 }, "end": { - "line": 161, - "column": 36 + "line": 174, + "column": 48 } } }, @@ -63690,16 +65523,16 @@ "binop": null, "updateContext": null }, - "start": 5484, - "end": 5485, + "start": 5880, + "end": 5881, "loc": { "start": { - "line": 161, - "column": 36 + "line": 174, + "column": 48 }, "end": { - "line": 161, - "column": 37 + "line": 174, + "column": 49 } } }, @@ -63718,15 +65551,15 @@ "updateContext": null }, "value": "break", - "start": 5498, - "end": 5503, + "start": 5894, + "end": 5899, "loc": { "start": { - "line": 162, + "line": 175, "column": 12 }, "end": { - "line": 162, + "line": 175, "column": 17 } } @@ -63744,24 +65577,49 @@ "binop": null, "updateContext": null }, - "start": 5503, - "end": 5504, + "start": 5899, + "end": 5900, "loc": { "start": { - "line": 162, + "line": 175, "column": 17 }, "end": { - "line": 162, + "line": 175, "column": 18 } } }, { "type": { - "label": "case", - "keyword": "case", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5905, + "end": 5906, + "loc": { + "start": { + "line": 176, + "column": 4 + }, + "end": { + "line": 176, + "column": 5 + } + } + }, + { + "type": { + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -63771,23 +65629,23 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 5513, - "end": 5517, + "value": "let", + "start": 5912, + "end": 5915, "loc": { "start": { - "line": 163, - "column": 8 + "line": 178, + "column": 4 }, "end": { - "line": 163, - "column": 12 + "line": 178, + "column": 7 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -63795,46 +65653,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 9984, - "start": 5518, - "end": 5522, + "value": "magFilter", + "start": 5916, + "end": 5925, "loc": { "start": { - "line": 163, - "column": 13 + "line": 178, + "column": 8 }, "end": { - "line": 163, + "line": 178, "column": 17 } } }, { "type": { - "label": ":", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5522, - "end": 5523, + "value": "=", + "start": 5926, + "end": 5927, "loc": { "start": { - "line": 163, - "column": 17 + "line": 178, + "column": 18 }, "end": { - "line": 163, - "column": 18 + "line": 178, + "column": 19 } } }, @@ -63850,44 +65708,96 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 5536, - "end": 5545, + "value": "LinearFilter", + "start": 5928, + "end": 5940, "loc": { "start": { - "line": 164, - "column": 12 + "line": 178, + "column": 20 }, "end": { - "line": 164, - "column": 21 + "line": 178, + "column": 32 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5546, - "end": 5547, + "start": 5940, + "end": 5941, "loc": { "start": { - "line": 164, - "column": 22 + "line": 178, + "column": 32 }, "end": { - "line": 164, - "column": 23 + "line": 178, + "column": 33 + } + } + }, + { + "type": { + "label": "switch", + "keyword": "switch", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "switch", + "start": 5946, + "end": 5952, + "loc": { + "start": { + "line": 179, + "column": 4 + }, + "end": { + "line": 179, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5953, + "end": 5954, + "loc": { + "start": { + "line": 179, + "column": 11 + }, + "end": { + "line": 179, + "column": 12 } } }, @@ -63903,24 +65813,24 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapNearestFilter", - "start": 5548, - "end": 5574, + "value": "texture", + "start": 5954, + "end": 5961, "loc": { "start": { - "line": 164, - "column": 24 + "line": 179, + "column": 12 }, "end": { - "line": 164, - "column": 50 + "line": 179, + "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -63930,23 +65840,48 @@ "binop": null, "updateContext": null }, - "start": 5574, - "end": 5575, + "start": 5961, + "end": 5962, "loc": { "start": { - "line": 164, - "column": 50 + "line": 179, + "column": 19 }, "end": { - "line": 164, - "column": 51 + "line": 179, + "column": 20 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "sampler", + "start": 5962, + "end": 5969, + "loc": { + "start": { + "line": 179, + "column": 20 + }, + "end": { + "line": 179, + "column": 27 + } + } + }, + { + "type": { + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -63957,43 +65892,92 @@ "binop": null, "updateContext": null }, - "value": "break", - "start": 5588, - "end": 5593, + "start": 5969, + "end": 5970, "loc": { "start": { - "line": 165, - "column": 12 + "line": 179, + "column": 27 }, "end": { - "line": 165, - "column": 17 + "line": 179, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "magFilter", + "start": 5970, + "end": 5979, + "loc": { + "start": { + "line": 179, + "column": 28 + }, + "end": { + "line": 179, + "column": 37 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5593, - "end": 5594, + "start": 5979, + "end": 5980, "loc": { "start": { - "line": 165, - "column": 17 + "line": 179, + "column": 37 }, "end": { - "line": 165, - "column": 18 + "line": 179, + "column": 38 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 5981, + "end": 5982, + "loc": { + "start": { + "line": 179, + "column": 39 + }, + "end": { + "line": 179, + "column": 40 } } }, @@ -64012,15 +65996,15 @@ "updateContext": null }, "value": "case", - "start": 5603, - "end": 5607, + "start": 5991, + "end": 5995, "loc": { "start": { - "line": 166, + "line": 180, "column": 8 }, "end": { - "line": 166, + "line": 180, "column": 12 } } @@ -64038,16 +66022,16 @@ "binop": null, "updateContext": null }, - "value": 9985, - "start": 5608, - "end": 5612, + "value": 9728, + "start": 5996, + "end": 6000, "loc": { "start": { - "line": 166, + "line": 180, "column": 13 }, "end": { - "line": 166, + "line": 180, "column": 17 } } @@ -64065,15 +66049,15 @@ "binop": null, "updateContext": null }, - "start": 5612, - "end": 5613, + "start": 6000, + "end": 6001, "loc": { "start": { - "line": 166, + "line": 180, "column": 17 }, "end": { - "line": 166, + "line": 180, "column": 18 } } @@ -64090,16 +66074,16 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 5626, - "end": 5635, + "value": "magFilter", + "start": 6014, + "end": 6023, "loc": { "start": { - "line": 167, + "line": 181, "column": 12 }, "end": { - "line": 167, + "line": 181, "column": 21 } } @@ -64118,15 +66102,15 @@ "updateContext": null }, "value": "=", - "start": 5636, - "end": 5637, + "start": 6024, + "end": 6025, "loc": { "start": { - "line": 167, + "line": 181, "column": 22 }, "end": { - "line": 167, + "line": 181, "column": 23 } } @@ -64143,17 +66127,17 @@ "postfix": false, "binop": null }, - "value": "LinearMipMapNearestFilter", - "start": 5638, - "end": 5663, + "value": "NearestFilter", + "start": 6026, + "end": 6039, "loc": { "start": { - "line": 167, + "line": 181, "column": 24 }, "end": { - "line": 167, - "column": 49 + "line": 181, + "column": 37 } } }, @@ -64170,16 +66154,16 @@ "binop": null, "updateContext": null }, - "start": 5663, - "end": 5664, + "start": 6039, + "end": 6040, "loc": { "start": { - "line": 167, - "column": 49 + "line": 181, + "column": 37 }, "end": { - "line": 167, - "column": 50 + "line": 181, + "column": 38 } } }, @@ -64198,15 +66182,15 @@ "updateContext": null }, "value": "break", - "start": 5677, - "end": 5682, + "start": 6053, + "end": 6058, "loc": { "start": { - "line": 168, + "line": 182, "column": 12 }, "end": { - "line": 168, + "line": 182, "column": 17 } } @@ -64224,15 +66208,15 @@ "binop": null, "updateContext": null }, - "start": 5682, - "end": 5683, + "start": 6058, + "end": 6059, "loc": { "start": { - "line": 168, + "line": 182, "column": 17 }, "end": { - "line": 168, + "line": 182, "column": 18 } } @@ -64252,15 +66236,15 @@ "updateContext": null }, "value": "case", - "start": 5692, - "end": 5696, + "start": 6068, + "end": 6072, "loc": { "start": { - "line": 169, + "line": 183, "column": 8 }, "end": { - "line": 169, + "line": 183, "column": 12 } } @@ -64278,16 +66262,16 @@ "binop": null, "updateContext": null }, - "value": 9986, - "start": 5697, - "end": 5701, + "value": 9729, + "start": 6073, + "end": 6077, "loc": { "start": { - "line": 169, + "line": 183, "column": 13 }, "end": { - "line": 169, + "line": 183, "column": 17 } } @@ -64305,15 +66289,15 @@ "binop": null, "updateContext": null }, - "start": 5701, - "end": 5702, + "start": 6077, + "end": 6078, "loc": { "start": { - "line": 169, + "line": 183, "column": 17 }, "end": { - "line": 169, + "line": 183, "column": 18 } } @@ -64330,16 +66314,16 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 5715, - "end": 5724, + "value": "magFilter", + "start": 6091, + "end": 6100, "loc": { "start": { - "line": 170, + "line": 184, "column": 12 }, "end": { - "line": 170, + "line": 184, "column": 21 } } @@ -64358,15 +66342,15 @@ "updateContext": null }, "value": "=", - "start": 5725, - "end": 5726, + "start": 6101, + "end": 6102, "loc": { "start": { - "line": 170, + "line": 184, "column": 22 }, "end": { - "line": 170, + "line": 184, "column": 23 } } @@ -64383,17 +66367,17 @@ "postfix": false, "binop": null }, - "value": "NearestMipMapLinearFilter", - "start": 5727, - "end": 5752, + "value": "LinearFilter", + "start": 6103, + "end": 6115, "loc": { "start": { - "line": 170, + "line": 184, "column": 24 }, "end": { - "line": 170, - "column": 49 + "line": 184, + "column": 36 } } }, @@ -64410,16 +66394,16 @@ "binop": null, "updateContext": null }, - "start": 5752, - "end": 5753, + "start": 6115, + "end": 6116, "loc": { "start": { - "line": 170, - "column": 49 + "line": 184, + "column": 36 }, "end": { - "line": 170, - "column": 50 + "line": 184, + "column": 37 } } }, @@ -64438,15 +66422,15 @@ "updateContext": null }, "value": "break", - "start": 5766, - "end": 5771, + "start": 6129, + "end": 6134, "loc": { "start": { - "line": 171, + "line": 185, "column": 12 }, "end": { - "line": 171, + "line": 185, "column": 17 } } @@ -64464,78 +66448,49 @@ "binop": null, "updateContext": null }, - "start": 5771, - "end": 5772, + "start": 6134, + "end": 6135, "loc": { "start": { - "line": 171, + "line": 185, "column": 17 }, "end": { - "line": 171, - "column": 18 - } - } - }, - { - "type": { - "label": "case", - "keyword": "case", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "case", - "start": 5781, - "end": 5785, - "loc": { - "start": { - "line": 172, - "column": 8 - }, - "end": { - "line": 172, - "column": 12 + "line": 185, + "column": 18 } } }, { "type": { - "label": "num", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 9987, - "start": 5786, - "end": 5790, + "start": 6140, + "end": 6141, "loc": { "start": { - "line": 172, - "column": 13 + "line": 186, + "column": 4 }, "end": { - "line": 172, - "column": 17 + "line": 186, + "column": 5 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -64545,16 +66500,17 @@ "binop": null, "updateContext": null }, - "start": 5790, - "end": 5791, + "value": "let", + "start": 6147, + "end": 6150, "loc": { "start": { - "line": 172, - "column": 17 + "line": 188, + "column": 4 }, "end": { - "line": 172, - "column": 18 + "line": 188, + "column": 7 } } }, @@ -64570,17 +66526,17 @@ "postfix": false, "binop": null }, - "value": "minFilter", - "start": 5804, - "end": 5813, + "value": "wrapS", + "start": 6151, + "end": 6156, "loc": { "start": { - "line": 173, - "column": 12 + "line": 188, + "column": 8 }, "end": { - "line": 173, - "column": 21 + "line": 188, + "column": 13 } } }, @@ -64598,16 +66554,16 @@ "updateContext": null }, "value": "=", - "start": 5814, - "end": 5815, + "start": 6157, + "end": 6158, "loc": { "start": { - "line": 173, - "column": 22 + "line": 188, + "column": 14 }, "end": { - "line": 173, - "column": 23 + "line": 188, + "column": 15 } } }, @@ -64623,17 +66579,17 @@ "postfix": false, "binop": null }, - "value": "LinearMipMapLinearFilter", - "start": 5816, - "end": 5840, + "value": "RepeatWrapping", + "start": 6159, + "end": 6173, "loc": { "start": { - "line": 173, - "column": 24 + "line": 188, + "column": 16 }, "end": { - "line": 173, - "column": 48 + "line": 188, + "column": 30 } } }, @@ -64650,23 +66606,23 @@ "binop": null, "updateContext": null }, - "start": 5840, - "end": 5841, + "start": 6173, + "end": 6174, "loc": { "start": { - "line": 173, - "column": 48 + "line": 188, + "column": 30 }, "end": { - "line": 173, - "column": 49 + "line": 188, + "column": 31 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "switch", + "keyword": "switch", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -64677,51 +66633,50 @@ "binop": null, "updateContext": null }, - "value": "break", - "start": 5854, - "end": 5859, + "value": "switch", + "start": 6179, + "end": 6185, "loc": { "start": { - "line": 174, - "column": 12 + "line": 189, + "column": 4 }, "end": { - "line": 174, - "column": 17 + "line": 189, + "column": 10 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5859, - "end": 5860, + "start": 6186, + "end": 6187, "loc": { "start": { - "line": 174, - "column": 17 + "line": 189, + "column": 11 }, "end": { - "line": 174, - "column": 18 + "line": 189, + "column": 12 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -64729,23 +66684,23 @@ "postfix": false, "binop": null }, - "start": 5865, - "end": 5866, + "value": "texture", + "start": 6187, + "end": 6194, "loc": { "start": { - "line": 175, - "column": 4 + "line": 189, + "column": 12 }, "end": { - "line": 175, - "column": 5 + "line": 189, + "column": 19 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -64756,17 +66711,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 5872, - "end": 5875, + "start": 6194, + "end": 6195, "loc": { "start": { - "line": 177, - "column": 4 + "line": 189, + "column": 19 }, "end": { - "line": 177, - "column": 7 + "line": 189, + "column": 20 } } }, @@ -64782,44 +66736,43 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 5876, - "end": 5885, + "value": "sampler", + "start": 6195, + "end": 6202, "loc": { "start": { - "line": 177, - "column": 8 + "line": 189, + "column": 20 }, "end": { - "line": 177, - "column": 17 + "line": 189, + "column": 27 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 5886, - "end": 5887, + "start": 6202, + "end": 6203, "loc": { "start": { - "line": 177, - "column": 18 + "line": 189, + "column": 27 }, "end": { - "line": 177, - "column": 19 + "line": 189, + "column": 28 } } }, @@ -64835,102 +66788,101 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 5888, - "end": 5900, + "value": "wrapS", + "start": 6203, + "end": 6208, "loc": { "start": { - "line": 177, - "column": 20 + "line": 189, + "column": 28 }, "end": { - "line": 177, - "column": 32 + "line": 189, + "column": 33 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 5900, - "end": 5901, + "start": 6208, + "end": 6209, "loc": { "start": { - "line": 177, - "column": 32 + "line": 189, + "column": 33 }, "end": { - "line": 177, - "column": 33 + "line": 189, + "column": 34 } } }, { "type": { - "label": "switch", - "keyword": "switch", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "switch", - "start": 5906, - "end": 5912, + "start": 6210, + "end": 6211, "loc": { "start": { - "line": 178, - "column": 4 + "line": 189, + "column": 35 }, "end": { - "line": 178, - "column": 10 + "line": 189, + "column": 36 } } }, { "type": { - "label": "(", + "label": "case", + "keyword": "case", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5913, - "end": 5914, + "value": "case", + "start": 6220, + "end": 6224, "loc": { "start": { - "line": 178, - "column": 11 + "line": 190, + "column": 8 }, "end": { - "line": 178, + "line": 190, "column": 12 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -64938,26 +66890,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "texture", - "start": 5914, - "end": 5921, + "value": 33071, + "start": 6225, + "end": 6230, "loc": { "start": { - "line": 178, - "column": 12 + "line": 190, + "column": 13 }, "end": { - "line": 178, - "column": 19 + "line": 190, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -64967,16 +66920,16 @@ "binop": null, "updateContext": null }, - "start": 5921, - "end": 5922, + "start": 6230, + "end": 6231, "loc": { "start": { - "line": 178, - "column": 19 + "line": 190, + "column": 18 }, "end": { - "line": 178, - "column": 20 + "line": 190, + "column": 19 } } }, @@ -64992,43 +66945,44 @@ "postfix": false, "binop": null }, - "value": "sampler", - "start": 5922, - "end": 5929, + "value": "wrapS", + "start": 6244, + "end": 6249, "loc": { "start": { - "line": 178, - "column": 20 + "line": 191, + "column": 12 }, "end": { - "line": 178, - "column": 27 + "line": 191, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 5929, - "end": 5930, + "value": "=", + "start": 6250, + "end": 6251, "loc": { "start": { - "line": 178, - "column": 27 + "line": 191, + "column": 18 }, "end": { - "line": 178, - "column": 28 + "line": 191, + "column": 19 } } }, @@ -65044,23 +66998,50 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 5930, - "end": 5939, + "value": "ClampToEdgeWrapping", + "start": 6252, + "end": 6271, "loc": { "start": { - "line": 178, - "column": 28 + "line": 191, + "column": 20 }, "end": { - "line": 178, - "column": 37 + "line": 191, + "column": 39 } } }, { "type": { - "label": ")", + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 6271, + "end": 6272, + "loc": { + "start": { + "line": 191, + "column": 39 + }, + "end": { + "line": 191, + "column": 40 + } + } + }, + { + "type": { + "label": "break", + "keyword": "break", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -65068,43 +67049,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5939, - "end": 5940, + "value": "break", + "start": 6285, + "end": 6290, "loc": { "start": { - "line": 178, - "column": 37 + "line": 192, + "column": 12 }, "end": { - "line": 178, - "column": 38 + "line": 192, + "column": 17 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 5941, - "end": 5942, + "start": 6290, + "end": 6291, "loc": { "start": { - "line": 178, - "column": 39 + "line": 192, + "column": 17 }, "end": { - "line": 178, - "column": 40 + "line": 192, + "column": 18 } } }, @@ -65123,15 +67107,15 @@ "updateContext": null }, "value": "case", - "start": 5951, - "end": 5955, + "start": 6300, + "end": 6304, "loc": { "start": { - "line": 179, + "line": 193, "column": 8 }, "end": { - "line": 179, + "line": 193, "column": 12 } } @@ -65149,17 +67133,17 @@ "binop": null, "updateContext": null }, - "value": 9728, - "start": 5956, - "end": 5960, + "value": 33648, + "start": 6305, + "end": 6310, "loc": { "start": { - "line": 179, + "line": 193, "column": 13 }, "end": { - "line": 179, - "column": 17 + "line": 193, + "column": 18 } } }, @@ -65176,16 +67160,16 @@ "binop": null, "updateContext": null }, - "start": 5960, - "end": 5961, + "start": 6310, + "end": 6311, "loc": { "start": { - "line": 179, - "column": 17 + "line": 193, + "column": 18 }, "end": { - "line": 179, - "column": 18 + "line": 193, + "column": 19 } } }, @@ -65201,17 +67185,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 5974, - "end": 5983, + "value": "wrapS", + "start": 6324, + "end": 6329, "loc": { "start": { - "line": 180, + "line": 194, "column": 12 }, "end": { - "line": 180, - "column": 21 + "line": 194, + "column": 17 } } }, @@ -65229,16 +67213,16 @@ "updateContext": null }, "value": "=", - "start": 5984, - "end": 5985, + "start": 6330, + "end": 6331, "loc": { "start": { - "line": 180, - "column": 22 + "line": 194, + "column": 18 }, "end": { - "line": 180, - "column": 23 + "line": 194, + "column": 19 } } }, @@ -65254,17 +67238,17 @@ "postfix": false, "binop": null }, - "value": "NearestFilter", - "start": 5986, - "end": 5999, + "value": "MirroredRepeatWrapping", + "start": 6332, + "end": 6354, "loc": { "start": { - "line": 180, - "column": 24 + "line": 194, + "column": 20 }, "end": { - "line": 180, - "column": 37 + "line": 194, + "column": 42 } } }, @@ -65281,16 +67265,16 @@ "binop": null, "updateContext": null }, - "start": 5999, - "end": 6000, + "start": 6354, + "end": 6355, "loc": { "start": { - "line": 180, - "column": 37 + "line": 194, + "column": 42 }, "end": { - "line": 180, - "column": 38 + "line": 194, + "column": 43 } } }, @@ -65309,15 +67293,15 @@ "updateContext": null }, "value": "break", - "start": 6013, - "end": 6018, + "start": 6368, + "end": 6373, "loc": { "start": { - "line": 181, + "line": 195, "column": 12 }, "end": { - "line": 181, + "line": 195, "column": 17 } } @@ -65335,15 +67319,15 @@ "binop": null, "updateContext": null }, - "start": 6018, - "end": 6019, + "start": 6373, + "end": 6374, "loc": { "start": { - "line": 181, + "line": 195, "column": 17 }, "end": { - "line": 181, + "line": 195, "column": 18 } } @@ -65363,15 +67347,15 @@ "updateContext": null }, "value": "case", - "start": 6028, - "end": 6032, + "start": 6383, + "end": 6387, "loc": { "start": { - "line": 182, + "line": 196, "column": 8 }, "end": { - "line": 182, + "line": 196, "column": 12 } } @@ -65389,17 +67373,17 @@ "binop": null, "updateContext": null }, - "value": 9729, - "start": 6033, - "end": 6037, + "value": 10497, + "start": 6388, + "end": 6393, "loc": { "start": { - "line": 182, + "line": 196, "column": 13 }, "end": { - "line": 182, - "column": 17 + "line": 196, + "column": 18 } } }, @@ -65416,16 +67400,16 @@ "binop": null, "updateContext": null }, - "start": 6037, - "end": 6038, + "start": 6393, + "end": 6394, "loc": { "start": { - "line": 182, - "column": 17 + "line": 196, + "column": 18 }, "end": { - "line": 182, - "column": 18 + "line": 196, + "column": 19 } } }, @@ -65441,17 +67425,17 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 6051, - "end": 6060, + "value": "wrapS", + "start": 6407, + "end": 6412, "loc": { "start": { - "line": 183, + "line": 197, "column": 12 }, "end": { - "line": 183, - "column": 21 + "line": 197, + "column": 17 } } }, @@ -65469,16 +67453,16 @@ "updateContext": null }, "value": "=", - "start": 6061, - "end": 6062, + "start": 6413, + "end": 6414, "loc": { "start": { - "line": 183, - "column": 22 + "line": 197, + "column": 18 }, "end": { - "line": 183, - "column": 23 + "line": 197, + "column": 19 } } }, @@ -65494,17 +67478,17 @@ "postfix": false, "binop": null }, - "value": "LinearFilter", - "start": 6063, - "end": 6075, + "value": "RepeatWrapping", + "start": 6415, + "end": 6429, "loc": { "start": { - "line": 183, - "column": 24 + "line": 197, + "column": 20 }, "end": { - "line": 183, - "column": 36 + "line": 197, + "column": 34 } } }, @@ -65521,16 +67505,16 @@ "binop": null, "updateContext": null }, - "start": 6075, - "end": 6076, + "start": 6429, + "end": 6430, "loc": { "start": { - "line": 183, - "column": 36 + "line": 197, + "column": 34 }, "end": { - "line": 183, - "column": 37 + "line": 197, + "column": 35 } } }, @@ -65549,15 +67533,15 @@ "updateContext": null }, "value": "break", - "start": 6089, - "end": 6094, + "start": 6443, + "end": 6448, "loc": { "start": { - "line": 184, + "line": 198, "column": 12 }, "end": { - "line": 184, + "line": 198, "column": 17 } } @@ -65575,15 +67559,15 @@ "binop": null, "updateContext": null }, - "start": 6094, - "end": 6095, + "start": 6448, + "end": 6449, "loc": { "start": { - "line": 184, + "line": 198, "column": 17 }, "end": { - "line": 184, + "line": 198, "column": 18 } } @@ -65600,15 +67584,15 @@ "postfix": false, "binop": null }, - "start": 6100, - "end": 6101, + "start": 6454, + "end": 6455, "loc": { "start": { - "line": 185, + "line": 199, "column": 4 }, "end": { - "line": 185, + "line": 199, "column": 5 } } @@ -65628,15 +67612,15 @@ "updateContext": null }, "value": "let", - "start": 6107, - "end": 6110, + "start": 6461, + "end": 6464, "loc": { "start": { - "line": 187, + "line": 201, "column": 4 }, "end": { - "line": 187, + "line": 201, "column": 7 } } @@ -65653,16 +67637,16 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 6111, - "end": 6116, + "value": "wrapT", + "start": 6465, + "end": 6470, "loc": { "start": { - "line": 187, + "line": 201, "column": 8 }, "end": { - "line": 187, + "line": 201, "column": 13 } } @@ -65681,15 +67665,15 @@ "updateContext": null }, "value": "=", - "start": 6117, - "end": 6118, + "start": 6471, + "end": 6472, "loc": { "start": { - "line": 187, + "line": 201, "column": 14 }, "end": { - "line": 187, + "line": 201, "column": 15 } } @@ -65707,15 +67691,15 @@ "binop": null }, "value": "RepeatWrapping", - "start": 6119, - "end": 6133, + "start": 6473, + "end": 6487, "loc": { "start": { - "line": 187, + "line": 201, "column": 16 }, "end": { - "line": 187, + "line": 201, "column": 30 } } @@ -65733,15 +67717,15 @@ "binop": null, "updateContext": null }, - "start": 6133, - "end": 6134, + "start": 6487, + "end": 6488, "loc": { "start": { - "line": 187, + "line": 201, "column": 30 }, "end": { - "line": 187, + "line": 201, "column": 31 } } @@ -65761,15 +67745,15 @@ "updateContext": null }, "value": "switch", - "start": 6139, - "end": 6145, + "start": 6493, + "end": 6499, "loc": { "start": { - "line": 188, + "line": 202, "column": 4 }, "end": { - "line": 188, + "line": 202, "column": 10 } } @@ -65786,15 +67770,15 @@ "postfix": false, "binop": null }, - "start": 6146, - "end": 6147, + "start": 6500, + "end": 6501, "loc": { "start": { - "line": 188, + "line": 202, "column": 11 }, "end": { - "line": 188, + "line": 202, "column": 12 } } @@ -65812,15 +67796,15 @@ "binop": null }, "value": "texture", - "start": 6147, - "end": 6154, + "start": 6501, + "end": 6508, "loc": { "start": { - "line": 188, + "line": 202, "column": 12 }, "end": { - "line": 188, + "line": 202, "column": 19 } } @@ -65838,15 +67822,15 @@ "binop": null, "updateContext": null }, - "start": 6154, - "end": 6155, + "start": 6508, + "end": 6509, "loc": { "start": { - "line": 188, + "line": 202, "column": 19 }, "end": { - "line": 188, + "line": 202, "column": 20 } } @@ -65864,15 +67848,15 @@ "binop": null }, "value": "sampler", - "start": 6155, - "end": 6162, + "start": 6509, + "end": 6516, "loc": { "start": { - "line": 188, + "line": 202, "column": 20 }, "end": { - "line": 188, + "line": 202, "column": 27 } } @@ -65890,15 +67874,15 @@ "binop": null, "updateContext": null }, - "start": 6162, - "end": 6163, + "start": 6516, + "end": 6517, "loc": { "start": { - "line": 188, + "line": 202, "column": 27 }, "end": { - "line": 188, + "line": 202, "column": 28 } } @@ -65915,16 +67899,16 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 6163, - "end": 6168, + "value": "wrapT", + "start": 6517, + "end": 6522, "loc": { "start": { - "line": 188, + "line": 202, "column": 28 }, "end": { - "line": 188, + "line": 202, "column": 33 } } @@ -65941,15 +67925,15 @@ "postfix": false, "binop": null }, - "start": 6168, - "end": 6169, + "start": 6522, + "end": 6523, "loc": { "start": { - "line": 188, + "line": 202, "column": 33 }, "end": { - "line": 188, + "line": 202, "column": 34 } } @@ -65966,15 +67950,15 @@ "postfix": false, "binop": null }, - "start": 6170, - "end": 6171, + "start": 6524, + "end": 6525, "loc": { "start": { - "line": 188, + "line": 202, "column": 35 }, "end": { - "line": 188, + "line": 202, "column": 36 } } @@ -65994,15 +67978,15 @@ "updateContext": null }, "value": "case", - "start": 6180, - "end": 6184, + "start": 6534, + "end": 6538, "loc": { "start": { - "line": 189, + "line": 203, "column": 8 }, "end": { - "line": 189, + "line": 203, "column": 12 } } @@ -66021,15 +68005,15 @@ "updateContext": null }, "value": 33071, - "start": 6185, - "end": 6190, + "start": 6539, + "end": 6544, "loc": { "start": { - "line": 189, + "line": 203, "column": 13 }, "end": { - "line": 189, + "line": 203, "column": 18 } } @@ -66047,15 +68031,15 @@ "binop": null, "updateContext": null }, - "start": 6190, - "end": 6191, + "start": 6544, + "end": 6545, "loc": { "start": { - "line": 189, + "line": 203, "column": 18 }, "end": { - "line": 189, + "line": 203, "column": 19 } } @@ -66072,16 +68056,16 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 6204, - "end": 6209, + "value": "wrapT", + "start": 6558, + "end": 6563, "loc": { "start": { - "line": 190, + "line": 204, "column": 12 }, "end": { - "line": 190, + "line": 204, "column": 17 } } @@ -66100,15 +68084,15 @@ "updateContext": null }, "value": "=", - "start": 6210, - "end": 6211, + "start": 6564, + "end": 6565, "loc": { "start": { - "line": 190, + "line": 204, "column": 18 }, "end": { - "line": 190, + "line": 204, "column": 19 } } @@ -66126,15 +68110,15 @@ "binop": null }, "value": "ClampToEdgeWrapping", - "start": 6212, - "end": 6231, + "start": 6566, + "end": 6585, "loc": { "start": { - "line": 190, + "line": 204, "column": 20 }, "end": { - "line": 190, + "line": 204, "column": 39 } } @@ -66152,15 +68136,15 @@ "binop": null, "updateContext": null }, - "start": 6231, - "end": 6232, + "start": 6585, + "end": 6586, "loc": { "start": { - "line": 190, + "line": 204, "column": 39 }, "end": { - "line": 190, + "line": 204, "column": 40 } } @@ -66180,15 +68164,15 @@ "updateContext": null }, "value": "break", - "start": 6245, - "end": 6250, + "start": 6599, + "end": 6604, "loc": { "start": { - "line": 191, + "line": 205, "column": 12 }, "end": { - "line": 191, + "line": 205, "column": 17 } } @@ -66206,15 +68190,15 @@ "binop": null, "updateContext": null }, - "start": 6250, - "end": 6251, + "start": 6604, + "end": 6605, "loc": { "start": { - "line": 191, + "line": 205, "column": 17 }, "end": { - "line": 191, + "line": 205, "column": 18 } } @@ -66234,15 +68218,15 @@ "updateContext": null }, "value": "case", - "start": 6260, - "end": 6264, + "start": 6614, + "end": 6618, "loc": { "start": { - "line": 192, + "line": 206, "column": 8 }, "end": { - "line": 192, + "line": 206, "column": 12 } } @@ -66261,15 +68245,15 @@ "updateContext": null }, "value": 33648, - "start": 6265, - "end": 6270, + "start": 6619, + "end": 6624, "loc": { "start": { - "line": 192, + "line": 206, "column": 13 }, "end": { - "line": 192, + "line": 206, "column": 18 } } @@ -66287,15 +68271,15 @@ "binop": null, "updateContext": null }, - "start": 6270, - "end": 6271, + "start": 6624, + "end": 6625, "loc": { "start": { - "line": 192, + "line": 206, "column": 18 }, "end": { - "line": 192, + "line": 206, "column": 19 } } @@ -66312,16 +68296,16 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 6284, - "end": 6289, + "value": "wrapT", + "start": 6638, + "end": 6643, "loc": { "start": { - "line": 193, + "line": 207, "column": 12 }, "end": { - "line": 193, + "line": 207, "column": 17 } } @@ -66340,15 +68324,15 @@ "updateContext": null }, "value": "=", - "start": 6290, - "end": 6291, + "start": 6644, + "end": 6645, "loc": { "start": { - "line": 193, + "line": 207, "column": 18 }, "end": { - "line": 193, + "line": 207, "column": 19 } } @@ -66366,15 +68350,15 @@ "binop": null }, "value": "MirroredRepeatWrapping", - "start": 6292, - "end": 6314, + "start": 6646, + "end": 6668, "loc": { "start": { - "line": 193, + "line": 207, "column": 20 }, "end": { - "line": 193, + "line": 207, "column": 42 } } @@ -66392,15 +68376,15 @@ "binop": null, "updateContext": null }, - "start": 6314, - "end": 6315, + "start": 6668, + "end": 6669, "loc": { "start": { - "line": 193, + "line": 207, "column": 42 }, "end": { - "line": 193, + "line": 207, "column": 43 } } @@ -66420,15 +68404,15 @@ "updateContext": null }, "value": "break", - "start": 6328, - "end": 6333, + "start": 6682, + "end": 6687, "loc": { "start": { - "line": 194, + "line": 208, "column": 12 }, "end": { - "line": 194, + "line": 208, "column": 17 } } @@ -66446,15 +68430,15 @@ "binop": null, "updateContext": null }, - "start": 6333, - "end": 6334, + "start": 6687, + "end": 6688, "loc": { "start": { - "line": 194, + "line": 208, "column": 17 }, "end": { - "line": 194, + "line": 208, "column": 18 } } @@ -66474,15 +68458,15 @@ "updateContext": null }, "value": "case", - "start": 6343, - "end": 6347, + "start": 6697, + "end": 6701, "loc": { "start": { - "line": 195, + "line": 209, "column": 8 }, "end": { - "line": 195, + "line": 209, "column": 12 } } @@ -66501,15 +68485,15 @@ "updateContext": null }, "value": 10497, - "start": 6348, - "end": 6353, + "start": 6702, + "end": 6707, "loc": { "start": { - "line": 195, + "line": 209, "column": 13 }, "end": { - "line": 195, + "line": 209, "column": 18 } } @@ -66527,15 +68511,15 @@ "binop": null, "updateContext": null }, - "start": 6353, - "end": 6354, + "start": 6707, + "end": 6708, "loc": { "start": { - "line": 195, + "line": 209, "column": 18 }, "end": { - "line": 195, + "line": 209, "column": 19 } } @@ -66552,16 +68536,16 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 6367, - "end": 6372, + "value": "wrapT", + "start": 6721, + "end": 6726, "loc": { "start": { - "line": 196, + "line": 210, "column": 12 }, "end": { - "line": 196, + "line": 210, "column": 17 } } @@ -66580,15 +68564,15 @@ "updateContext": null }, "value": "=", - "start": 6373, - "end": 6374, + "start": 6727, + "end": 6728, "loc": { "start": { - "line": 196, + "line": 210, "column": 18 }, "end": { - "line": 196, + "line": 210, "column": 19 } } @@ -66606,15 +68590,15 @@ "binop": null }, "value": "RepeatWrapping", - "start": 6375, - "end": 6389, + "start": 6729, + "end": 6743, "loc": { "start": { - "line": 196, + "line": 210, "column": 20 }, "end": { - "line": 196, + "line": 210, "column": 34 } } @@ -66632,15 +68616,15 @@ "binop": null, "updateContext": null }, - "start": 6389, - "end": 6390, + "start": 6743, + "end": 6744, "loc": { "start": { - "line": 196, + "line": 210, "column": 34 }, "end": { - "line": 196, + "line": 210, "column": 35 } } @@ -66660,15 +68644,15 @@ "updateContext": null }, "value": "break", - "start": 6403, - "end": 6408, + "start": 6757, + "end": 6762, "loc": { "start": { - "line": 197, + "line": 211, "column": 12 }, "end": { - "line": 197, + "line": 211, "column": 17 } } @@ -66686,15 +68670,15 @@ "binop": null, "updateContext": null }, - "start": 6408, - "end": 6409, + "start": 6762, + "end": 6763, "loc": { "start": { - "line": 197, + "line": 211, "column": 17 }, "end": { - "line": 197, + "line": 211, "column": 18 } } @@ -66711,15 +68695,15 @@ "postfix": false, "binop": null }, - "start": 6414, - "end": 6415, + "start": 6768, + "end": 6769, "loc": { "start": { - "line": 198, + "line": 212, "column": 4 }, "end": { - "line": 198, + "line": 212, "column": 5 } } @@ -66739,15 +68723,15 @@ "updateContext": null }, "value": "let", - "start": 6421, - "end": 6424, + "start": 6775, + "end": 6778, "loc": { "start": { - "line": 200, + "line": 214, "column": 4 }, "end": { - "line": 200, + "line": 214, "column": 7 } } @@ -66764,16 +68748,16 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 6425, - "end": 6430, + "value": "wrapR", + "start": 6779, + "end": 6784, "loc": { "start": { - "line": 200, + "line": 214, "column": 8 }, "end": { - "line": 200, + "line": 214, "column": 13 } } @@ -66792,15 +68776,15 @@ "updateContext": null }, "value": "=", - "start": 6431, - "end": 6432, + "start": 6785, + "end": 6786, "loc": { "start": { - "line": 200, + "line": 214, "column": 14 }, "end": { - "line": 200, + "line": 214, "column": 15 } } @@ -66818,15 +68802,15 @@ "binop": null }, "value": "RepeatWrapping", - "start": 6433, - "end": 6447, + "start": 6787, + "end": 6801, "loc": { "start": { - "line": 200, + "line": 214, "column": 16 }, "end": { - "line": 200, + "line": 214, "column": 30 } } @@ -66844,15 +68828,15 @@ "binop": null, "updateContext": null }, - "start": 6447, - "end": 6448, + "start": 6801, + "end": 6802, "loc": { "start": { - "line": 200, + "line": 214, "column": 30 }, "end": { - "line": 200, + "line": 214, "column": 31 } } @@ -66872,15 +68856,15 @@ "updateContext": null }, "value": "switch", - "start": 6453, - "end": 6459, + "start": 6807, + "end": 6813, "loc": { "start": { - "line": 201, + "line": 215, "column": 4 }, "end": { - "line": 201, + "line": 215, "column": 10 } } @@ -66897,15 +68881,15 @@ "postfix": false, "binop": null }, - "start": 6460, - "end": 6461, + "start": 6814, + "end": 6815, "loc": { "start": { - "line": 201, + "line": 215, "column": 11 }, "end": { - "line": 201, + "line": 215, "column": 12 } } @@ -66923,15 +68907,15 @@ "binop": null }, "value": "texture", - "start": 6461, - "end": 6468, + "start": 6815, + "end": 6822, "loc": { "start": { - "line": 201, + "line": 215, "column": 12 }, "end": { - "line": 201, + "line": 215, "column": 19 } } @@ -66949,15 +68933,15 @@ "binop": null, "updateContext": null }, - "start": 6468, - "end": 6469, + "start": 6822, + "end": 6823, "loc": { "start": { - "line": 201, + "line": 215, "column": 19 }, "end": { - "line": 201, + "line": 215, "column": 20 } } @@ -66975,15 +68959,15 @@ "binop": null }, "value": "sampler", - "start": 6469, - "end": 6476, + "start": 6823, + "end": 6830, "loc": { "start": { - "line": 201, + "line": 215, "column": 20 }, "end": { - "line": 201, + "line": 215, "column": 27 } } @@ -67001,15 +68985,15 @@ "binop": null, "updateContext": null }, - "start": 6476, - "end": 6477, + "start": 6830, + "end": 6831, "loc": { "start": { - "line": 201, + "line": 215, "column": 27 }, "end": { - "line": 201, + "line": 215, "column": 28 } } @@ -67026,16 +69010,16 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 6477, - "end": 6482, + "value": "wrapR", + "start": 6831, + "end": 6836, "loc": { "start": { - "line": 201, + "line": 215, "column": 28 }, "end": { - "line": 201, + "line": 215, "column": 33 } } @@ -67052,15 +69036,15 @@ "postfix": false, "binop": null }, - "start": 6482, - "end": 6483, + "start": 6836, + "end": 6837, "loc": { "start": { - "line": 201, + "line": 215, "column": 33 }, "end": { - "line": 201, + "line": 215, "column": 34 } } @@ -67077,15 +69061,15 @@ "postfix": false, "binop": null }, - "start": 6484, - "end": 6485, + "start": 6838, + "end": 6839, "loc": { "start": { - "line": 201, + "line": 215, "column": 35 }, "end": { - "line": 201, + "line": 215, "column": 36 } } @@ -67105,15 +69089,15 @@ "updateContext": null }, "value": "case", - "start": 6494, - "end": 6498, + "start": 6848, + "end": 6852, "loc": { "start": { - "line": 202, + "line": 216, "column": 8 }, "end": { - "line": 202, + "line": 216, "column": 12 } } @@ -67132,15 +69116,15 @@ "updateContext": null }, "value": 33071, - "start": 6499, - "end": 6504, + "start": 6853, + "end": 6858, "loc": { "start": { - "line": 202, + "line": 216, "column": 13 }, "end": { - "line": 202, + "line": 216, "column": 18 } } @@ -67158,15 +69142,15 @@ "binop": null, "updateContext": null }, - "start": 6504, - "end": 6505, + "start": 6858, + "end": 6859, "loc": { "start": { - "line": 202, + "line": 216, "column": 18 }, "end": { - "line": 202, + "line": 216, "column": 19 } } @@ -67183,16 +69167,16 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 6518, - "end": 6523, + "value": "wrapR", + "start": 6872, + "end": 6877, "loc": { "start": { - "line": 203, + "line": 217, "column": 12 }, "end": { - "line": 203, + "line": 217, "column": 17 } } @@ -67211,15 +69195,15 @@ "updateContext": null }, "value": "=", - "start": 6524, - "end": 6525, + "start": 6878, + "end": 6879, "loc": { "start": { - "line": 203, + "line": 217, "column": 18 }, "end": { - "line": 203, + "line": 217, "column": 19 } } @@ -67237,15 +69221,15 @@ "binop": null }, "value": "ClampToEdgeWrapping", - "start": 6526, - "end": 6545, + "start": 6880, + "end": 6899, "loc": { "start": { - "line": 203, + "line": 217, "column": 20 }, "end": { - "line": 203, + "line": 217, "column": 39 } } @@ -67263,15 +69247,15 @@ "binop": null, "updateContext": null }, - "start": 6545, - "end": 6546, + "start": 6899, + "end": 6900, "loc": { "start": { - "line": 203, + "line": 217, "column": 39 }, "end": { - "line": 203, + "line": 217, "column": 40 } } @@ -67291,15 +69275,15 @@ "updateContext": null }, "value": "break", - "start": 6559, - "end": 6564, + "start": 6913, + "end": 6918, "loc": { "start": { - "line": 204, + "line": 218, "column": 12 }, "end": { - "line": 204, + "line": 218, "column": 17 } } @@ -67317,15 +69301,15 @@ "binop": null, "updateContext": null }, - "start": 6564, - "end": 6565, + "start": 6918, + "end": 6919, "loc": { "start": { - "line": 204, + "line": 218, "column": 17 }, "end": { - "line": 204, + "line": 218, "column": 18 } } @@ -67345,15 +69329,15 @@ "updateContext": null }, "value": "case", - "start": 6574, - "end": 6578, + "start": 6928, + "end": 6932, "loc": { "start": { - "line": 205, + "line": 219, "column": 8 }, "end": { - "line": 205, + "line": 219, "column": 12 } } @@ -67372,15 +69356,15 @@ "updateContext": null }, "value": 33648, - "start": 6579, - "end": 6584, + "start": 6933, + "end": 6938, "loc": { "start": { - "line": 205, + "line": 219, "column": 13 }, "end": { - "line": 205, + "line": 219, "column": 18 } } @@ -67398,15 +69382,15 @@ "binop": null, "updateContext": null }, - "start": 6584, - "end": 6585, + "start": 6938, + "end": 6939, "loc": { "start": { - "line": 205, + "line": 219, "column": 18 }, "end": { - "line": 205, + "line": 219, "column": 19 } } @@ -67423,16 +69407,16 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 6598, - "end": 6603, + "value": "wrapR", + "start": 6952, + "end": 6957, "loc": { "start": { - "line": 206, + "line": 220, "column": 12 }, "end": { - "line": 206, + "line": 220, "column": 17 } } @@ -67451,15 +69435,15 @@ "updateContext": null }, "value": "=", - "start": 6604, - "end": 6605, + "start": 6958, + "end": 6959, "loc": { "start": { - "line": 206, + "line": 220, "column": 18 }, "end": { - "line": 206, + "line": 220, "column": 19 } } @@ -67477,15 +69461,15 @@ "binop": null }, "value": "MirroredRepeatWrapping", - "start": 6606, - "end": 6628, + "start": 6960, + "end": 6982, "loc": { "start": { - "line": 206, + "line": 220, "column": 20 }, "end": { - "line": 206, + "line": 220, "column": 42 } } @@ -67503,15 +69487,15 @@ "binop": null, "updateContext": null }, - "start": 6628, - "end": 6629, + "start": 6982, + "end": 6983, "loc": { "start": { - "line": 206, + "line": 220, "column": 42 }, "end": { - "line": 206, + "line": 220, "column": 43 } } @@ -67531,15 +69515,15 @@ "updateContext": null }, "value": "break", - "start": 6642, - "end": 6647, + "start": 6996, + "end": 7001, "loc": { "start": { - "line": 207, + "line": 221, "column": 12 }, "end": { - "line": 207, + "line": 221, "column": 17 } } @@ -67557,15 +69541,15 @@ "binop": null, "updateContext": null }, - "start": 6647, - "end": 6648, + "start": 7001, + "end": 7002, "loc": { "start": { - "line": 207, + "line": 221, "column": 17 }, "end": { - "line": 207, + "line": 221, "column": 18 } } @@ -67585,15 +69569,15 @@ "updateContext": null }, "value": "case", - "start": 6657, - "end": 6661, + "start": 7011, + "end": 7015, "loc": { "start": { - "line": 208, + "line": 222, "column": 8 }, "end": { - "line": 208, + "line": 222, "column": 12 } } @@ -67612,15 +69596,15 @@ "updateContext": null }, "value": 10497, - "start": 6662, - "end": 6667, + "start": 7016, + "end": 7021, "loc": { "start": { - "line": 208, + "line": 222, "column": 13 }, "end": { - "line": 208, + "line": 222, "column": 18 } } @@ -67638,15 +69622,15 @@ "binop": null, "updateContext": null }, - "start": 6667, - "end": 6668, + "start": 7021, + "end": 7022, "loc": { "start": { - "line": 208, + "line": 222, "column": 18 }, "end": { - "line": 208, + "line": 222, "column": 19 } } @@ -67663,16 +69647,16 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 6681, - "end": 6686, + "value": "wrapR", + "start": 7035, + "end": 7040, "loc": { "start": { - "line": 209, + "line": 223, "column": 12 }, "end": { - "line": 209, + "line": 223, "column": 17 } } @@ -67691,15 +69675,15 @@ "updateContext": null }, "value": "=", - "start": 6687, - "end": 6688, + "start": 7041, + "end": 7042, "loc": { "start": { - "line": 209, + "line": 223, "column": 18 }, "end": { - "line": 209, + "line": 223, "column": 19 } } @@ -67717,15 +69701,15 @@ "binop": null }, "value": "RepeatWrapping", - "start": 6689, - "end": 6703, + "start": 7043, + "end": 7057, "loc": { "start": { - "line": 209, + "line": 223, "column": 20 }, "end": { - "line": 209, + "line": 223, "column": 34 } } @@ -67743,15 +69727,15 @@ "binop": null, "updateContext": null }, - "start": 6703, - "end": 6704, + "start": 7057, + "end": 7058, "loc": { "start": { - "line": 209, + "line": 223, "column": 34 }, "end": { - "line": 209, + "line": 223, "column": 35 } } @@ -67771,15 +69755,15 @@ "updateContext": null }, "value": "break", - "start": 6717, - "end": 6722, + "start": 7071, + "end": 7076, "loc": { "start": { - "line": 210, + "line": 224, "column": 12 }, "end": { - "line": 210, + "line": 224, "column": 17 } } @@ -67797,15 +69781,15 @@ "binop": null, "updateContext": null }, - "start": 6722, - "end": 6723, + "start": 7076, + "end": 7077, "loc": { "start": { - "line": 210, + "line": 224, "column": 17 }, "end": { - "line": 210, + "line": 224, "column": 18 } } @@ -67822,47 +69806,19 @@ "postfix": false, "binop": null }, - "start": 6728, - "end": 6729, + "start": 7082, + "end": 7083, "loc": { "start": { - "line": 211, + "line": 225, "column": 4 }, "end": { - "line": 211, + "line": 225, "column": 5 } } }, - { - "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "let", - "start": 6735, - "end": 6738, - "loc": { - "start": { - "line": 213, - "column": 4 - }, - "end": { - "line": 213, - "column": 7 - } - } - }, { "type": { "label": "name", @@ -67875,44 +69831,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 6739, - "end": 6744, + "value": "ctx", + "start": 7089, + "end": 7092, "loc": { "start": { - "line": 213, - "column": 8 + "line": 227, + "column": 4 }, "end": { - "line": 213, - "column": 13 + "line": 227, + "column": 7 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 6745, - "end": 6746, + "start": 7092, + "end": 7093, "loc": { "start": { - "line": 213, - "column": 14 + "line": 227, + "column": 7 }, "end": { - "line": 213, - "column": 15 + "line": 227, + "column": 8 } } }, @@ -67928,24 +69883,24 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 6747, - "end": 6761, + "value": "xktModel", + "start": 7093, + "end": 7101, "loc": { "start": { - "line": 213, - "column": 16 + "line": 227, + "column": 8 }, "end": { - "line": 213, - "column": 30 + "line": 227, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -67955,44 +69910,42 @@ "binop": null, "updateContext": null }, - "start": 6761, - "end": 6762, + "start": 7101, + "end": 7102, "loc": { "start": { - "line": 213, - "column": 30 + "line": 227, + "column": 16 }, "end": { - "line": 213, - "column": 31 + "line": 227, + "column": 17 } } }, { "type": { - "label": "switch", - "keyword": "switch", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "switch", - "start": 6767, - "end": 6773, + "value": "createTexture", + "start": 7102, + "end": 7115, "loc": { "start": { - "line": 214, - "column": 4 + "line": 227, + "column": 17 }, "end": { - "line": 214, - "column": 10 + "line": 227, + "column": 30 } } }, @@ -68008,23 +69961,23 @@ "postfix": false, "binop": null }, - "start": 6774, - "end": 6775, + "start": 7115, + "end": 7116, "loc": { "start": { - "line": 214, - "column": 11 + "line": 227, + "column": 30 }, "end": { - "line": 214, - "column": 12 + "line": 227, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -68033,43 +69986,16 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 6775, - "end": 6782, - "loc": { - "start": { - "line": 214, - "column": 12 - }, - "end": { - "line": 214, - "column": 19 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 6782, - "end": 6783, + "start": 7116, + "end": 7117, "loc": { "start": { - "line": 214, - "column": 19 + "line": 227, + "column": 31 }, "end": { - "line": 214, - "column": 20 + "line": 227, + "column": 32 } } }, @@ -68085,24 +70011,24 @@ "postfix": false, "binop": null }, - "value": "sampler", - "start": 6783, - "end": 6790, + "value": "textureId", + "start": 7126, + "end": 7135, "loc": { "start": { - "line": 214, - "column": 20 + "line": 228, + "column": 8 }, "end": { - "line": 214, - "column": 27 + "line": 228, + "column": 17 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68112,16 +70038,16 @@ "binop": null, "updateContext": null }, - "start": 6790, - "end": 6791, + "start": 7135, + "end": 7136, "loc": { "start": { - "line": 214, - "column": 27 + "line": 228, + "column": 17 }, "end": { - "line": 214, - "column": 28 + "line": 228, + "column": 18 } } }, @@ -68137,49 +70063,50 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 6791, - "end": 6796, + "value": "textureId", + "start": 7137, + "end": 7146, "loc": { "start": { - "line": 214, - "column": 28 + "line": 228, + "column": 19 }, "end": { - "line": 214, - "column": 33 + "line": 228, + "column": 28 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 6796, - "end": 6797, + "start": 7146, + "end": 7147, "loc": { "start": { - "line": 214, - "column": 33 + "line": 228, + "column": 28 }, "end": { - "line": 214, - "column": 34 + "line": 228, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -68188,23 +70115,23 @@ "postfix": false, "binop": null }, - "start": 6798, - "end": 6799, + "value": "imageData", + "start": 7156, + "end": 7165, "loc": { "start": { - "line": 214, - "column": 35 + "line": 229, + "column": 8 }, "end": { - "line": 214, - "column": 36 + "line": 229, + "column": 17 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -68215,23 +70142,22 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 6808, - "end": 6812, + "start": 7165, + "end": 7166, "loc": { "start": { - "line": 215, - "column": 8 + "line": 229, + "column": 17 }, "end": { - "line": 215, - "column": 12 + "line": 229, + "column": 18 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -68239,27 +70165,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 33071, - "start": 6813, - "end": 6818, + "value": "texture", + "start": 7167, + "end": 7174, "loc": { "start": { - "line": 215, - "column": 13 + "line": 229, + "column": 19 }, "end": { - "line": 215, - "column": 18 + "line": 229, + "column": 26 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68269,16 +70194,16 @@ "binop": null, "updateContext": null }, - "start": 6818, - "end": 6819, + "start": 7174, + "end": 7175, "loc": { "start": { - "line": 215, - "column": 18 + "line": 229, + "column": 26 }, "end": { - "line": 215, - "column": 19 + "line": 229, + "column": 27 } } }, @@ -68294,44 +70219,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 6832, - "end": 6837, + "value": "source", + "start": 7175, + "end": 7181, "loc": { "start": { - "line": 216, - "column": 12 + "line": 229, + "column": 27 }, "end": { - "line": 216, - "column": 17 + "line": 229, + "column": 33 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 6838, - "end": 6839, + "start": 7181, + "end": 7182, "loc": { "start": { - "line": 216, - "column": 18 + "line": 229, + "column": 33 }, "end": { - "line": 216, - "column": 19 + "line": 229, + "column": 34 } } }, @@ -68347,23 +70271,23 @@ "postfix": false, "binop": null }, - "value": "ClampToEdgeWrapping", - "start": 6840, - "end": 6859, + "value": "image", + "start": 7182, + "end": 7187, "loc": { "start": { - "line": 216, - "column": 20 + "line": 229, + "column": 34 }, "end": { - "line": 216, + "line": 229, "column": 39 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -68374,50 +70298,48 @@ "binop": null, "updateContext": null }, - "start": 6859, - "end": 6860, + "start": 7187, + "end": 7188, "loc": { "start": { - "line": 216, + "line": 229, "column": 39 }, "end": { - "line": 216, + "line": 229, "column": 40 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 6873, - "end": 6878, + "value": "mediaType", + "start": 7197, + "end": 7206, "loc": { "start": { - "line": 217, - "column": 12 + "line": 230, + "column": 8 }, "end": { - "line": 217, + "line": 230, "column": 17 } } }, { "type": { - "label": ";", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -68428,50 +70350,22 @@ "binop": null, "updateContext": null }, - "start": 6878, - "end": 6879, + "start": 7206, + "end": 7207, "loc": { "start": { - "line": 217, + "line": 230, "column": 17 }, "end": { - "line": 217, + "line": 230, "column": 18 } } }, { "type": { - "label": "case", - "keyword": "case", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "case", - "start": 6888, - "end": 6892, - "loc": { - "start": { - "line": 218, - "column": 8 - }, - "end": { - "line": 218, - "column": 12 - } - } - }, - { - "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -68479,27 +70373,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 33648, - "start": 6893, - "end": 6898, + "value": "texture", + "start": 7208, + "end": 7215, "loc": { "start": { - "line": 218, - "column": 13 + "line": 230, + "column": 19 }, "end": { - "line": 218, - "column": 18 + "line": 230, + "column": 26 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68509,16 +70402,16 @@ "binop": null, "updateContext": null }, - "start": 6898, - "end": 6899, + "start": 7215, + "end": 7216, "loc": { "start": { - "line": 218, - "column": 18 + "line": 230, + "column": 26 }, "end": { - "line": 218, - "column": 19 + "line": 230, + "column": 27 } } }, @@ -68534,44 +70427,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 6912, - "end": 6917, + "value": "source", + "start": 7216, + "end": 7222, "loc": { "start": { - "line": 219, - "column": 12 + "line": 230, + "column": 27 }, "end": { - "line": 219, - "column": 17 + "line": 230, + "column": 33 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 6918, - "end": 6919, + "start": 7222, + "end": 7223, "loc": { "start": { - "line": 219, - "column": 18 + "line": 230, + "column": 33 }, "end": { - "line": 219, - "column": 19 + "line": 230, + "column": 34 } } }, @@ -68587,23 +70479,23 @@ "postfix": false, "binop": null }, - "value": "MirroredRepeatWrapping", - "start": 6920, - "end": 6942, + "value": "mediaType", + "start": 7223, + "end": 7232, "loc": { "start": { - "line": 219, - "column": 20 + "line": 230, + "column": 34 }, "end": { - "line": 219, - "column": 42 + "line": 230, + "column": 43 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -68614,24 +70506,49 @@ "binop": null, "updateContext": null }, - "start": 6942, - "end": 6943, + "start": 7232, + "end": 7233, "loc": { "start": { - "line": 219, - "column": 42 + "line": 230, + "column": 43 }, "end": { - "line": 219, - "column": 43 + "line": 230, + "column": 44 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "compressed", + "start": 7242, + "end": 7252, + "loc": { + "start": { + "line": 231, + "column": 8 + }, + "end": { + "line": 231, + "column": 18 + } + } + }, + { + "type": { + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68641,25 +70558,25 @@ "binop": null, "updateContext": null }, - "value": "break", - "start": 6956, - "end": 6961, + "start": 7252, + "end": 7253, "loc": { - "start": { - "line": 220, - "column": 12 + "start": { + "line": 231, + "column": 18 }, "end": { - "line": 220, - "column": 17 + "line": 231, + "column": 19 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "true", + "keyword": "true", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -68668,23 +70585,23 @@ "binop": null, "updateContext": null }, - "start": 6961, - "end": 6962, + "value": "true", + "start": 7254, + "end": 7258, "loc": { "start": { - "line": 220, - "column": 17 + "line": 231, + "column": 20 }, "end": { - "line": 220, - "column": 18 + "line": 231, + "column": 24 } } }, { "type": { - "label": "case", - "keyword": "case", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -68695,23 +70612,22 @@ "binop": null, "updateContext": null }, - "value": "case", - "start": 6971, - "end": 6975, + "start": 7258, + "end": 7259, "loc": { "start": { - "line": 221, - "column": 8 + "line": 231, + "column": 24 }, "end": { - "line": 221, - "column": 12 + "line": 231, + "column": 25 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -68719,20 +70635,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 10497, - "start": 6976, - "end": 6981, + "value": "width", + "start": 7268, + "end": 7273, "loc": { "start": { - "line": 221, - "column": 13 + "line": 232, + "column": 8 }, "end": { - "line": 221, - "column": 18 + "line": 232, + "column": 13 } } }, @@ -68749,16 +70664,16 @@ "binop": null, "updateContext": null }, - "start": 6981, - "end": 6982, + "start": 7273, + "end": 7274, "loc": { "start": { - "line": 221, - "column": 18 + "line": 232, + "column": 13 }, "end": { - "line": 221, - "column": 19 + "line": 232, + "column": 14 } } }, @@ -68774,44 +70689,43 @@ "postfix": false, "binop": null }, - "value": "wrapR", - "start": 6995, - "end": 7000, + "value": "texture", + "start": 7275, + "end": 7282, "loc": { "start": { - "line": 222, - "column": 12 + "line": 232, + "column": 15 }, "end": { - "line": 222, - "column": 17 + "line": 232, + "column": 22 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7001, - "end": 7002, + "start": 7282, + "end": 7283, "loc": { "start": { - "line": 222, - "column": 18 + "line": 232, + "column": 22 }, "end": { - "line": 222, - "column": 19 + "line": 232, + "column": 23 } } }, @@ -68827,24 +70741,24 @@ "postfix": false, "binop": null }, - "value": "RepeatWrapping", - "start": 7003, - "end": 7017, + "value": "source", + "start": 7283, + "end": 7289, "loc": { "start": { - "line": 222, - "column": 20 + "line": 232, + "column": 23 }, "end": { - "line": 222, - "column": 34 + "line": 232, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68854,51 +70768,49 @@ "binop": null, "updateContext": null }, - "start": 7017, - "end": 7018, + "start": 7289, + "end": 7290, "loc": { "start": { - "line": 222, - "column": 34 + "line": 232, + "column": 29 }, "end": { - "line": 222, - "column": 35 + "line": 232, + "column": 30 } } }, { "type": { - "label": "break", - "keyword": "break", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "break", - "start": 7031, - "end": 7036, + "value": "image", + "start": 7290, + "end": 7295, "loc": { "start": { - "line": 223, - "column": 12 + "line": 232, + "column": 30 }, "end": { - "line": 223, - "column": 17 + "line": 232, + "column": 35 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68908,24 +70820,24 @@ "binop": null, "updateContext": null }, - "start": 7036, - "end": 7037, + "start": 7295, + "end": 7296, "loc": { "start": { - "line": 223, - "column": 17 + "line": 232, + "column": 35 }, "end": { - "line": 223, - "column": 18 + "line": 232, + "column": 36 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -68933,16 +70845,43 @@ "postfix": false, "binop": null }, - "start": 7042, - "end": 7043, + "value": "width", + "start": 7296, + "end": 7301, "loc": { "start": { - "line": 224, - "column": 4 + "line": 232, + "column": 36 }, "end": { - "line": 224, - "column": 5 + "line": 232, + "column": 41 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7301, + "end": 7302, + "loc": { + "start": { + "line": 232, + "column": 41 + }, + "end": { + "line": 232, + "column": 42 } } }, @@ -68958,24 +70897,24 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7049, - "end": 7052, + "value": "height", + "start": 7311, + "end": 7317, "loc": { "start": { - "line": 226, - "column": 4 + "line": 233, + "column": 8 }, "end": { - "line": 226, - "column": 7 + "line": 233, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -68985,16 +70924,16 @@ "binop": null, "updateContext": null }, - "start": 7052, - "end": 7053, + "start": 7317, + "end": 7318, "loc": { "start": { - "line": 226, - "column": 7 + "line": 233, + "column": 14 }, "end": { - "line": 226, - "column": 8 + "line": 233, + "column": 15 } } }, @@ -69010,17 +70949,17 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 7053, - "end": 7061, + "value": "texture", + "start": 7319, + "end": 7326, "loc": { "start": { - "line": 226, - "column": 8 + "line": 233, + "column": 16 }, "end": { - "line": 226, - "column": 16 + "line": 233, + "column": 23 } } }, @@ -69037,16 +70976,16 @@ "binop": null, "updateContext": null }, - "start": 7061, - "end": 7062, + "start": 7326, + "end": 7327, "loc": { "start": { - "line": 226, - "column": 16 + "line": 233, + "column": 23 }, "end": { - "line": 226, - "column": 17 + "line": 233, + "column": 24 } } }, @@ -69062,49 +71001,50 @@ "postfix": false, "binop": null }, - "value": "createTexture", - "start": 7062, - "end": 7075, + "value": "source", + "start": 7327, + "end": 7333, "loc": { "start": { - "line": 226, - "column": 17 + "line": 233, + "column": 24 }, "end": { - "line": 226, + "line": 233, "column": 30 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7075, - "end": 7076, + "start": 7333, + "end": 7334, "loc": { "start": { - "line": 226, + "line": 233, "column": 30 }, "end": { - "line": 226, + "line": 233, "column": 31 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -69113,16 +71053,43 @@ "postfix": false, "binop": null }, - "start": 7076, - "end": 7077, + "value": "image", + "start": 7334, + "end": 7339, "loc": { "start": { - "line": 226, + "line": 233, "column": 31 }, "end": { - "line": 226, - "column": 32 + "line": 233, + "column": 36 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 7339, + "end": 7340, + "loc": { + "start": { + "line": 233, + "column": 36 + }, + "end": { + "line": 233, + "column": 37 } } }, @@ -69138,23 +71105,23 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 7086, - "end": 7095, + "value": "height", + "start": 7340, + "end": 7346, "loc": { "start": { - "line": 227, - "column": 8 + "line": 233, + "column": 37 }, "end": { - "line": 227, - "column": 17 + "line": 233, + "column": 43 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -69165,16 +71132,16 @@ "binop": null, "updateContext": null }, - "start": 7095, - "end": 7096, + "start": 7346, + "end": 7347, "loc": { "start": { - "line": 227, - "column": 17 + "line": 233, + "column": 43 }, "end": { - "line": 227, - "column": 18 + "line": 233, + "column": 44 } } }, @@ -69190,17 +71157,17 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 7097, - "end": 7106, + "value": "minFilter", + "start": 7356, + "end": 7365, "loc": { "start": { - "line": 227, - "column": 19 + "line": 234, + "column": 8 }, "end": { - "line": 227, - "column": 28 + "line": 234, + "column": 17 } } }, @@ -69217,16 +71184,16 @@ "binop": null, "updateContext": null }, - "start": 7106, - "end": 7107, + "start": 7365, + "end": 7366, "loc": { "start": { - "line": 227, - "column": 28 + "line": 234, + "column": 17 }, "end": { - "line": 227, - "column": 29 + "line": 234, + "column": 18 } } }, @@ -69242,23 +71209,23 @@ "postfix": false, "binop": null }, - "value": "imageData", - "start": 7116, - "end": 7125, + "value": "magFilter", + "start": 7375, + "end": 7384, "loc": { "start": { - "line": 228, + "line": 235, "column": 8 }, "end": { - "line": 228, + "line": 235, "column": 17 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -69269,15 +71236,15 @@ "binop": null, "updateContext": null }, - "start": 7125, - "end": 7126, + "start": 7384, + "end": 7385, "loc": { "start": { - "line": 228, + "line": 235, "column": 17 }, "end": { - "line": 228, + "line": 235, "column": 18 } } @@ -69294,24 +71261,24 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 7127, - "end": 7134, + "value": "wrapS", + "start": 7394, + "end": 7399, "loc": { "start": { - "line": 228, - "column": 19 + "line": 236, + "column": 8 }, "end": { - "line": 228, - "column": 26 + "line": 236, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -69321,16 +71288,16 @@ "binop": null, "updateContext": null }, - "start": 7134, - "end": 7135, + "start": 7399, + "end": 7400, "loc": { "start": { - "line": 228, - "column": 26 + "line": 236, + "column": 13 }, "end": { - "line": 228, - "column": 27 + "line": 236, + "column": 14 } } }, @@ -69346,24 +71313,24 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 7135, - "end": 7141, + "value": "wrapT", + "start": 7409, + "end": 7414, "loc": { "start": { - "line": 228, - "column": 27 + "line": 237, + "column": 8 }, "end": { - "line": 228, - "column": 33 + "line": 237, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -69373,16 +71340,16 @@ "binop": null, "updateContext": null }, - "start": 7141, - "end": 7142, + "start": 7414, + "end": 7415, "loc": { "start": { - "line": 228, - "column": 33 + "line": 237, + "column": 13 }, "end": { - "line": 228, - "column": 34 + "line": 237, + "column": 14 } } }, @@ -69398,17 +71365,17 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 7142, - "end": 7147, + "value": "wrapR", + "start": 7424, + "end": 7429, "loc": { "start": { - "line": 228, - "column": 34 + "line": 238, + "column": 8 }, "end": { - "line": 228, - "column": 39 + "line": 238, + "column": 13 } } }, @@ -69425,16 +71392,16 @@ "binop": null, "updateContext": null }, - "start": 7147, - "end": 7148, + "start": 7429, + "end": 7430, "loc": { "start": { - "line": 228, - "column": 39 + "line": 238, + "column": 13 }, "end": { - "line": 228, - "column": 40 + "line": 238, + "column": 14 } } }, @@ -69450,17 +71417,17 @@ "postfix": false, "binop": null }, - "value": "mediaType", - "start": 7157, - "end": 7166, + "value": "flipY", + "start": 7439, + "end": 7444, "loc": { "start": { - "line": 229, + "line": 239, "column": 8 }, "end": { - "line": 229, - "column": 17 + "line": 239, + "column": 13 } } }, @@ -69477,68 +71444,70 @@ "binop": null, "updateContext": null }, - "start": 7166, - "end": 7167, + "start": 7444, + "end": 7445, "loc": { "start": { - "line": 229, - "column": 17 + "line": 239, + "column": 13 }, "end": { - "line": 229, - "column": 18 + "line": 239, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "prefix", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "texture", - "start": 7168, - "end": 7175, + "value": "!", + "start": 7446, + "end": 7447, "loc": { "start": { - "line": 229, - "column": 19 + "line": 239, + "column": 15 }, "end": { - "line": 229, - "column": 26 + "line": 239, + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 7175, - "end": 7176, + "value": "!", + "start": 7447, + "end": 7448, "loc": { "start": { - "line": 229, - "column": 26 + "line": 239, + "column": 16 }, "end": { - "line": 229, - "column": 27 + "line": 239, + "column": 17 } } }, @@ -69554,17 +71523,17 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 7176, - "end": 7182, + "value": "texture", + "start": 7448, + "end": 7455, "loc": { "start": { - "line": 229, - "column": 27 + "line": 239, + "column": 17 }, "end": { - "line": 229, - "column": 33 + "line": 239, + "column": 24 } } }, @@ -69581,16 +71550,16 @@ "binop": null, "updateContext": null }, - "start": 7182, - "end": 7183, + "start": 7455, + "end": 7456, "loc": { "start": { - "line": 229, - "column": 33 + "line": 239, + "column": 24 }, "end": { - "line": 229, - "column": 34 + "line": 239, + "column": 25 } } }, @@ -69606,17 +71575,17 @@ "postfix": false, "binop": null }, - "value": "mediaType", - "start": 7183, - "end": 7192, + "value": "flipY", + "start": 7456, + "end": 7461, "loc": { "start": { - "line": 229, - "column": 34 + "line": 239, + "column": 25 }, "end": { - "line": 229, - "column": 43 + "line": 239, + "column": 30 } } }, @@ -69633,102 +71602,88 @@ "binop": null, "updateContext": null }, - "start": 7192, - "end": 7193, + "start": 7461, + "end": 7462, "loc": { "start": { - "line": 229, - "column": 43 + "line": 239, + "column": 30 }, "end": { - "line": 229, - "column": 44 + "line": 239, + "column": 31 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "compressed", - "start": 7202, - "end": 7212, + "type": "CommentLine", + "value": " encoding: \"sRGB\"", + "start": 7471, + "end": 7494, "loc": { "start": { - "line": 230, + "line": 240, "column": 8 }, "end": { - "line": 230, - "column": 18 + "line": 240, + "column": 31 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7212, - "end": 7213, + "start": 7499, + "end": 7500, "loc": { "start": { - "line": 230, - "column": 18 + "line": 241, + "column": 4 }, - "end": { - "line": 230, - "column": 19 + "end": { + "line": 241, + "column": 5 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 7214, - "end": 7218, + "start": 7500, + "end": 7501, "loc": { "start": { - "line": 230, - "column": 20 + "line": 241, + "column": 5 }, "end": { - "line": 230, - "column": 24 + "line": 241, + "column": 6 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -69739,16 +71694,16 @@ "binop": null, "updateContext": null }, - "start": 7218, - "end": 7219, + "start": 7501, + "end": 7502, "loc": { "start": { - "line": 230, - "column": 24 + "line": 241, + "column": 6 }, "end": { - "line": 230, - "column": 25 + "line": 241, + "column": 7 } } }, @@ -69764,24 +71719,24 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 7228, - "end": 7233, + "value": "texture", + "start": 7507, + "end": 7514, "loc": { "start": { - "line": 231, - "column": 8 + "line": 242, + "column": 4 }, "end": { - "line": 231, - "column": 13 + "line": 242, + "column": 11 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -69791,16 +71746,16 @@ "binop": null, "updateContext": null }, - "start": 7233, - "end": 7234, + "start": 7514, + "end": 7515, "loc": { "start": { - "line": 231, - "column": 13 + "line": 242, + "column": 11 }, "end": { - "line": 231, - "column": 14 + "line": 242, + "column": 12 } } }, @@ -69816,43 +71771,44 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 7235, - "end": 7242, + "value": "_textureId", + "start": 7515, + "end": 7525, "loc": { "start": { - "line": 231, - "column": 15 + "line": 242, + "column": 12 }, "end": { - "line": 231, + "line": 242, "column": 22 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7242, - "end": 7243, + "value": "=", + "start": 7526, + "end": 7527, "loc": { "start": { - "line": 231, - "column": 22 + "line": 242, + "column": 23 }, "end": { - "line": 231, - "column": 23 + "line": 242, + "column": 24 } } }, @@ -69868,24 +71824,24 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 7243, - "end": 7249, + "value": "textureId", + "start": 7528, + "end": 7537, "loc": { "start": { - "line": 231, - "column": 23 + "line": 242, + "column": 25 }, "end": { - "line": 231, - "column": 29 + "line": 242, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -69895,24 +71851,24 @@ "binop": null, "updateContext": null }, - "start": 7249, - "end": 7250, + "start": 7537, + "end": 7538, "loc": { "start": { - "line": 231, - "column": 29 + "line": 242, + "column": 34 }, "end": { - "line": 231, - "column": 30 + "line": 242, + "column": 35 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -69920,43 +71876,43 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 7250, - "end": 7255, + "start": 7539, + "end": 7540, "loc": { "start": { - "line": 231, - "column": 30 + "line": 243, + "column": 0 }, "end": { - "line": 231, - "column": 35 + "line": 243, + "column": 1 } } }, { "type": { - "label": ".", + "label": "function", + "keyword": "function", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7255, - "end": 7256, + "value": "function", + "start": 7542, + "end": 7550, "loc": { "start": { - "line": 231, - "column": 35 + "line": 245, + "column": 0 }, "end": { - "line": 231, - "column": 36 + "line": 245, + "column": 8 } } }, @@ -69972,43 +71928,42 @@ "postfix": false, "binop": null }, - "value": "width", - "start": 7256, - "end": 7261, + "value": "parseMaterials", + "start": 7551, + "end": 7565, "loc": { "start": { - "line": 231, - "column": 36 + "line": 245, + "column": 9 }, "end": { - "line": 231, - "column": 41 + "line": 245, + "column": 23 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7261, - "end": 7262, + "start": 7565, + "end": 7566, "loc": { "start": { - "line": 231, - "column": 41 + "line": 245, + "column": 23 }, "end": { - "line": 231, - "column": 42 + "line": 245, + "column": 24 } } }, @@ -70024,50 +71979,49 @@ "postfix": false, "binop": null }, - "value": "height", - "start": 7271, - "end": 7277, + "value": "ctx", + "start": 7566, + "end": 7569, "loc": { "start": { - "line": 232, - "column": 8 + "line": 245, + "column": 24 }, "end": { - "line": 232, - "column": 14 + "line": 245, + "column": 27 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7277, - "end": 7278, + "start": 7569, + "end": 7570, "loc": { "start": { - "line": 232, - "column": 14 + "line": 245, + "column": 27 }, "end": { - "line": 232, - "column": 15 + "line": 245, + "column": 28 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -70076,23 +72030,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 7279, - "end": 7286, + "start": 7571, + "end": 7572, "loc": { "start": { - "line": 232, - "column": 16 + "line": 245, + "column": 29 }, "end": { - "line": 232, - "column": 23 + "line": 245, + "column": 30 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -70103,16 +72057,17 @@ "binop": null, "updateContext": null }, - "start": 7286, - "end": 7287, + "value": "const", + "start": 7577, + "end": 7582, "loc": { "start": { - "line": 232, - "column": 23 + "line": 246, + "column": 4 }, "end": { - "line": 232, - "column": 24 + "line": 246, + "column": 9 } } }, @@ -70128,43 +72083,44 @@ "postfix": false, "binop": null }, - "value": "source", - "start": 7287, - "end": 7293, + "value": "gltfData", + "start": 7583, + "end": 7591, "loc": { "start": { - "line": 232, - "column": 24 + "line": 246, + "column": 10 }, "end": { - "line": 232, - "column": 30 + "line": 246, + "column": 18 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7293, - "end": 7294, + "value": "=", + "start": 7592, + "end": 7593, "loc": { "start": { - "line": 232, - "column": 30 + "line": 246, + "column": 19 }, "end": { - "line": 232, - "column": 31 + "line": 246, + "column": 20 } } }, @@ -70180,17 +72136,17 @@ "postfix": false, "binop": null }, - "value": "image", - "start": 7294, - "end": 7299, + "value": "ctx", + "start": 7594, + "end": 7597, "loc": { "start": { - "line": 232, - "column": 31 + "line": 246, + "column": 21 }, "end": { - "line": 232, - "column": 36 + "line": 246, + "column": 24 } } }, @@ -70207,16 +72163,16 @@ "binop": null, "updateContext": null }, - "start": 7299, - "end": 7300, + "start": 7597, + "end": 7598, "loc": { "start": { - "line": 232, - "column": 36 + "line": 246, + "column": 24 }, "end": { - "line": 232, - "column": 37 + "line": 246, + "column": 25 } } }, @@ -70232,23 +72188,23 @@ "postfix": false, "binop": null }, - "value": "height", - "start": 7300, - "end": 7306, + "value": "gltfData", + "start": 7598, + "end": 7606, "loc": { "start": { - "line": 232, - "column": 37 + "line": 246, + "column": 25 }, "end": { - "line": 232, - "column": 43 + "line": 246, + "column": 33 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -70259,49 +72215,24 @@ "binop": null, "updateContext": null }, - "start": 7306, - "end": 7307, + "start": 7606, + "end": 7607, "loc": { "start": { - "line": 232, - "column": 43 + "line": 246, + "column": 33 }, "end": { - "line": 232, - "column": 44 + "line": 246, + "column": 34 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "minFilter", - "start": 7316, - "end": 7325, - "loc": { - "start": { - "line": 233, - "column": 8 - }, - "end": { - "line": 233, - "column": 17 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -70311,16 +72242,17 @@ "binop": null, "updateContext": null }, - "start": 7325, - "end": 7326, + "value": "const", + "start": 7612, + "end": 7617, "loc": { "start": { - "line": 233, - "column": 17 + "line": 247, + "column": 4 }, "end": { - "line": 233, - "column": 18 + "line": 247, + "column": 9 } } }, @@ -70336,43 +72268,44 @@ "postfix": false, "binop": null }, - "value": "magFilter", - "start": 7335, - "end": 7344, + "value": "materials", + "start": 7618, + "end": 7627, "loc": { "start": { - "line": 234, - "column": 8 + "line": 247, + "column": 10 }, "end": { - "line": 234, - "column": 17 + "line": 247, + "column": 19 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7344, - "end": 7345, + "value": "=", + "start": 7628, + "end": 7629, "loc": { "start": { - "line": 234, - "column": 17 + "line": 247, + "column": 20 }, "end": { - "line": 234, - "column": 18 + "line": 247, + "column": 21 } } }, @@ -70388,24 +72321,24 @@ "postfix": false, "binop": null }, - "value": "wrapS", - "start": 7354, - "end": 7359, + "value": "gltfData", + "start": 7630, + "end": 7638, "loc": { "start": { - "line": 235, - "column": 8 + "line": 247, + "column": 22 }, "end": { - "line": 235, - "column": 13 + "line": 247, + "column": 30 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -70415,16 +72348,16 @@ "binop": null, "updateContext": null }, - "start": 7359, - "end": 7360, + "start": 7638, + "end": 7639, "loc": { "start": { - "line": 235, - "column": 13 + "line": 247, + "column": 30 }, "end": { - "line": 235, - "column": 14 + "line": 247, + "column": 31 } } }, @@ -70440,23 +72373,23 @@ "postfix": false, "binop": null }, - "value": "wrapT", - "start": 7369, - "end": 7374, + "value": "materials", + "start": 7639, + "end": 7648, "loc": { "start": { - "line": 236, - "column": 8 + "line": 247, + "column": 31 }, "end": { - "line": 236, - "column": 13 + "line": 247, + "column": 40 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -70467,68 +72400,69 @@ "binop": null, "updateContext": null }, - "start": 7374, - "end": 7375, + "start": 7648, + "end": 7649, "loc": { "start": { - "line": 236, - "column": 13 + "line": 247, + "column": 40 }, "end": { - "line": 236, - "column": 14 + "line": 247, + "column": 41 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "wrapR", - "start": 7384, - "end": 7389, + "value": "if", + "start": 7654, + "end": 7656, "loc": { "start": { - "line": 237, - "column": 8 + "line": 248, + "column": 4 }, "end": { - "line": 237, - "column": 13 + "line": 248, + "column": 6 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7389, - "end": 7390, + "start": 7657, + "end": 7658, "loc": { "start": { - "line": 237, - "column": 13 + "line": 248, + "column": 7 }, "end": { - "line": 237, - "column": 14 + "line": 248, + "column": 8 } } }, @@ -70544,104 +72478,102 @@ "postfix": false, "binop": null }, - "value": "flipY", - "start": 7399, - "end": 7404, + "value": "materials", + "start": 7658, + "end": 7667, "loc": { "start": { - "line": 238, + "line": 248, "column": 8 }, "end": { - "line": 238, - "column": 13 + "line": 248, + "column": 17 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7404, - "end": 7405, + "start": 7667, + "end": 7668, "loc": { "start": { - "line": 238, - "column": 13 + "line": 248, + "column": 17 }, "end": { - "line": 238, - "column": 14 + "line": 248, + "column": 18 } } }, { "type": { - "label": "prefix", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 7406, - "end": 7407, + "start": 7669, + "end": 7670, "loc": { "start": { - "line": 238, - "column": 15 + "line": 248, + "column": 19 }, "end": { - "line": 238, - "column": 16 + "line": 248, + "column": 20 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": "for", + "keyword": "for", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 7407, - "end": 7408, + "value": "for", + "start": 7679, + "end": 7682, "loc": { "start": { - "line": 238, - "column": 16 + "line": 249, + "column": 8 }, "end": { - "line": 238, - "column": 17 + "line": 249, + "column": 11 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -70650,23 +72582,23 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 7408, - "end": 7415, + "start": 7683, + "end": 7684, "loc": { "start": { - "line": 238, - "column": 17 + "line": 249, + "column": 12 }, "end": { - "line": 238, - "column": 24 + "line": 249, + "column": 13 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -70677,16 +72609,17 @@ "binop": null, "updateContext": null }, - "start": 7415, - "end": 7416, + "value": "let", + "start": 7684, + "end": 7687, "loc": { "start": { - "line": 238, - "column": 24 + "line": 249, + "column": 13 }, "end": { - "line": 238, - "column": 25 + "line": 249, + "column": 16 } } }, @@ -70702,92 +72635,105 @@ "postfix": false, "binop": null }, - "value": "flipY", - "start": 7416, - "end": 7421, + "value": "i", + "start": 7688, + "end": 7689, "loc": { "start": { - "line": 238, - "column": 25 + "line": 249, + "column": 17 }, "end": { - "line": 238, - "column": 30 + "line": 249, + "column": 18 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7421, - "end": 7422, + "value": "=", + "start": 7690, + "end": 7691, "loc": { "start": { - "line": 238, - "column": 30 + "line": 249, + "column": 19 }, "end": { - "line": 238, - "column": 31 + "line": 249, + "column": 20 } } }, { - "type": "CommentLine", - "value": " encoding: \"sRGB\"", - "start": 7431, - "end": 7454, + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": 0, + "start": 7692, + "end": 7693, "loc": { "start": { - "line": 239, - "column": 8 + "line": 249, + "column": 21 }, "end": { - "line": 239, - "column": 31 + "line": 249, + "column": 22 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7459, - "end": 7460, + "start": 7693, + "end": 7694, "loc": { "start": { - "line": 240, - "column": 4 + "line": 249, + "column": 22 }, "end": { - "line": 240, - "column": 5 + "line": 249, + "column": 23 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -70795,42 +72741,44 @@ "postfix": false, "binop": null }, - "start": 7460, - "end": 7461, + "value": "len", + "start": 7695, + "end": 7698, "loc": { "start": { - "line": 240, - "column": 5 + "line": 249, + "column": 24 }, "end": { - "line": 240, - "column": 6 + "line": 249, + "column": 27 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7461, - "end": 7462, + "value": "=", + "start": 7699, + "end": 7700, "loc": { "start": { - "line": 240, - "column": 6 + "line": 249, + "column": 28 }, "end": { - "line": 240, - "column": 7 + "line": 249, + "column": 29 } } }, @@ -70846,17 +72794,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 7467, - "end": 7474, + "value": "materials", + "start": 7701, + "end": 7710, "loc": { "start": { - "line": 241, - "column": 4 + "line": 249, + "column": 30 }, "end": { - "line": 241, - "column": 11 + "line": 249, + "column": 39 } } }, @@ -70873,16 +72821,16 @@ "binop": null, "updateContext": null }, - "start": 7474, - "end": 7475, + "start": 7710, + "end": 7711, "loc": { "start": { - "line": 241, - "column": 11 + "line": 249, + "column": 39 }, "end": { - "line": 241, - "column": 12 + "line": 249, + "column": 40 } } }, @@ -70898,44 +72846,43 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 7475, - "end": 7485, + "value": "length", + "start": 7711, + "end": 7717, "loc": { "start": { - "line": 241, - "column": 12 + "line": 249, + "column": 40 }, "end": { - "line": 241, - "column": 22 + "line": 249, + "column": 46 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7486, - "end": 7487, + "start": 7717, + "end": 7718, "loc": { "start": { - "line": 241, - "column": 23 + "line": 249, + "column": 46 }, "end": { - "line": 241, - "column": 24 + "line": 249, + "column": 47 } } }, @@ -70951,23 +72898,23 @@ "postfix": false, "binop": null }, - "value": "textureId", - "start": 7488, - "end": 7497, + "value": "i", + "start": 7719, + "end": 7720, "loc": { "start": { - "line": 241, - "column": 25 + "line": 249, + "column": 48 }, "end": { - "line": 241, - "column": 34 + "line": 249, + "column": 49 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -70975,27 +72922,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 7497, - "end": 7498, + "value": "<", + "start": 7721, + "end": 7722, "loc": { "start": { - "line": 241, - "column": 34 + "line": 249, + "column": 50 }, "end": { - "line": 241, - "column": 35 + "line": 249, + "column": 51 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -71003,43 +72951,43 @@ "postfix": false, "binop": null }, - "start": 7499, - "end": 7500, + "value": "len", + "start": 7723, + "end": 7726, "loc": { "start": { - "line": 242, - "column": 0 + "line": 249, + "column": 52 }, "end": { - "line": 242, - "column": 1 + "line": 249, + "column": 55 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 7502, - "end": 7510, + "start": 7726, + "end": 7727, "loc": { "start": { - "line": 244, - "column": 0 + "line": 249, + "column": 55 }, "end": { - "line": 244, - "column": 8 + "line": 249, + "column": 56 } } }, @@ -71055,68 +73003,43 @@ "postfix": false, "binop": null }, - "value": "parseMaterials", - "start": 7511, - "end": 7525, - "loc": { - "start": { - "line": 244, - "column": 9 - }, - "end": { - "line": 244, - "column": 23 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 7525, - "end": 7526, + "value": "i", + "start": 7728, + "end": 7729, "loc": { "start": { - "line": 244, - "column": 23 + "line": 249, + "column": 57 }, "end": { - "line": 244, - "column": 24 + "line": 249, + "column": 58 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "ctx", - "start": 7526, - "end": 7529, + "value": "++", + "start": 7729, + "end": 7731, "loc": { "start": { - "line": 244, - "column": 24 + "line": 249, + "column": 58 }, "end": { - "line": 244, - "column": 27 + "line": 249, + "column": 60 } } }, @@ -71132,16 +73055,16 @@ "postfix": false, "binop": null }, - "start": 7529, - "end": 7530, + "start": 7731, + "end": 7732, "loc": { "start": { - "line": 244, - "column": 27 + "line": 249, + "column": 60 }, "end": { - "line": 244, - "column": 28 + "line": 249, + "column": 61 } } }, @@ -71157,16 +73080,16 @@ "postfix": false, "binop": null }, - "start": 7531, - "end": 7532, + "start": 7733, + "end": 7734, "loc": { "start": { - "line": 244, - "column": 29 + "line": 249, + "column": 62 }, "end": { - "line": 244, - "column": 30 + "line": 249, + "column": 63 } } }, @@ -71185,16 +73108,16 @@ "updateContext": null }, "value": "const", - "start": 7537, - "end": 7542, + "start": 7747, + "end": 7752, "loc": { "start": { - "line": 245, - "column": 4 + "line": 250, + "column": 12 }, "end": { - "line": 245, - "column": 9 + "line": 250, + "column": 17 } } }, @@ -71210,17 +73133,17 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 7543, - "end": 7551, + "value": "material", + "start": 7753, + "end": 7761, "loc": { "start": { - "line": 245, - "column": 10 + "line": 250, + "column": 18 }, "end": { - "line": 245, - "column": 18 + "line": 250, + "column": 26 } } }, @@ -71238,16 +73161,16 @@ "updateContext": null }, "value": "=", - "start": 7552, - "end": 7553, + "start": 7762, + "end": 7763, "loc": { "start": { - "line": 245, - "column": 19 + "line": 250, + "column": 27 }, "end": { - "line": 245, - "column": 20 + "line": 250, + "column": 28 } } }, @@ -71263,25 +73186,25 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7554, - "end": 7557, + "value": "materials", + "start": 7764, + "end": 7773, "loc": { "start": { - "line": 245, - "column": 21 + "line": 250, + "column": 29 }, "end": { - "line": 245, - "column": 24 + "line": 250, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -71290,16 +73213,16 @@ "binop": null, "updateContext": null }, - "start": 7557, - "end": 7558, + "start": 7773, + "end": 7774, "loc": { "start": { - "line": 245, - "column": 24 + "line": 250, + "column": 38 }, "end": { - "line": 245, - "column": 25 + "line": 250, + "column": 39 } } }, @@ -71315,24 +73238,24 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 7558, - "end": 7566, + "value": "i", + "start": 7774, + "end": 7775, "loc": { "start": { - "line": 245, - "column": 25 + "line": 250, + "column": 39 }, "end": { - "line": 245, - "column": 33 + "line": 250, + "column": 40 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -71342,24 +73265,23 @@ "binop": null, "updateContext": null }, - "start": 7566, - "end": 7567, + "start": 7775, + "end": 7776, "loc": { "start": { - "line": 245, - "column": 33 + "line": 250, + "column": 40 }, "end": { - "line": 245, - "column": 34 + "line": 250, + "column": 41 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -71369,17 +73291,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 7572, - "end": 7577, + "start": 7776, + "end": 7777, "loc": { "start": { - "line": 246, - "column": 4 + "line": 250, + "column": 41 }, "end": { - "line": 246, - "column": 9 + "line": 250, + "column": 42 } } }, @@ -71395,43 +73316,42 @@ "postfix": false, "binop": null }, - "value": "materials", - "start": 7578, - "end": 7587, + "value": "material", + "start": 7790, + "end": 7798, "loc": { "start": { - "line": 246, - "column": 10 + "line": 251, + "column": 12 }, "end": { - "line": 246, - "column": 19 + "line": 251, + "column": 20 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7588, - "end": 7589, + "start": 7798, + "end": 7799, "loc": { "start": { - "line": 246, + "line": 251, "column": 20 }, "end": { - "line": 246, + "line": 251, "column": 21 } } @@ -71448,43 +73368,44 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 7590, - "end": 7598, + "value": "_textureSetId", + "start": 7799, + "end": 7812, "loc": { "start": { - "line": 246, - "column": 22 + "line": 251, + "column": 21 }, "end": { - "line": 246, - "column": 30 + "line": 251, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7598, - "end": 7599, + "value": "=", + "start": 7813, + "end": 7814, "loc": { "start": { - "line": 246, - "column": 30 + "line": 251, + "column": 35 }, "end": { - "line": 246, - "column": 31 + "line": 251, + "column": 36 } } }, @@ -71500,24 +73421,24 @@ "postfix": false, "binop": null }, - "value": "materials", - "start": 7599, - "end": 7608, + "value": "ctx", + "start": 7815, + "end": 7818, "loc": { "start": { - "line": 246, - "column": 31 + "line": 251, + "column": 37 }, "end": { - "line": 246, + "line": 251, "column": 40 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -71527,72 +73448,19 @@ "binop": null, "updateContext": null }, - "start": 7608, - "end": 7609, + "start": 7818, + "end": 7819, "loc": { "start": { - "line": 246, + "line": 251, "column": 40 }, "end": { - "line": 246, + "line": 251, "column": 41 } } }, - { - "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "if", - "start": 7614, - "end": 7616, - "loc": { - "start": { - "line": 247, - "column": 4 - }, - "end": { - "line": 247, - "column": 6 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 7617, - "end": 7618, - "loc": { - "start": { - "line": 247, - "column": 7 - }, - "end": { - "line": 247, - "column": 8 - } - } - }, { "type": { "label": "name", @@ -71605,49 +73473,50 @@ "postfix": false, "binop": null }, - "value": "materials", - "start": 7618, - "end": 7627, + "value": "includeTextures", + "start": 7819, + "end": 7834, "loc": { "start": { - "line": 247, - "column": 8 + "line": 251, + "column": 41 }, "end": { - "line": 247, - "column": 17 + "line": 251, + "column": 56 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "?", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7627, - "end": 7628, + "start": 7835, + "end": 7836, "loc": { "start": { - "line": 247, - "column": 17 + "line": 251, + "column": 57 }, "end": { - "line": 247, - "column": 18 + "line": 251, + "column": 58 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -71656,44 +73525,17 @@ "postfix": false, "binop": null }, - "start": 7629, - "end": 7630, - "loc": { - "start": { - "line": 247, - "column": 19 - }, - "end": { - "line": 247, - "column": 20 - } - } - }, - { - "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": true, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "for", - "start": 7639, - "end": 7642, + "value": "parseTextureSet", + "start": 7837, + "end": 7852, "loc": { "start": { - "line": 248, - "column": 8 + "line": 251, + "column": 59 }, "end": { - "line": 248, - "column": 11 + "line": 251, + "column": 74 } } }, @@ -71709,130 +73551,125 @@ "postfix": false, "binop": null }, - "start": 7643, - "end": 7644, + "start": 7852, + "end": 7853, "loc": { "start": { - "line": 248, - "column": 12 + "line": 251, + "column": 74 }, "end": { - "line": 248, - "column": 13 + "line": 251, + "column": 75 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 7644, - "end": 7647, + "value": "ctx", + "start": 7853, + "end": 7856, "loc": { "start": { - "line": 248, - "column": 13 + "line": 251, + "column": 75 }, "end": { - "line": 248, - "column": 16 + "line": 251, + "column": 78 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 7648, - "end": 7649, + "start": 7856, + "end": 7857, "loc": { "start": { - "line": 248, - "column": 17 + "line": 251, + "column": 78 }, "end": { - "line": 248, - "column": 18 + "line": 251, + "column": 79 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 7650, - "end": 7651, + "value": "material", + "start": 7858, + "end": 7866, "loc": { "start": { - "line": 248, - "column": 19 + "line": 251, + "column": 80 }, "end": { - "line": 248, - "column": 20 + "line": 251, + "column": 88 } } }, { "type": { - "label": "num", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 7652, - "end": 7653, + "start": 7866, + "end": 7867, "loc": { "start": { - "line": 248, - "column": 21 + "line": 251, + "column": 88 }, "end": { - "line": 248, - "column": 22 + "line": 251, + "column": 89 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -71843,22 +73680,23 @@ "binop": null, "updateContext": null }, - "start": 7653, - "end": 7654, + "start": 7868, + "end": 7869, "loc": { "start": { - "line": 248, - "column": 22 + "line": 251, + "column": 90 }, "end": { - "line": 248, - "column": 23 + "line": 251, + "column": 91 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -71866,46 +73704,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "len", - "start": 7655, - "end": 7658, + "value": "null", + "start": 7870, + "end": 7874, "loc": { "start": { - "line": 248, - "column": 24 + "line": 251, + "column": 92 }, "end": { - "line": 248, - "column": 27 + "line": 251, + "column": 96 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7659, - "end": 7660, + "start": 7874, + "end": 7875, "loc": { "start": { - "line": 248, - "column": 28 + "line": 251, + "column": 96 }, "end": { - "line": 248, - "column": 29 + "line": 251, + "column": 97 } } }, @@ -71921,17 +73759,17 @@ "postfix": false, "binop": null }, - "value": "materials", - "start": 7661, - "end": 7670, + "value": "material", + "start": 7888, + "end": 7896, "loc": { "start": { - "line": 248, - "column": 30 + "line": 252, + "column": 12 }, "end": { - "line": 248, - "column": 39 + "line": 252, + "column": 20 } } }, @@ -71948,16 +73786,16 @@ "binop": null, "updateContext": null }, - "start": 7670, - "end": 7671, + "start": 7896, + "end": 7897, "loc": { "start": { - "line": 248, - "column": 39 + "line": 252, + "column": 20 }, "end": { - "line": 248, - "column": 40 + "line": 252, + "column": 21 } } }, @@ -71973,43 +73811,44 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 7671, - "end": 7677, + "value": "_attributes", + "start": 7897, + "end": 7908, "loc": { "start": { - "line": 248, - "column": 40 + "line": 252, + "column": 21 }, "end": { - "line": 248, - "column": 46 + "line": 252, + "column": 32 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7677, - "end": 7678, + "value": "=", + "start": 7909, + "end": 7910, "loc": { "start": { - "line": 248, - "column": 46 + "line": 252, + "column": 33 }, "end": { - "line": 248, - "column": 47 + "line": 252, + "column": 34 } } }, @@ -72025,44 +73864,42 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 7679, - "end": 7680, + "value": "parseMaterialAttributes", + "start": 7911, + "end": 7934, "loc": { "start": { - "line": 248, - "column": 48 + "line": 252, + "column": 35 }, "end": { - "line": 248, - "column": 49 + "line": 252, + "column": 58 } } }, { "type": { - "label": "", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, - "updateContext": null + "binop": null }, - "value": "<", - "start": 7681, - "end": 7682, + "start": 7934, + "end": 7935, "loc": { "start": { - "line": 248, - "column": 50 + "line": 252, + "column": 58 }, "end": { - "line": 248, - "column": 51 + "line": 252, + "column": 59 } } }, @@ -72078,23 +73915,23 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 7683, - "end": 7686, + "value": "ctx", + "start": 7935, + "end": 7938, "loc": { "start": { - "line": 248, - "column": 52 + "line": 252, + "column": 59 }, "end": { - "line": 248, - "column": 55 + "line": 252, + "column": 62 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -72105,16 +73942,16 @@ "binop": null, "updateContext": null }, - "start": 7686, - "end": 7687, + "start": 7938, + "end": 7939, "loc": { "start": { - "line": 248, - "column": 55 + "line": 252, + "column": 62 }, "end": { - "line": 248, - "column": 56 + "line": 252, + "column": 63 } } }, @@ -72130,76 +73967,76 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 7688, - "end": 7689, + "value": "material", + "start": 7940, + "end": 7948, "loc": { "start": { - "line": 248, - "column": 57 + "line": 252, + "column": 64 }, "end": { - "line": 248, - "column": 58 + "line": 252, + "column": 72 } } }, { "type": { - "label": "++/--", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 7689, - "end": 7691, + "start": 7948, + "end": 7949, "loc": { "start": { - "line": 248, - "column": 58 + "line": 252, + "column": 72 }, "end": { - "line": 248, - "column": 60 + "line": 252, + "column": 73 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7691, - "end": 7692, + "start": 7949, + "end": 7950, "loc": { "start": { - "line": 248, - "column": 60 + "line": 252, + "column": 73 }, "end": { - "line": 248, - "column": 61 + "line": 252, + "column": 74 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -72207,23 +74044,22 @@ "postfix": false, "binop": null }, - "start": 7693, - "end": 7694, + "start": 7959, + "end": 7960, "loc": { "start": { - "line": 248, - "column": 62 + "line": 253, + "column": 8 }, "end": { - "line": 248, - "column": 63 + "line": 253, + "column": 9 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -72231,28 +74067,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 7707, - "end": 7712, + "start": 7965, + "end": 7966, "loc": { "start": { - "line": 249, - "column": 12 + "line": 254, + "column": 4 }, "end": { - "line": 249, - "column": 17 + "line": 254, + "column": 5 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -72260,44 +74094,43 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 7713, - "end": 7721, + "start": 7967, + "end": 7968, "loc": { "start": { - "line": 249, - "column": 18 + "line": 255, + "column": 0 }, "end": { - "line": 249, - "column": 26 + "line": 255, + "column": 1 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 7722, - "end": 7723, + "value": "function", + "start": 7970, + "end": 7978, "loc": { "start": { - "line": 249, - "column": 27 + "line": 257, + "column": 0 }, "end": { - "line": 249, - "column": 28 + "line": 257, + "column": 8 } } }, @@ -72313,23 +74146,23 @@ "postfix": false, "binop": null }, - "value": "materials", - "start": 7724, - "end": 7733, + "value": "parseTextureSet", + "start": 7979, + "end": 7994, "loc": { "start": { - "line": 249, - "column": 29 + "line": 257, + "column": 9 }, "end": { - "line": 249, - "column": 38 + "line": 257, + "column": 24 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -72337,19 +74170,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7733, - "end": 7734, + "start": 7994, + "end": 7995, "loc": { "start": { - "line": 249, - "column": 38 + "line": 257, + "column": 24 }, "end": { - "line": 249, - "column": 39 + "line": 257, + "column": 25 } } }, @@ -72365,24 +74197,24 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 7734, - "end": 7735, + "value": "ctx", + "start": 7995, + "end": 7998, "loc": { "start": { - "line": 249, - "column": 39 + "line": 257, + "column": 25 }, "end": { - "line": 249, - "column": 40 + "line": 257, + "column": 28 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -72392,49 +74224,74 @@ "binop": null, "updateContext": null }, - "start": 7735, - "end": 7736, + "start": 7998, + "end": 7999, "loc": { "start": { - "line": 249, - "column": 40 + "line": 257, + "column": 28 }, "end": { - "line": 249, - "column": 41 + "line": 257, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7736, - "end": 7737, + "value": "material", + "start": 8000, + "end": 8008, "loc": { "start": { - "line": 249, - "column": 41 + "line": 257, + "column": 30 }, "end": { - "line": 249, - "column": 42 + "line": 257, + "column": 38 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8008, + "end": 8009, + "loc": { + "start": { + "line": 257, + "column": 38 + }, + "end": { + "line": 257, + "column": 39 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -72443,23 +74300,23 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 7750, - "end": 7758, + "start": 8010, + "end": 8011, "loc": { "start": { - "line": 250, - "column": 12 + "line": 257, + "column": 40 }, "end": { - "line": 250, - "column": 20 + "line": 257, + "column": 41 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -72470,16 +74327,17 @@ "binop": null, "updateContext": null }, - "start": 7758, - "end": 7759, + "value": "const", + "start": 8016, + "end": 8021, "loc": { "start": { - "line": 250, - "column": 20 + "line": 258, + "column": 4 }, "end": { - "line": 250, - "column": 21 + "line": 258, + "column": 9 } } }, @@ -72495,17 +74353,17 @@ "postfix": false, "binop": null }, - "value": "_textureSetId", - "start": 7759, - "end": 7772, + "value": "textureSetCfg", + "start": 8022, + "end": 8035, "loc": { "start": { - "line": 250, - "column": 21 + "line": 258, + "column": 10 }, "end": { - "line": 250, - "column": 34 + "line": 258, + "column": 23 } } }, @@ -72523,23 +74381,23 @@ "updateContext": null }, "value": "=", - "start": 7773, - "end": 7774, + "start": 8036, + "end": 8037, "loc": { "start": { - "line": 250, - "column": 35 + "line": 258, + "column": 24 }, "end": { - "line": 250, - "column": 36 + "line": 258, + "column": 25 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -72548,24 +74406,48 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7775, - "end": 7778, + "start": 8038, + "end": 8039, "loc": { "start": { - "line": 250, - "column": 37 + "line": 258, + "column": 26 + }, + "end": { + "line": 258, + "column": 27 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 8039, + "end": 8040, + "loc": { + "start": { + "line": 258, + "column": 27 }, "end": { - "line": 250, - "column": 40 + "line": 258, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -72575,68 +74457,69 @@ "binop": null, "updateContext": null }, - "start": 7778, - "end": 7779, + "start": 8040, + "end": 8041, "loc": { "start": { - "line": 250, - "column": 40 + "line": 258, + "column": 28 }, "end": { - "line": 250, - "column": 41 + "line": 258, + "column": 29 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "includeTextures", - "start": 7779, - "end": 7794, + "value": "if", + "start": 8046, + "end": 8048, "loc": { "start": { - "line": 250, - "column": 41 + "line": 259, + "column": 4 }, "end": { - "line": 250, - "column": 56 + "line": 259, + "column": 6 } } }, { "type": { - "label": "?", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7795, - "end": 7796, + "start": 8049, + "end": 8050, "loc": { "start": { - "line": 250, - "column": 57 + "line": 259, + "column": 7 }, "end": { - "line": 250, - "column": 58 + "line": 259, + "column": 8 } } }, @@ -72652,42 +74535,43 @@ "postfix": false, "binop": null }, - "value": "parseTextureSet", - "start": 7797, - "end": 7812, + "value": "material", + "start": 8050, + "end": 8058, "loc": { "start": { - "line": 250, - "column": 59 + "line": 259, + "column": 8 }, "end": { - "line": 250, - "column": 74 + "line": 259, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7812, - "end": 7813, + "start": 8058, + "end": 8059, "loc": { "start": { - "line": 250, - "column": 74 + "line": 259, + "column": 16 }, "end": { - "line": 250, - "column": 75 + "line": 259, + "column": 17 } } }, @@ -72703,50 +74587,49 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7813, - "end": 7816, + "value": "normalTexture", + "start": 8059, + "end": 8072, "loc": { "start": { - "line": 250, - "column": 75 + "line": 259, + "column": 17 }, "end": { - "line": 250, - "column": 78 + "line": 259, + "column": 30 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7816, - "end": 7817, + "start": 8072, + "end": 8073, "loc": { "start": { - "line": 250, - "column": 78 + "line": 259, + "column": 30 }, "end": { - "line": 250, - "column": 79 + "line": 259, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -72755,25 +74638,24 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 7818, - "end": 7826, + "start": 8074, + "end": 8075, "loc": { "start": { - "line": 250, - "column": 80 + "line": 259, + "column": 32 }, "end": { - "line": 250, - "column": 88 + "line": 259, + "column": 33 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -72781,23 +74663,24 @@ "postfix": false, "binop": null }, - "start": 7826, - "end": 7827, + "value": "textureSetCfg", + "start": 8084, + "end": 8097, "loc": { "start": { - "line": 250, - "column": 88 + "line": 260, + "column": 8 }, "end": { - "line": 250, - "column": 89 + "line": 260, + "column": 21 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -72807,23 +74690,22 @@ "binop": null, "updateContext": null }, - "start": 7828, - "end": 7829, + "start": 8097, + "end": 8098, "loc": { "start": { - "line": 250, - "column": 90 + "line": 260, + "column": 21 }, "end": { - "line": 250, - "column": 91 + "line": 260, + "column": 22 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -72831,46 +74713,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 7830, - "end": 7834, + "value": "normalTextureId", + "start": 8098, + "end": 8113, "loc": { "start": { - "line": 250, - "column": 92 + "line": 260, + "column": 22 }, "end": { - "line": 250, - "column": 96 + "line": 260, + "column": 37 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7834, - "end": 7835, + "value": "=", + "start": 8114, + "end": 8115, "loc": { "start": { - "line": 250, - "column": 96 + "line": 260, + "column": 38 }, "end": { - "line": 250, - "column": 97 + "line": 260, + "column": 39 } } }, @@ -72887,16 +74769,16 @@ "binop": null }, "value": "material", - "start": 7848, - "end": 7856, + "start": 8116, + "end": 8124, "loc": { "start": { - "line": 251, - "column": 12 + "line": 260, + "column": 40 }, "end": { - "line": 251, - "column": 20 + "line": 260, + "column": 48 } } }, @@ -72913,16 +74795,16 @@ "binop": null, "updateContext": null }, - "start": 7856, - "end": 7857, + "start": 8124, + "end": 8125, "loc": { "start": { - "line": 251, - "column": 20 + "line": 260, + "column": 48 }, "end": { - "line": 251, - "column": 21 + "line": 260, + "column": 49 } } }, @@ -72938,44 +74820,43 @@ "postfix": false, "binop": null }, - "value": "_attributes", - "start": 7857, - "end": 7868, + "value": "normalTexture", + "start": 8125, + "end": 8138, "loc": { "start": { - "line": 251, - "column": 21 + "line": 260, + "column": 49 }, "end": { - "line": 251, - "column": 32 + "line": 260, + "column": 62 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7869, - "end": 7870, + "start": 8138, + "end": 8139, "loc": { "start": { - "line": 251, - "column": 33 + "line": 260, + "column": 62 }, "end": { - "line": 251, - "column": 34 + "line": 260, + "column": 63 } } }, @@ -72991,42 +74872,43 @@ "postfix": false, "binop": null }, - "value": "parseMaterialAttributes", - "start": 7871, - "end": 7894, + "value": "texture", + "start": 8139, + "end": 8146, "loc": { "start": { - "line": 251, - "column": 35 + "line": 260, + "column": 63 }, "end": { - "line": 251, - "column": 58 + "line": 260, + "column": 70 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7894, - "end": 7895, + "start": 8146, + "end": 8147, "loc": { "start": { - "line": 251, - "column": 58 + "line": 260, + "column": 70 }, "end": { - "line": 251, - "column": 59 + "line": 260, + "column": 71 } } }, @@ -73042,23 +74924,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7895, - "end": 7898, + "value": "_textureId", + "start": 8147, + "end": 8157, "loc": { "start": { - "line": 251, - "column": 59 + "line": 260, + "column": 71 }, "end": { - "line": 251, - "column": 62 + "line": 260, + "column": 81 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -73069,24 +74951,24 @@ "binop": null, "updateContext": null }, - "start": 7898, - "end": 7899, + "start": 8157, + "end": 8158, "loc": { "start": { - "line": 251, - "column": 62 + "line": 260, + "column": 81 }, "end": { - "line": 251, - "column": 63 + "line": 260, + "column": 82 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -73094,23 +74976,23 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 7900, - "end": 7908, + "start": 8163, + "end": 8164, "loc": { "start": { - "line": 251, - "column": 64 + "line": 261, + "column": 4 }, "end": { - "line": 251, - "column": 72 + "line": 261, + "column": 5 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -73118,52 +75000,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7908, - "end": 7909, + "value": "if", + "start": 8169, + "end": 8171, "loc": { "start": { - "line": 251, - "column": 72 + "line": 262, + "column": 4 }, "end": { - "line": 251, - "column": 73 + "line": 262, + "column": 6 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 7909, - "end": 7910, + "start": 8172, + "end": 8173, "loc": { "start": { - "line": 251, - "column": 73 + "line": 262, + "column": 7 }, "end": { - "line": 251, - "column": 74 + "line": 262, + "column": 8 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -73171,22 +75054,23 @@ "postfix": false, "binop": null }, - "start": 7919, - "end": 7920, + "value": "material", + "start": 8173, + "end": 8181, "loc": { "start": { - "line": 252, + "line": 262, "column": 8 }, "end": { - "line": 252, - "column": 9 + "line": 262, + "column": 16 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -73194,24 +75078,51 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 8181, + "end": 8182, + "loc": { + "start": { + "line": 262, + "column": 16 + }, + "end": { + "line": 262, + "column": 17 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 7925, - "end": 7926, + "value": "occlusionTexture", + "start": 8182, + "end": 8198, "loc": { "start": { - "line": 253, - "column": 4 + "line": 262, + "column": 17 }, "end": { - "line": 253, - "column": 5 + "line": 262, + "column": 33 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -73221,24 +75132,23 @@ "postfix": false, "binop": null }, - "start": 7927, - "end": 7928, + "start": 8198, + "end": 8199, "loc": { "start": { - "line": 254, - "column": 0 + "line": 262, + "column": 33 }, "end": { - "line": 254, - "column": 1 + "line": 262, + "column": 34 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -73247,17 +75157,16 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 7930, - "end": 7938, + "start": 8200, + "end": 8201, "loc": { "start": { - "line": 256, - "column": 0 + "line": 262, + "column": 35 }, "end": { - "line": 256, - "column": 8 + "line": 262, + "column": 36 } } }, @@ -73273,42 +75182,43 @@ "postfix": false, "binop": null }, - "value": "parseTextureSet", - "start": 7939, - "end": 7954, + "value": "textureSetCfg", + "start": 8210, + "end": 8223, "loc": { "start": { - "line": 256, - "column": 9 + "line": 263, + "column": 8 }, "end": { - "line": 256, - "column": 24 + "line": 263, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7954, - "end": 7955, + "start": 8223, + "end": 8224, "loc": { "start": { - "line": 256, - "column": 24 + "line": 263, + "column": 21 }, "end": { - "line": 256, - "column": 25 + "line": 263, + "column": 22 } } }, @@ -73324,43 +75234,44 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 7955, - "end": 7958, + "value": "occlusionTextureId", + "start": 8224, + "end": 8242, "loc": { "start": { - "line": 256, - "column": 25 + "line": 263, + "column": 22 }, "end": { - "line": 256, - "column": 28 + "line": 263, + "column": 40 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 7958, - "end": 7959, + "value": "=", + "start": 8243, + "end": 8244, "loc": { "start": { - "line": 256, - "column": 28 + "line": 263, + "column": 41 }, "end": { - "line": 256, - "column": 29 + "line": 263, + "column": 42 } } }, @@ -73377,22 +75288,22 @@ "binop": null }, "value": "material", - "start": 7960, - "end": 7968, + "start": 8245, + "end": 8253, "loc": { "start": { - "line": 256, - "column": 30 + "line": 263, + "column": 43 }, "end": { - "line": 256, - "column": 38 + "line": 263, + "column": 51 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -73400,25 +75311,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7968, - "end": 7969, + "start": 8253, + "end": 8254, "loc": { "start": { - "line": 256, - "column": 38 + "line": 263, + "column": 51 }, "end": { - "line": 256, - "column": 39 + "line": 263, + "column": 52 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -73427,23 +75339,23 @@ "postfix": false, "binop": null }, - "start": 7970, - "end": 7971, + "value": "occlusionTexture", + "start": 8254, + "end": 8270, "loc": { "start": { - "line": 256, - "column": 40 + "line": 263, + "column": 52 }, "end": { - "line": 256, - "column": 41 + "line": 263, + "column": 68 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -73454,17 +75366,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 7976, - "end": 7981, + "start": 8270, + "end": 8271, "loc": { "start": { - "line": 257, - "column": 4 + "line": 263, + "column": 68 }, "end": { - "line": 257, - "column": 9 + "line": 263, + "column": 69 } } }, @@ -73480,51 +75391,50 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 7982, - "end": 7995, + "value": "texture", + "start": 8271, + "end": 8278, "loc": { "start": { - "line": 257, - "column": 10 + "line": 263, + "column": 69 }, "end": { - "line": 257, - "column": 23 + "line": 263, + "column": 76 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 7996, - "end": 7997, + "start": 8278, + "end": 8279, "loc": { "start": { - "line": 257, - "column": 24 + "line": 263, + "column": 76 }, "end": { - "line": 257, - "column": 25 + "line": 263, + "column": 77 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -73533,67 +75443,68 @@ "postfix": false, "binop": null }, - "start": 7998, - "end": 7999, + "value": "_textureId", + "start": 8279, + "end": 8289, "loc": { "start": { - "line": 257, - "column": 26 + "line": 263, + "column": 77 }, "end": { - "line": 257, - "column": 27 + "line": 263, + "column": 87 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 7999, - "end": 8000, + "start": 8289, + "end": 8290, "loc": { "start": { - "line": 257, - "column": 27 + "line": 263, + "column": 87 }, "end": { - "line": 257, - "column": 28 + "line": 263, + "column": 88 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8000, - "end": 8001, + "start": 8295, + "end": 8296, "loc": { "start": { - "line": 257, - "column": 28 + "line": 264, + "column": 4 }, "end": { - "line": 257, - "column": 29 + "line": 264, + "column": 5 } } }, @@ -73612,15 +75523,15 @@ "updateContext": null }, "value": "if", - "start": 8006, - "end": 8008, + "start": 8301, + "end": 8303, "loc": { "start": { - "line": 258, + "line": 265, "column": 4 }, "end": { - "line": 258, + "line": 265, "column": 6 } } @@ -73637,15 +75548,15 @@ "postfix": false, "binop": null }, - "start": 8009, - "end": 8010, + "start": 8304, + "end": 8305, "loc": { "start": { - "line": 258, + "line": 265, "column": 7 }, "end": { - "line": 258, + "line": 265, "column": 8 } } @@ -73663,15 +75574,15 @@ "binop": null }, "value": "material", - "start": 8010, - "end": 8018, + "start": 8305, + "end": 8313, "loc": { "start": { - "line": 258, + "line": 265, "column": 8 }, "end": { - "line": 258, + "line": 265, "column": 16 } } @@ -73689,15 +75600,15 @@ "binop": null, "updateContext": null }, - "start": 8018, - "end": 8019, + "start": 8313, + "end": 8314, "loc": { "start": { - "line": 258, + "line": 265, "column": 16 }, "end": { - "line": 258, + "line": 265, "column": 17 } } @@ -73714,17 +75625,17 @@ "postfix": false, "binop": null }, - "value": "normalTexture", - "start": 8019, - "end": 8032, + "value": "emissiveTexture", + "start": 8314, + "end": 8329, "loc": { "start": { - "line": 258, + "line": 265, "column": 17 }, "end": { - "line": 258, - "column": 30 + "line": 265, + "column": 32 } } }, @@ -73740,16 +75651,16 @@ "postfix": false, "binop": null }, - "start": 8032, - "end": 8033, + "start": 8329, + "end": 8330, "loc": { "start": { - "line": 258, - "column": 30 + "line": 265, + "column": 32 }, "end": { - "line": 258, - "column": 31 + "line": 265, + "column": 33 } } }, @@ -73765,16 +75676,16 @@ "postfix": false, "binop": null }, - "start": 8034, - "end": 8035, + "start": 8331, + "end": 8332, "loc": { "start": { - "line": 258, - "column": 32 + "line": 265, + "column": 34 }, "end": { - "line": 258, - "column": 33 + "line": 265, + "column": 35 } } }, @@ -73791,15 +75702,15 @@ "binop": null }, "value": "textureSetCfg", - "start": 8044, - "end": 8057, + "start": 8341, + "end": 8354, "loc": { "start": { - "line": 259, + "line": 266, "column": 8 }, "end": { - "line": 259, + "line": 266, "column": 21 } } @@ -73817,15 +75728,15 @@ "binop": null, "updateContext": null }, - "start": 8057, - "end": 8058, + "start": 8354, + "end": 8355, "loc": { "start": { - "line": 259, + "line": 266, "column": 21 }, "end": { - "line": 259, + "line": 266, "column": 22 } } @@ -73842,17 +75753,17 @@ "postfix": false, "binop": null }, - "value": "normalTextureId", - "start": 8058, - "end": 8073, + "value": "emissiveTextureId", + "start": 8355, + "end": 8372, "loc": { "start": { - "line": 259, + "line": 266, "column": 22 }, "end": { - "line": 259, - "column": 37 + "line": 266, + "column": 39 } } }, @@ -73870,16 +75781,16 @@ "updateContext": null }, "value": "=", - "start": 8074, - "end": 8075, + "start": 8373, + "end": 8374, "loc": { "start": { - "line": 259, - "column": 38 + "line": 266, + "column": 40 }, "end": { - "line": 259, - "column": 39 + "line": 266, + "column": 41 } } }, @@ -73896,16 +75807,16 @@ "binop": null }, "value": "material", - "start": 8076, - "end": 8084, + "start": 8375, + "end": 8383, "loc": { "start": { - "line": 259, - "column": 40 + "line": 266, + "column": 42 }, "end": { - "line": 259, - "column": 48 + "line": 266, + "column": 50 } } }, @@ -73922,16 +75833,16 @@ "binop": null, "updateContext": null }, - "start": 8084, - "end": 8085, + "start": 8383, + "end": 8384, "loc": { "start": { - "line": 259, - "column": 48 + "line": 266, + "column": 50 }, "end": { - "line": 259, - "column": 49 + "line": 266, + "column": 51 } } }, @@ -73947,17 +75858,17 @@ "postfix": false, "binop": null }, - "value": "normalTexture", - "start": 8085, - "end": 8098, + "value": "emissiveTexture", + "start": 8384, + "end": 8399, "loc": { "start": { - "line": 259, - "column": 49 + "line": 266, + "column": 51 }, "end": { - "line": 259, - "column": 62 + "line": 266, + "column": 66 } } }, @@ -73974,16 +75885,16 @@ "binop": null, "updateContext": null }, - "start": 8098, - "end": 8099, + "start": 8399, + "end": 8400, "loc": { "start": { - "line": 259, - "column": 62 + "line": 266, + "column": 66 }, "end": { - "line": 259, - "column": 63 + "line": 266, + "column": 67 } } }, @@ -74000,16 +75911,16 @@ "binop": null }, "value": "texture", - "start": 8099, - "end": 8106, + "start": 8400, + "end": 8407, "loc": { "start": { - "line": 259, - "column": 63 + "line": 266, + "column": 67 }, "end": { - "line": 259, - "column": 70 + "line": 266, + "column": 74 } } }, @@ -74026,16 +75937,16 @@ "binop": null, "updateContext": null }, - "start": 8106, - "end": 8107, + "start": 8407, + "end": 8408, "loc": { "start": { - "line": 259, - "column": 70 + "line": 266, + "column": 74 }, "end": { - "line": 259, - "column": 71 + "line": 266, + "column": 75 } } }, @@ -74052,16 +75963,16 @@ "binop": null }, "value": "_textureId", - "start": 8107, - "end": 8117, + "start": 8408, + "end": 8418, "loc": { "start": { - "line": 259, - "column": 71 + "line": 266, + "column": 75 }, "end": { - "line": 259, - "column": 81 + "line": 266, + "column": 85 } } }, @@ -74078,16 +75989,16 @@ "binop": null, "updateContext": null }, - "start": 8117, - "end": 8118, + "start": 8418, + "end": 8419, "loc": { "start": { - "line": 259, - "column": 81 + "line": 266, + "column": 85 }, "end": { - "line": 259, - "column": 82 + "line": 266, + "column": 86 } } }, @@ -74103,23 +76014,23 @@ "postfix": false, "binop": null }, - "start": 8123, - "end": 8124, + "start": 8424, + "end": 8425, "loc": { "start": { - "line": 260, + "line": 267, "column": 4 }, "end": { - "line": 260, + "line": 267, "column": 5 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -74130,42 +76041,17 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 8129, - "end": 8131, + "value": "const", + "start": 8430, + "end": 8435, "loc": { "start": { - "line": 261, + "line": 268, "column": 4 }, "end": { - "line": 261, - "column": 6 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 8132, - "end": 8133, - "loc": { - "start": { - "line": 261, - "column": 7 - }, - "end": { - "line": 261, - "column": 8 + "line": 268, + "column": 9 } } }, @@ -74181,119 +76067,44 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8133, - "end": 8141, + "value": "metallicPBR", + "start": 8436, + "end": 8447, "loc": { "start": { - "line": 261, - "column": 8 + "line": 268, + "column": 10 }, "end": { - "line": 261, - "column": 16 + "line": 268, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 8141, - "end": 8142, - "loc": { - "start": { - "line": 261, - "column": 16 - }, - "end": { - "line": 261, - "column": 17 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "occlusionTexture", - "start": 8142, - "end": 8158, - "loc": { - "start": { - "line": 261, - "column": 17 - }, - "end": { - "line": 261, - "column": 33 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 8158, - "end": 8159, - "loc": { - "start": { - "line": 261, - "column": 33 - }, - "end": { - "line": 261, - "column": 34 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 8160, - "end": 8161, + "value": "=", + "start": 8448, + "end": 8449, "loc": { "start": { - "line": 261, - "column": 35 + "line": 268, + "column": 22 }, "end": { - "line": 261, - "column": 36 + "line": 268, + "column": 23 } } }, @@ -74309,17 +76120,17 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 8170, - "end": 8183, + "value": "material", + "start": 8450, + "end": 8458, "loc": { "start": { - "line": 262, - "column": 8 + "line": 268, + "column": 24 }, "end": { - "line": 262, - "column": 21 + "line": 268, + "column": 32 } } }, @@ -74336,16 +76147,16 @@ "binop": null, "updateContext": null }, - "start": 8183, - "end": 8184, + "start": 8458, + "end": 8459, "loc": { "start": { - "line": 262, - "column": 21 + "line": 268, + "column": 32 }, "end": { - "line": 262, - "column": 22 + "line": 268, + "column": 33 } } }, @@ -74361,76 +76172,50 @@ "postfix": false, "binop": null }, - "value": "occlusionTextureId", - "start": 8184, - "end": 8202, + "value": "pbrMetallicRoughness", + "start": 8459, + "end": 8479, "loc": { "start": { - "line": 262, - "column": 22 + "line": 268, + "column": 33 }, "end": { - "line": 262, - "column": 40 + "line": 268, + "column": 53 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 8203, - "end": 8204, - "loc": { - "start": { - "line": 262, - "column": 41 - }, - "end": { - "line": 262, - "column": 42 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "material", - "start": 8205, - "end": 8213, + "start": 8479, + "end": 8480, "loc": { "start": { - "line": 262, - "column": 43 + "line": 268, + "column": 53 }, "end": { - "line": 262, - "column": 51 + "line": 268, + "column": 54 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -74441,23 +76226,24 @@ "binop": null, "updateContext": null }, - "start": 8213, - "end": 8214, + "value": "if", + "start": 8485, + "end": 8487, "loc": { "start": { - "line": 262, - "column": 51 + "line": 269, + "column": 4 }, "end": { - "line": 262, - "column": 52 + "line": 269, + "column": 6 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -74466,43 +76252,16 @@ "postfix": false, "binop": null }, - "value": "occlusionTexture", - "start": 8214, - "end": 8230, - "loc": { - "start": { - "line": 262, - "column": 52 - }, - "end": { - "line": 262, - "column": 68 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 8230, - "end": 8231, + "start": 8488, + "end": 8489, "loc": { "start": { - "line": 262, - "column": 68 + "line": 269, + "column": 7 }, "end": { - "line": 262, - "column": 69 + "line": 269, + "column": 8 } } }, @@ -74518,17 +76277,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 8231, - "end": 8238, + "value": "material", + "start": 8489, + "end": 8497, "loc": { "start": { - "line": 262, - "column": 69 + "line": 269, + "column": 8 }, "end": { - "line": 262, - "column": 76 + "line": 269, + "column": 16 } } }, @@ -74545,16 +76304,16 @@ "binop": null, "updateContext": null }, - "start": 8238, - "end": 8239, + "start": 8497, + "end": 8498, "loc": { "start": { - "line": 262, - "column": 76 + "line": 269, + "column": 16 }, "end": { - "line": 262, - "column": 77 + "line": 269, + "column": 17 } } }, @@ -74570,49 +76329,23 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 8239, - "end": 8249, - "loc": { - "start": { - "line": 262, - "column": 77 - }, - "end": { - "line": 262, - "column": 87 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 8249, - "end": 8250, + "value": "pbrMetallicRoughness", + "start": 8498, + "end": 8518, "loc": { "start": { - "line": 262, - "column": 87 + "line": 269, + "column": 17 }, "end": { - "line": 262, - "column": 88 + "line": 269, + "column": 37 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -74622,69 +76355,69 @@ "postfix": false, "binop": null }, - "start": 8255, - "end": 8256, + "start": 8518, + "end": 8519, "loc": { "start": { - "line": 263, - "column": 4 + "line": 269, + "column": 37 }, "end": { - "line": 263, - "column": 5 + "line": 269, + "column": 38 } } - }, - { - "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 8261, - "end": 8263, + "start": 8520, + "end": 8521, "loc": { "start": { - "line": 264, - "column": 4 + "line": 269, + "column": 39 }, "end": { - "line": 264, - "column": 6 + "line": 269, + "column": 40 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8264, - "end": 8265, + "value": "const", + "start": 8530, + "end": 8535, "loc": { "start": { - "line": 264, - "column": 7 + "line": 270, + "column": 8 }, "end": { - "line": 264, - "column": 8 + "line": 270, + "column": 13 } } }, @@ -74700,43 +76433,44 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8265, - "end": 8273, + "value": "pbrMetallicRoughness", + "start": 8536, + "end": 8556, "loc": { "start": { - "line": 264, - "column": 8 + "line": 270, + "column": 14 }, "end": { - "line": 264, - "column": 16 + "line": 270, + "column": 34 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 8273, - "end": 8274, + "value": "=", + "start": 8557, + "end": 8558, "loc": { "start": { - "line": 264, - "column": 16 + "line": 270, + "column": 35 }, "end": { - "line": 264, - "column": 17 + "line": 270, + "column": 36 } } }, @@ -74752,23 +76486,23 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 8274, - "end": 8289, + "value": "material", + "start": 8559, + "end": 8567, "loc": { "start": { - "line": 264, - "column": 17 + "line": 270, + "column": 37 }, "end": { - "line": 264, - "column": 32 + "line": 270, + "column": 45 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -74776,25 +76510,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8289, - "end": 8290, + "start": 8567, + "end": 8568, "loc": { "start": { - "line": 264, - "column": 32 + "line": 270, + "column": 45 }, "end": { - "line": 264, - "column": 33 + "line": 270, + "column": 46 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -74803,48 +76538,50 @@ "postfix": false, "binop": null }, - "start": 8291, - "end": 8292, + "value": "pbrMetallicRoughness", + "start": 8568, + "end": 8588, "loc": { "start": { - "line": 264, - "column": 34 + "line": 270, + "column": 46 }, "end": { - "line": 264, - "column": 35 + "line": 270, + "column": 66 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetCfg", - "start": 8301, - "end": 8314, + "start": 8588, + "end": 8589, "loc": { "start": { - "line": 265, - "column": 8 + "line": 270, + "column": 66 }, "end": { - "line": 265, - "column": 21 + "line": 270, + "column": 67 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -74855,16 +76592,17 @@ "binop": null, "updateContext": null }, - "start": 8314, - "end": 8315, + "value": "const", + "start": 8598, + "end": 8603, "loc": { "start": { - "line": 265, - "column": 21 + "line": 271, + "column": 8 }, "end": { - "line": 265, - "column": 22 + "line": 271, + "column": 13 } } }, @@ -74880,17 +76618,17 @@ "postfix": false, "binop": null }, - "value": "emissiveTextureId", - "start": 8315, - "end": 8332, + "value": "baseColorTexture", + "start": 8604, + "end": 8620, "loc": { "start": { - "line": 265, - "column": 22 + "line": 271, + "column": 14 }, "end": { - "line": 265, - "column": 39 + "line": 271, + "column": 30 } } }, @@ -74908,16 +76646,16 @@ "updateContext": null }, "value": "=", - "start": 8333, - "end": 8334, + "start": 8621, + "end": 8622, "loc": { "start": { - "line": 265, - "column": 40 + "line": 271, + "column": 31 }, "end": { - "line": 265, - "column": 41 + "line": 271, + "column": 32 } } }, @@ -74933,17 +76671,17 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8335, - "end": 8343, + "value": "pbrMetallicRoughness", + "start": 8623, + "end": 8643, "loc": { "start": { - "line": 265, - "column": 42 + "line": 271, + "column": 33 }, "end": { - "line": 265, - "column": 50 + "line": 271, + "column": 53 } } }, @@ -74960,16 +76698,16 @@ "binop": null, "updateContext": null }, - "start": 8343, - "end": 8344, + "start": 8643, + "end": 8644, "loc": { "start": { - "line": 265, - "column": 50 + "line": 271, + "column": 53 }, "end": { - "line": 265, - "column": 51 + "line": 271, + "column": 54 } } }, @@ -74985,43 +76723,44 @@ "postfix": false, "binop": null }, - "value": "emissiveTexture", - "start": 8344, - "end": 8359, + "value": "baseColorTexture", + "start": 8644, + "end": 8660, "loc": { "start": { - "line": 265, - "column": 51 + "line": 271, + "column": 54 }, "end": { - "line": 265, - "column": 66 + "line": 271, + "column": 70 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 8359, - "end": 8360, + "value": "||", + "start": 8661, + "end": 8663, "loc": { "start": { - "line": 265, - "column": 66 + "line": 271, + "column": 71 }, "end": { - "line": 265, - "column": 67 + "line": 271, + "column": 73 } } }, @@ -75037,17 +76776,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 8360, - "end": 8367, + "value": "pbrMetallicRoughness", + "start": 8664, + "end": 8684, "loc": { "start": { - "line": 265, - "column": 67 + "line": 271, + "column": 74 }, "end": { - "line": 265, - "column": 74 + "line": 271, + "column": 94 } } }, @@ -75064,16 +76803,16 @@ "binop": null, "updateContext": null }, - "start": 8367, - "end": 8368, + "start": 8684, + "end": 8685, "loc": { "start": { - "line": 265, - "column": 74 + "line": 271, + "column": 94 }, "end": { - "line": 265, - "column": 75 + "line": 271, + "column": 95 } } }, @@ -75089,17 +76828,17 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 8368, - "end": 8378, + "value": "colorTexture", + "start": 8685, + "end": 8697, "loc": { "start": { - "line": 265, - "column": 75 + "line": 271, + "column": 95 }, "end": { - "line": 265, - "column": 85 + "line": 271, + "column": 107 } } }, @@ -75116,22 +76855,23 @@ "binop": null, "updateContext": null }, - "start": 8378, - "end": 8379, + "start": 8697, + "end": 8698, "loc": { "start": { - "line": 265, - "column": 85 + "line": 271, + "column": 107 }, "end": { - "line": 265, - "column": 86 + "line": 271, + "column": 108 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -75139,46 +76879,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8384, - "end": 8385, + "value": "if", + "start": 8707, + "end": 8709, "loc": { "start": { - "line": 266, - "column": 4 + "line": 272, + "column": 8 }, "end": { - "line": 266, - "column": 5 + "line": 272, + "column": 10 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 8390, - "end": 8395, + "start": 8710, + "end": 8711, "loc": { "start": { - "line": 267, - "column": 4 + "line": 272, + "column": 11 }, "end": { - "line": 267, - "column": 9 + "line": 272, + "column": 12 } } }, @@ -75194,51 +76933,49 @@ "postfix": false, "binop": null }, - "value": "metallicPBR", - "start": 8396, - "end": 8407, + "value": "baseColorTexture", + "start": 8711, + "end": 8727, "loc": { "start": { - "line": 267, - "column": 10 + "line": 272, + "column": 12 }, "end": { - "line": 267, - "column": 21 + "line": 272, + "column": 28 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 8408, - "end": 8409, + "start": 8727, + "end": 8728, "loc": { "start": { - "line": 267, - "column": 22 + "line": 272, + "column": 28 }, "end": { - "line": 267, - "column": 23 + "line": 272, + "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -75247,23 +76984,23 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8410, - "end": 8418, + "start": 8729, + "end": 8730, "loc": { "start": { - "line": 267, - "column": 24 + "line": 272, + "column": 30 }, "end": { - "line": 267, - "column": 32 + "line": 272, + "column": 31 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -75274,23 +77011,24 @@ "binop": null, "updateContext": null }, - "start": 8418, - "end": 8419, + "value": "if", + "start": 8743, + "end": 8745, "loc": { "start": { - "line": 267, - "column": 32 + "line": 273, + "column": 12 }, "end": { - "line": 267, - "column": 33 + "line": 273, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -75299,50 +77037,48 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8419, - "end": 8439, + "start": 8746, + "end": 8747, "loc": { "start": { - "line": 267, - "column": 33 + "line": 273, + "column": 15 }, "end": { - "line": 267, - "column": 53 + "line": 273, + "column": 16 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8439, - "end": 8440, + "value": "baseColorTexture", + "start": 8747, + "end": 8763, "loc": { "start": { - "line": 267, - "column": 53 + "line": 273, + "column": 16 }, "end": { - "line": 267, - "column": 54 + "line": 273, + "column": 32 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -75353,24 +77089,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 8445, - "end": 8447, + "start": 8763, + "end": 8764, "loc": { "start": { - "line": 268, - "column": 4 + "line": 273, + "column": 32 }, "end": { - "line": 268, - "column": 6 + "line": 273, + "column": 33 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -75379,24 +77114,25 @@ "postfix": false, "binop": null }, - "start": 8448, - "end": 8449, + "value": "texture", + "start": 8764, + "end": 8771, "loc": { "start": { - "line": 268, - "column": 7 + "line": 273, + "column": 33 }, "end": { - "line": 268, - "column": 8 + "line": 273, + "column": 40 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -75404,43 +77140,41 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8449, - "end": 8457, + "start": 8771, + "end": 8772, "loc": { "start": { - "line": 268, - "column": 8 + "line": 273, + "column": 40 }, "end": { - "line": 268, - "column": 16 + "line": 273, + "column": 41 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8457, - "end": 8458, + "start": 8773, + "end": 8774, "loc": { "start": { - "line": 268, - "column": 16 + "line": 273, + "column": 42 }, "end": { - "line": 268, - "column": 17 + "line": 273, + "column": 43 } } }, @@ -75456,23 +77190,23 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8458, - "end": 8478, + "value": "textureSetCfg", + "start": 8791, + "end": 8804, "loc": { "start": { - "line": 268, - "column": 17 + "line": 274, + "column": 16 }, "end": { - "line": 268, - "column": 37 + "line": 274, + "column": 29 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -75480,25 +77214,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8478, - "end": 8479, + "start": 8804, + "end": 8805, "loc": { "start": { - "line": 268, - "column": 37 + "line": 274, + "column": 29 }, "end": { - "line": 268, - "column": 38 + "line": 274, + "column": 30 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -75507,44 +77242,44 @@ "postfix": false, "binop": null }, - "start": 8480, - "end": 8481, + "value": "colorTextureId", + "start": 8805, + "end": 8819, "loc": { "start": { - "line": 268, - "column": 39 + "line": 274, + "column": 30 }, "end": { - "line": 268, - "column": 40 + "line": 274, + "column": 44 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "const", - "start": 8490, - "end": 8495, + "value": "=", + "start": 8820, + "end": 8821, "loc": { "start": { - "line": 269, - "column": 8 + "line": 274, + "column": 45 }, "end": { - "line": 269, - "column": 13 + "line": 274, + "column": 46 } } }, @@ -75560,44 +77295,43 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8496, - "end": 8516, + "value": "baseColorTexture", + "start": 8822, + "end": 8838, "loc": { "start": { - "line": 269, - "column": 14 + "line": 274, + "column": 47 }, "end": { - "line": 269, - "column": 34 + "line": 274, + "column": 63 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 8517, - "end": 8518, + "start": 8838, + "end": 8839, "loc": { "start": { - "line": 269, - "column": 35 + "line": 274, + "column": 63 }, "end": { - "line": 269, - "column": 36 + "line": 274, + "column": 64 } } }, @@ -75613,17 +77347,17 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 8519, - "end": 8527, + "value": "texture", + "start": 8839, + "end": 8846, "loc": { - "start": { - "line": 269, - "column": 37 + "start": { + "line": 274, + "column": 64 }, "end": { - "line": 269, - "column": 45 + "line": 274, + "column": 71 } } }, @@ -75640,16 +77374,16 @@ "binop": null, "updateContext": null }, - "start": 8527, - "end": 8528, + "start": 8846, + "end": 8847, "loc": { "start": { - "line": 269, - "column": 45 + "line": 274, + "column": 71 }, "end": { - "line": 269, - "column": 46 + "line": 274, + "column": 72 } } }, @@ -75665,17 +77399,17 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8528, - "end": 8548, + "value": "_textureId", + "start": 8847, + "end": 8857, "loc": { "start": { - "line": 269, - "column": 46 + "line": 274, + "column": 72 }, "end": { - "line": 269, - "column": 66 + "line": 274, + "column": 82 } } }, @@ -75692,23 +77426,22 @@ "binop": null, "updateContext": null }, - "start": 8548, - "end": 8549, + "start": 8857, + "end": 8858, "loc": { "start": { - "line": 269, - "column": 66 + "line": 274, + "column": 82 }, "end": { - "line": 269, - "column": 67 + "line": 274, + "column": 83 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -75716,73 +77449,71 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 8558, - "end": 8563, + "start": 8871, + "end": 8872, "loc": { "start": { - "line": 270, - "column": 8 + "line": 275, + "column": 12 }, "end": { - "line": 270, + "line": 275, "column": 13 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "else", + "keyword": "else", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "baseColorTexture", - "start": 8564, - "end": 8580, + "value": "else", + "start": 8873, + "end": 8877, "loc": { "start": { - "line": 270, + "line": 275, "column": 14 }, "end": { - "line": 270, - "column": 30 + "line": 275, + "column": 18 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 8581, - "end": 8582, + "start": 8878, + "end": 8879, "loc": { "start": { - "line": 270, - "column": 31 + "line": 275, + "column": 19 }, "end": { - "line": 270, - "column": 32 + "line": 275, + "column": 20 } } }, @@ -75798,17 +77529,17 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8583, - "end": 8603, + "value": "textureSetCfg", + "start": 8896, + "end": 8909, "loc": { "start": { - "line": 270, - "column": 33 + "line": 276, + "column": 16 }, "end": { - "line": 270, - "column": 53 + "line": 276, + "column": 29 } } }, @@ -75825,16 +77556,16 @@ "binop": null, "updateContext": null }, - "start": 8603, - "end": 8604, + "start": 8909, + "end": 8910, "loc": { "start": { - "line": 270, - "column": 53 + "line": 276, + "column": 29 }, "end": { - "line": 270, - "column": 54 + "line": 276, + "column": 30 } } }, @@ -75850,44 +77581,44 @@ "postfix": false, "binop": null }, - "value": "baseColorTexture", - "start": 8604, - "end": 8620, + "value": "colorTextureId", + "start": 8910, + "end": 8924, "loc": { "start": { - "line": 270, - "column": 54 + "line": 276, + "column": 30 }, "end": { - "line": 270, - "column": 70 + "line": 276, + "column": 44 } } }, { "type": { - "label": "||", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 8621, - "end": 8623, + "value": "=", + "start": 8925, + "end": 8926, "loc": { "start": { - "line": 270, - "column": 71 + "line": 276, + "column": 45 }, "end": { - "line": 270, - "column": 73 + "line": 276, + "column": 46 } } }, @@ -75903,17 +77634,17 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 8624, - "end": 8644, + "value": "ctx", + "start": 8927, + "end": 8930, "loc": { "start": { - "line": 270, - "column": 74 + "line": 276, + "column": 47 }, "end": { - "line": 270, - "column": 94 + "line": 276, + "column": 50 } } }, @@ -75930,16 +77661,16 @@ "binop": null, "updateContext": null }, - "start": 8644, - "end": 8645, + "start": 8930, + "end": 8931, "loc": { "start": { - "line": 270, - "column": 94 + "line": 276, + "column": 50 }, "end": { - "line": 270, - "column": 95 + "line": 276, + "column": 51 } } }, @@ -75955,24 +77686,24 @@ "postfix": false, "binop": null }, - "value": "colorTexture", - "start": 8645, - "end": 8657, + "value": "gltfData", + "start": 8931, + "end": 8939, "loc": { "start": { - "line": 270, - "column": 95 + "line": 276, + "column": 51 }, "end": { - "line": 270, - "column": 107 + "line": 276, + "column": 59 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -75982,50 +77713,48 @@ "binop": null, "updateContext": null }, - "start": 8657, - "end": 8658, + "start": 8939, + "end": 8940, "loc": { "start": { - "line": 270, - "column": 107 + "line": 276, + "column": 59 }, "end": { - "line": 270, - "column": 108 + "line": 276, + "column": 60 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 8667, - "end": 8669, + "value": "textures", + "start": 8940, + "end": 8948, "loc": { "start": { - "line": 271, - "column": 8 + "line": 276, + "column": 60 }, "end": { - "line": 271, - "column": 10 + "line": 276, + "column": 68 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -76033,18 +77762,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8670, - "end": 8671, + "start": 8948, + "end": 8949, "loc": { "start": { - "line": 271, - "column": 11 + "line": 276, + "column": 68 }, "end": { - "line": 271, - "column": 12 + "line": 276, + "column": 69 } } }, @@ -76061,22 +77791,22 @@ "binop": null }, "value": "baseColorTexture", - "start": 8671, - "end": 8687, + "start": 8949, + "end": 8965, "loc": { "start": { - "line": 271, - "column": 12 + "line": 276, + "column": 69 }, "end": { - "line": 271, - "column": 28 + "line": 276, + "column": 85 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -76084,25 +77814,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8687, - "end": 8688, + "start": 8965, + "end": 8966, "loc": { "start": { - "line": 271, - "column": 28 + "line": 276, + "column": 85 }, "end": { - "line": 271, - "column": 29 + "line": 276, + "column": 86 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -76111,23 +77842,23 @@ "postfix": false, "binop": null }, - "start": 8689, - "end": 8690, + "value": "index", + "start": 8966, + "end": 8971, "loc": { "start": { - "line": 271, - "column": 30 + "line": 276, + "column": 86 }, "end": { - "line": 271, - "column": 31 + "line": 276, + "column": 91 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -76138,42 +77869,42 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 8703, - "end": 8705, + "start": 8971, + "end": 8972, "loc": { "start": { - "line": 272, - "column": 12 + "line": 276, + "column": 91 }, "end": { - "line": 272, - "column": 14 + "line": 276, + "column": 92 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8706, - "end": 8707, + "start": 8972, + "end": 8973, "loc": { "start": { - "line": 272, - "column": 15 + "line": 276, + "column": 92 }, "end": { - "line": 272, - "column": 16 + "line": 276, + "column": 93 } } }, @@ -76189,24 +77920,24 @@ "postfix": false, "binop": null }, - "value": "baseColorTexture", - "start": 8707, - "end": 8723, + "value": "_textureId", + "start": 8973, + "end": 8983, "loc": { "start": { - "line": 272, - "column": 16 + "line": 276, + "column": 93 }, "end": { - "line": 272, - "column": 32 + "line": 276, + "column": 103 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -76216,24 +77947,24 @@ "binop": null, "updateContext": null }, - "start": 8723, - "end": 8724, + "start": 8983, + "end": 8984, "loc": { "start": { - "line": 272, - "column": 32 + "line": 276, + "column": 103 }, "end": { - "line": 272, - "column": 33 + "line": 276, + "column": 104 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -76241,23 +77972,22 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 8724, - "end": 8731, + "start": 8997, + "end": 8998, "loc": { "start": { - "line": 272, - "column": 33 + "line": 277, + "column": 12 }, "end": { - "line": 272, - "column": 40 + "line": 277, + "column": 13 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -76267,48 +77997,51 @@ "postfix": false, "binop": null }, - "start": 8731, - "end": 8732, + "start": 9007, + "end": 9008, "loc": { "start": { - "line": 272, - "column": 40 + "line": 278, + "column": 8 }, "end": { - "line": 272, - "column": 41 + "line": 278, + "column": 9 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8733, - "end": 8734, + "value": "if", + "start": 9017, + "end": 9019, "loc": { "start": { - "line": 272, - "column": 42 + "line": 279, + "column": 8 }, "end": { - "line": 272, - "column": 43 + "line": 279, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -76317,104 +78050,102 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 8751, - "end": 8764, + "start": 9020, + "end": 9021, "loc": { "start": { - "line": 273, - "column": 16 + "line": 279, + "column": 11 }, "end": { - "line": 273, - "column": 29 + "line": 279, + "column": 12 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8764, - "end": 8765, + "value": "metallicPBR", + "start": 9021, + "end": 9032, "loc": { "start": { - "line": 273, - "column": 29 + "line": 279, + "column": 12 }, "end": { - "line": 273, - "column": 30 + "line": 279, + "column": 23 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "colorTextureId", - "start": 8765, - "end": 8779, + "start": 9032, + "end": 9033, "loc": { "start": { - "line": 273, - "column": 30 + "line": 279, + "column": 23 }, "end": { - "line": 273, - "column": 44 + "line": 279, + "column": 24 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 8780, - "end": 8781, + "value": "metallicRoughnessTexture", + "start": 9033, + "end": 9057, "loc": { "start": { - "line": 273, - "column": 45 + "line": 279, + "column": 24 }, "end": { - "line": 273, - "column": 46 + "line": 279, + "column": 48 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -76422,43 +78153,41 @@ "postfix": false, "binop": null }, - "value": "baseColorTexture", - "start": 8782, - "end": 8798, + "start": 9057, + "end": 9058, "loc": { "start": { - "line": 273, - "column": 47 + "line": 279, + "column": 48 }, "end": { - "line": 273, - "column": 63 + "line": 279, + "column": 49 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8798, - "end": 8799, + "start": 9059, + "end": 9060, "loc": { "start": { - "line": 273, - "column": 63 + "line": 279, + "column": 50 }, "end": { - "line": 273, - "column": 64 + "line": 279, + "column": 51 } } }, @@ -76474,17 +78203,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 8799, - "end": 8806, + "value": "textureSetCfg", + "start": 9073, + "end": 9086, "loc": { "start": { - "line": 273, - "column": 64 + "line": 280, + "column": 12 }, "end": { - "line": 273, - "column": 71 + "line": 280, + "column": 25 } } }, @@ -76501,16 +78230,16 @@ "binop": null, "updateContext": null }, - "start": 8806, - "end": 8807, + "start": 9086, + "end": 9087, "loc": { "start": { - "line": 273, - "column": 71 + "line": 280, + "column": 25 }, "end": { - "line": 273, - "column": 72 + "line": 280, + "column": 26 } } }, @@ -76526,121 +78255,96 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 8807, - "end": 8817, + "value": "metallicRoughnessTextureId", + "start": 9087, + "end": 9113, "loc": { "start": { - "line": 273, - "column": 72 + "line": 280, + "column": 26 }, "end": { - "line": 273, - "column": 82 + "line": 280, + "column": 52 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 8817, - "end": 8818, + "value": "=", + "start": 9114, + "end": 9115, "loc": { "start": { - "line": 273, - "column": 82 + "line": 280, + "column": 53 }, "end": { - "line": 273, - "column": 83 + "line": 280, + "column": 54 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 8831, - "end": 8832, - "loc": { - "start": { - "line": 274, - "column": 12 - }, - "end": { - "line": 274, - "column": 13 - } - } - }, - { - "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "postfix": false, + "binop": null }, - "value": "else", - "start": 8833, - "end": 8837, + "value": "metallicPBR", + "start": 9116, + "end": 9127, "loc": { "start": { - "line": 274, - "column": 14 + "line": 280, + "column": 55 }, "end": { - "line": 274, - "column": 18 + "line": 280, + "column": 66 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 8838, - "end": 8839, + "start": 9127, + "end": 9128, "loc": { "start": { - "line": 274, - "column": 19 + "line": 280, + "column": 66 }, "end": { - "line": 274, - "column": 20 + "line": 280, + "column": 67 } } }, @@ -76656,17 +78360,17 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 8856, - "end": 8869, + "value": "metallicRoughnessTexture", + "start": 9128, + "end": 9152, "loc": { "start": { - "line": 275, - "column": 16 + "line": 280, + "column": 67 }, "end": { - "line": 275, - "column": 29 + "line": 280, + "column": 91 } } }, @@ -76683,16 +78387,16 @@ "binop": null, "updateContext": null }, - "start": 8869, - "end": 8870, + "start": 9152, + "end": 9153, "loc": { "start": { - "line": 275, - "column": 29 + "line": 280, + "column": 91 }, "end": { - "line": 275, - "column": 30 + "line": 280, + "column": 92 } } }, @@ -76708,44 +78412,43 @@ "postfix": false, "binop": null }, - "value": "colorTextureId", - "start": 8870, - "end": 8884, + "value": "texture", + "start": 9153, + "end": 9160, "loc": { "start": { - "line": 275, - "column": 30 + "line": 280, + "column": 92 }, "end": { - "line": 275, - "column": 44 + "line": 280, + "column": 99 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 8885, - "end": 8886, + "start": 9160, + "end": 9161, "loc": { "start": { - "line": 275, - "column": 45 + "line": 280, + "column": 99 }, "end": { - "line": 275, - "column": 46 + "line": 280, + "column": 100 } } }, @@ -76761,24 +78464,24 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 8887, - "end": 8890, + "value": "_textureId", + "start": 9161, + "end": 9171, "loc": { "start": { - "line": 275, - "column": 47 + "line": 280, + "column": 100 }, "end": { - "line": 275, - "column": 50 + "line": 280, + "column": 110 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -76788,24 +78491,24 @@ "binop": null, "updateContext": null }, - "start": 8890, - "end": 8891, + "start": 9171, + "end": 9172, "loc": { "start": { - "line": 275, - "column": 50 + "line": 280, + "column": 110 }, "end": { - "line": 275, - "column": 51 + "line": 280, + "column": 111 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -76813,23 +78516,48 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 8891, - "end": 8899, + "start": 9181, + "end": 9182, "loc": { "start": { - "line": 275, - "column": 51 + "line": 281, + "column": 8 }, "end": { - "line": 275, - "column": 59 + "line": 281, + "column": 9 } } }, { "type": { - "label": ".", + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 9187, + "end": 9188, + "loc": { + "start": { + "line": 282, + "column": 4 + }, + "end": { + "line": 282, + "column": 5 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -76840,16 +78568,17 @@ "binop": null, "updateContext": null }, - "start": 8899, - "end": 8900, + "value": "const", + "start": 9193, + "end": 9198, "loc": { "start": { - "line": 275, - "column": 59 + "line": 283, + "column": 4 }, "end": { - "line": 275, - "column": 60 + "line": 283, + "column": 9 } } }, @@ -76865,43 +78594,44 @@ "postfix": false, "binop": null }, - "value": "textures", - "start": 8900, - "end": 8908, + "value": "extensions", + "start": 9199, + "end": 9209, "loc": { "start": { - "line": 275, - "column": 60 + "line": 283, + "column": 10 }, "end": { - "line": 275, - "column": 68 + "line": 283, + "column": 20 } } }, { "type": { - "label": "[", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 8908, - "end": 8909, + "value": "=", + "start": 9210, + "end": 9211, "loc": { "start": { - "line": 275, - "column": 68 + "line": 283, + "column": 21 }, "end": { - "line": 275, - "column": 69 + "line": 283, + "column": 22 } } }, @@ -76917,17 +78647,17 @@ "postfix": false, "binop": null }, - "value": "baseColorTexture", - "start": 8909, - "end": 8925, + "value": "material", + "start": 9212, + "end": 9220, "loc": { "start": { - "line": 275, - "column": 69 + "line": 283, + "column": 23 }, "end": { - "line": 275, - "column": 85 + "line": 283, + "column": 31 } } }, @@ -76944,16 +78674,16 @@ "binop": null, "updateContext": null }, - "start": 8925, - "end": 8926, + "start": 9220, + "end": 9221, "loc": { "start": { - "line": 275, - "column": 85 + "line": 283, + "column": 31 }, "end": { - "line": 275, - "column": 86 + "line": 283, + "column": 32 } } }, @@ -76969,24 +78699,24 @@ "postfix": false, "binop": null }, - "value": "index", - "start": 8926, - "end": 8931, + "value": "extensions", + "start": 9221, + "end": 9231, "loc": { "start": { - "line": 275, - "column": 86 + "line": 283, + "column": 32 }, "end": { - "line": 275, - "column": 91 + "line": 283, + "column": 42 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -76996,22 +78726,23 @@ "binop": null, "updateContext": null }, - "start": 8931, - "end": 8932, + "start": 9231, + "end": 9232, "loc": { "start": { - "line": 275, - "column": 91 + "line": 283, + "column": 42 }, "end": { - "line": 275, - "column": 92 + "line": 283, + "column": 43 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77022,23 +78753,24 @@ "binop": null, "updateContext": null }, - "start": 8932, - "end": 8933, + "value": "if", + "start": 9237, + "end": 9239, "loc": { "start": { - "line": 275, - "column": 92 + "line": 284, + "column": 4 }, "end": { - "line": 275, - "column": 93 + "line": 284, + "column": 6 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -77047,49 +78779,48 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 8933, - "end": 8943, + "start": 9240, + "end": 9241, "loc": { "start": { - "line": 275, - "column": 93 + "line": 284, + "column": 7 }, "end": { - "line": 275, - "column": 103 + "line": 284, + "column": 8 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 8943, - "end": 8944, + "value": "extensions", + "start": 9241, + "end": 9251, "loc": { "start": { - "line": 275, - "column": 103 + "line": 284, + "column": 8 }, "end": { - "line": 275, - "column": 104 + "line": 284, + "column": 18 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77099,24 +78830,24 @@ "postfix": false, "binop": null }, - "start": 8957, - "end": 8958, + "start": 9251, + "end": 9252, "loc": { "start": { - "line": 276, - "column": 12 + "line": 284, + "column": 18 }, "end": { - "line": 276, - "column": 13 + "line": 284, + "column": 19 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -77124,23 +78855,23 @@ "postfix": false, "binop": null }, - "start": 8967, - "end": 8968, + "start": 9253, + "end": 9254, "loc": { "start": { - "line": 277, - "column": 8 + "line": 284, + "column": 20 }, "end": { - "line": 277, - "column": 9 + "line": 284, + "column": 21 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77151,24 +78882,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 8977, - "end": 8979, + "value": "const", + "start": 9263, + "end": 9268, "loc": { "start": { - "line": 278, + "line": 285, "column": 8 }, "end": { - "line": 278, - "column": 10 + "line": 285, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -77177,16 +78908,44 @@ "postfix": false, "binop": null }, - "start": 8980, - "end": 8981, + "value": "specularPBR", + "start": 9269, + "end": 9280, "loc": { "start": { - "line": 278, - "column": 11 + "line": 285, + "column": 14 }, "end": { - "line": 278, - "column": 12 + "line": 285, + "column": 25 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 9281, + "end": 9282, + "loc": { + "start": { + "line": 285, + "column": 26 + }, + "end": { + "line": 285, + "column": 27 } } }, @@ -77202,25 +78961,25 @@ "postfix": false, "binop": null }, - "value": "metallicPBR", - "start": 8981, - "end": 8992, + "value": "extensions", + "start": 9283, + "end": 9293, "loc": { "start": { - "line": 278, - "column": 12 + "line": 285, + "column": 28 }, "end": { - "line": 278, - "column": 23 + "line": 285, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -77229,22 +78988,22 @@ "binop": null, "updateContext": null }, - "start": 8992, - "end": 8993, + "start": 9293, + "end": 9294, "loc": { "start": { - "line": 278, - "column": 23 + "line": 285, + "column": 38 }, "end": { - "line": 278, - "column": 24 + "line": 285, + "column": 39 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -77252,25 +79011,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metallicRoughnessTexture", - "start": 8993, - "end": 9017, + "value": "KHR_materials_pbrSpecularGlossiness", + "start": 9294, + "end": 9331, "loc": { "start": { - "line": 278, - "column": 24 + "line": 285, + "column": 39 }, "end": { - "line": 278, - "column": 48 + "line": 285, + "column": 76 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77278,95 +79038,98 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9017, - "end": 9018, + "start": 9331, + "end": 9332, "loc": { "start": { - "line": 278, - "column": 48 + "line": 285, + "column": 76 }, "end": { - "line": 278, - "column": 49 + "line": 285, + "column": 77 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9019, - "end": 9020, + "start": 9332, + "end": 9333, "loc": { "start": { - "line": 278, - "column": 50 + "line": 285, + "column": 77 }, "end": { - "line": 278, - "column": 51 + "line": 285, + "column": 78 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetCfg", - "start": 9033, - "end": 9046, + "value": "if", + "start": 9342, + "end": 9344, "loc": { "start": { - "line": 279, - "column": 12 + "line": 286, + "column": 8 }, "end": { - "line": 279, - "column": 25 + "line": 286, + "column": 10 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 9046, - "end": 9047, + "start": 9345, + "end": 9346, "loc": { "start": { - "line": 279, - "column": 25 + "line": 286, + "column": 11 }, "end": { - "line": 279, - "column": 26 + "line": 286, + "column": 12 } } }, @@ -77382,51 +79145,49 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTextureId", - "start": 9047, - "end": 9073, + "value": "specularPBR", + "start": 9346, + "end": 9357, "loc": { "start": { - "line": 279, - "column": 26 + "line": 286, + "column": 12 }, "end": { - "line": 279, - "column": 52 + "line": 286, + "column": 23 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 9074, - "end": 9075, + "start": 9357, + "end": 9358, "loc": { "start": { - "line": 279, - "column": 53 + "line": 286, + "column": 23 }, "end": { - "line": 279, - "column": 54 + "line": 286, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -77435,23 +79196,23 @@ "postfix": false, "binop": null }, - "value": "metallicPBR", - "start": 9076, - "end": 9087, + "start": 9359, + "end": 9360, "loc": { "start": { - "line": 279, - "column": 55 + "line": 286, + "column": 25 }, "end": { - "line": 279, - "column": 66 + "line": 286, + "column": 26 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77462,16 +79223,17 @@ "binop": null, "updateContext": null }, - "start": 9087, - "end": 9088, + "value": "const", + "start": 9373, + "end": 9378, "loc": { "start": { - "line": 279, - "column": 66 + "line": 287, + "column": 12 }, "end": { - "line": 279, - "column": 67 + "line": 287, + "column": 17 } } }, @@ -77487,43 +79249,44 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTexture", - "start": 9088, - "end": 9112, + "value": "specularTexture", + "start": 9379, + "end": 9394, "loc": { "start": { - "line": 279, - "column": 67 + "line": 287, + "column": 18 }, "end": { - "line": 279, - "column": 91 + "line": 287, + "column": 33 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 9112, - "end": 9113, + "value": "=", + "start": 9395, + "end": 9396, "loc": { "start": { - "line": 279, - "column": 91 + "line": 287, + "column": 34 }, "end": { - "line": 279, - "column": 92 + "line": 287, + "column": 35 } } }, @@ -77539,17 +79302,17 @@ "postfix": false, "binop": null }, - "value": "texture", - "start": 9113, - "end": 9120, + "value": "specularPBR", + "start": 9397, + "end": 9408, "loc": { "start": { - "line": 279, - "column": 92 + "line": 287, + "column": 36 }, "end": { - "line": 279, - "column": 99 + "line": 287, + "column": 47 } } }, @@ -77566,16 +79329,16 @@ "binop": null, "updateContext": null }, - "start": 9120, - "end": 9121, + "start": 9408, + "end": 9409, "loc": { "start": { - "line": 279, - "column": 99 + "line": 287, + "column": 47 }, "end": { - "line": 279, - "column": 100 + "line": 287, + "column": 48 } } }, @@ -77591,17 +79354,17 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 9121, - "end": 9131, + "value": "specularTexture", + "start": 9409, + "end": 9424, "loc": { "start": { - "line": 279, - "column": 100 + "line": 287, + "column": 48 }, "end": { - "line": 279, - "column": 110 + "line": 287, + "column": 63 } } }, @@ -77618,22 +79381,23 @@ "binop": null, "updateContext": null }, - "start": 9131, - "end": 9132, + "start": 9424, + "end": 9425, "loc": { "start": { - "line": 279, - "column": 110 + "line": 287, + "column": 63 }, "end": { - "line": 279, - "column": 111 + "line": 287, + "column": 64 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -77641,26 +79405,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9141, - "end": 9142, + "value": "if", + "start": 9438, + "end": 9440, "loc": { "start": { - "line": 280, - "column": 8 + "line": 288, + "column": 12 }, "end": { - "line": 280, - "column": 9 + "line": 288, + "column": 14 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -77668,44 +79434,16 @@ "postfix": false, "binop": null }, - "start": 9147, - "end": 9148, - "loc": { - "start": { - "line": 281, - "column": 4 - }, - "end": { - "line": 281, - "column": 5 - } - } - }, - { - "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "const", - "start": 9153, - "end": 9158, + "start": 9441, + "end": 9442, "loc": { "start": { - "line": 282, - "column": 4 + "line": 288, + "column": 15 }, "end": { - "line": 282, - "column": 9 + "line": 288, + "column": 16 } } }, @@ -77721,50 +79459,51 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 9159, - "end": 9169, + "value": "specularTexture", + "start": 9442, + "end": 9457, "loc": { "start": { - "line": 282, - "column": 10 + "line": 288, + "column": 16 }, "end": { - "line": 282, - "column": 20 + "line": 288, + "column": 31 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 9170, - "end": 9171, + "value": "!==", + "start": 9458, + "end": 9461, "loc": { "start": { - "line": 282, - "column": 21 + "line": 288, + "column": 32 }, "end": { - "line": 282, - "column": 22 + "line": 288, + "column": 35 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -77772,45 +79511,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "material", - "start": 9172, - "end": 9180, + "value": "null", + "start": 9462, + "end": 9466, "loc": { "start": { - "line": 282, - "column": 23 + "line": 288, + "column": 36 }, "end": { - "line": 282, - "column": 31 + "line": 288, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 9180, - "end": 9181, + "value": "&&", + "start": 9467, + "end": 9469, "loc": { "start": { - "line": 282, - "column": 31 + "line": 288, + "column": 41 }, "end": { - "line": 282, - "column": 32 + "line": 288, + "column": 43 } } }, @@ -77826,23 +79567,23 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 9181, - "end": 9191, + "value": "specularTexture", + "start": 9470, + "end": 9485, "loc": { "start": { - "line": 282, - "column": 32 + "line": 288, + "column": 44 }, "end": { - "line": 282, - "column": 42 + "line": 288, + "column": 59 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -77850,55 +79591,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 9191, - "end": 9192, + "value": "!==", + "start": 9486, + "end": 9489, "loc": { "start": { - "line": 282, - "column": 42 + "line": 288, + "column": 60 }, "end": { - "line": 282, - "column": 43 + "line": 288, + "column": 63 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 9197, - "end": 9199, + "value": "undefined", + "start": 9490, + "end": 9499, "loc": { "start": { - "line": 283, - "column": 4 + "line": 288, + "column": 64 }, "end": { - "line": 283, - "column": 6 + "line": 288, + "column": 73 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -77906,23 +79646,23 @@ "postfix": false, "binop": null }, - "start": 9200, - "end": 9201, + "start": 9499, + "end": 9500, "loc": { "start": { - "line": 283, - "column": 7 + "line": 288, + "column": 73 }, "end": { - "line": 283, - "column": 8 + "line": 288, + "column": 74 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -77931,50 +79671,40 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 9201, - "end": 9211, + "start": 9501, + "end": 9502, "loc": { "start": { - "line": 283, - "column": 8 + "line": 288, + "column": 75 }, "end": { - "line": 283, - "column": 18 + "line": 288, + "column": 76 } } }, { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 9211, - "end": 9212, + "type": "CommentLine", + "value": " textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;", + "start": 9519, + "end": 9615, "loc": { "start": { - "line": 283, - "column": 18 + "line": 289, + "column": 16 }, "end": { - "line": 283, - "column": 19 + "line": 289, + "column": 112 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -77982,16 +79712,16 @@ "postfix": false, "binop": null }, - "start": 9213, - "end": 9214, + "start": 9628, + "end": 9629, "loc": { "start": { - "line": 283, - "column": 20 + "line": 290, + "column": 12 }, "end": { - "line": 283, - "column": 21 + "line": 290, + "column": 13 } } }, @@ -78010,16 +79740,16 @@ "updateContext": null }, "value": "const", - "start": 9223, - "end": 9228, + "start": 9642, + "end": 9647, "loc": { "start": { - "line": 284, - "column": 8 + "line": 291, + "column": 12 }, "end": { - "line": 284, - "column": 13 + "line": 291, + "column": 17 } } }, @@ -78035,17 +79765,17 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 9229, - "end": 9240, + "value": "specularColorTexture", + "start": 9648, + "end": 9668, "loc": { "start": { - "line": 284, - "column": 14 + "line": 291, + "column": 18 }, "end": { - "line": 284, - "column": 25 + "line": 291, + "column": 38 } } }, @@ -78063,16 +79793,16 @@ "updateContext": null }, "value": "=", - "start": 9241, - "end": 9242, + "start": 9669, + "end": 9670, "loc": { "start": { - "line": 284, - "column": 26 + "line": 291, + "column": 39 }, "end": { - "line": 284, - "column": 27 + "line": 291, + "column": 40 } } }, @@ -78088,51 +79818,25 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 9243, - "end": 9253, - "loc": { - "start": { - "line": 284, - "column": 28 - }, - "end": { - "line": 284, - "column": 38 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 9253, - "end": 9254, + "value": "specularPBR", + "start": 9671, + "end": 9682, "loc": { "start": { - "line": 284, - "column": 38 + "line": 291, + "column": 41 }, "end": { - "line": 284, - "column": 39 + "line": 291, + "column": 52 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -78141,43 +79845,42 @@ "binop": null, "updateContext": null }, - "value": "KHR_materials_pbrSpecularGlossiness", - "start": 9254, - "end": 9291, + "start": 9682, + "end": 9683, "loc": { "start": { - "line": 284, - "column": 39 + "line": 291, + "column": 52 }, "end": { - "line": 284, - "column": 76 + "line": 291, + "column": 53 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 9291, - "end": 9292, + "value": "specularColorTexture", + "start": 9683, + "end": 9703, "loc": { "start": { - "line": 284, - "column": 76 + "line": 291, + "column": 53 }, "end": { - "line": 284, - "column": 77 + "line": 291, + "column": 73 } } }, @@ -78194,16 +79897,16 @@ "binop": null, "updateContext": null }, - "start": 9292, - "end": 9293, + "start": 9703, + "end": 9704, "loc": { "start": { - "line": 284, - "column": 77 + "line": 291, + "column": 73 }, "end": { - "line": 284, - "column": 78 + "line": 291, + "column": 74 } } }, @@ -78222,16 +79925,16 @@ "updateContext": null }, "value": "if", - "start": 9302, - "end": 9304, + "start": 9717, + "end": 9719, "loc": { "start": { - "line": 285, - "column": 8 + "line": 292, + "column": 12 }, "end": { - "line": 285, - "column": 10 + "line": 292, + "column": 14 } } }, @@ -78247,16 +79950,16 @@ "postfix": false, "binop": null }, - "start": 9305, - "end": 9306, + "start": 9720, + "end": 9721, "loc": { "start": { - "line": 285, - "column": 11 + "line": 292, + "column": 15 }, "end": { - "line": 285, - "column": 12 + "line": 292, + "column": 16 } } }, @@ -78272,95 +79975,99 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 9306, - "end": 9317, + "value": "specularColorTexture", + "start": 9721, + "end": 9741, "loc": { "start": { - "line": 285, - "column": 12 + "line": 292, + "column": 16 }, "end": { - "line": 285, - "column": 23 + "line": 292, + "column": 36 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 9317, - "end": 9318, + "value": "!==", + "start": 9742, + "end": 9745, "loc": { "start": { - "line": 285, - "column": 23 + "line": 292, + "column": 37 }, "end": { - "line": 285, - "column": 24 + "line": 292, + "column": 40 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "null", + "keyword": "null", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9319, - "end": 9320, + "value": "null", + "start": 9746, + "end": 9750, "loc": { "start": { - "line": 285, - "column": 25 + "line": 292, + "column": 41 }, "end": { - "line": 285, - "column": 26 + "line": 292, + "column": 45 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "const", - "start": 9333, - "end": 9338, + "value": "&&", + "start": 9751, + "end": 9753, "loc": { "start": { - "line": 286, - "column": 12 + "line": 292, + "column": 46 }, "end": { - "line": 286, - "column": 17 + "line": 292, + "column": 48 } } }, @@ -78376,44 +80083,44 @@ "postfix": false, "binop": null }, - "value": "specularTexture", - "start": 9339, - "end": 9354, + "value": "specularColorTexture", + "start": 9754, + "end": 9774, "loc": { "start": { - "line": 286, - "column": 18 + "line": 292, + "column": 49 }, "end": { - "line": 286, - "column": 33 + "line": 292, + "column": 69 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 9355, - "end": 9356, + "value": "!==", + "start": 9775, + "end": 9778, "loc": { "start": { - "line": 286, - "column": 34 + "line": 292, + "column": 70 }, "end": { - "line": 286, - "column": 35 + "line": 292, + "column": 73 } } }, @@ -78429,23 +80136,23 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 9357, - "end": 9368, + "value": "undefined", + "start": 9779, + "end": 9788, "loc": { "start": { - "line": 286, - "column": 36 + "line": 292, + "column": 74 }, "end": { - "line": 286, - "column": 47 + "line": 292, + "column": 83 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -78453,19 +80160,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null + }, + "start": 9788, + "end": 9789, + "loc": { + "start": { + "line": 292, + "column": 83 + }, + "end": { + "line": 292, + "column": 84 + } + } + }, + { + "type": { + "label": "{", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null }, - "start": 9368, - "end": 9369, + "start": 9790, + "end": 9791, "loc": { "start": { - "line": 286, - "column": 47 + "line": 292, + "column": 85 }, "end": { - "line": 286, - "column": 48 + "line": 292, + "column": 86 } } }, @@ -78481,24 +80212,24 @@ "postfix": false, "binop": null }, - "value": "specularTexture", - "start": 9369, - "end": 9384, + "value": "textureSetCfg", + "start": 9808, + "end": 9821, "loc": { "start": { - "line": 286, - "column": 48 + "line": 293, + "column": 16 }, "end": { - "line": 286, - "column": 63 + "line": 293, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -78508,69 +80239,69 @@ "binop": null, "updateContext": null }, - "start": 9384, - "end": 9385, + "start": 9821, + "end": 9822, "loc": { "start": { - "line": 286, - "column": 63 + "line": 293, + "column": 29 }, "end": { - "line": 286, - "column": 64 + "line": 293, + "column": 30 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 9398, - "end": 9400, + "value": "colorTextureId", + "start": 9822, + "end": 9836, "loc": { "start": { - "line": 287, - "column": 12 + "line": 293, + "column": 30 }, "end": { - "line": 287, - "column": 14 + "line": 293, + "column": 44 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9401, - "end": 9402, + "value": "=", + "start": 9837, + "end": 9838, "loc": { "start": { - "line": 287, - "column": 15 + "line": 293, + "column": 45 }, "end": { - "line": 287, - "column": 16 + "line": 293, + "column": 46 } } }, @@ -78586,51 +80317,49 @@ "postfix": false, "binop": null }, - "value": "specularTexture", - "start": 9402, - "end": 9417, + "value": "ctx", + "start": 9839, + "end": 9842, "loc": { "start": { - "line": 287, - "column": 16 + "line": 293, + "column": 47 }, "end": { - "line": 287, - "column": 31 + "line": 293, + "column": 50 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 9418, - "end": 9421, + "start": 9842, + "end": 9843, "loc": { "start": { - "line": 287, - "column": 32 + "line": 293, + "column": 50 }, "end": { - "line": 287, - "column": 35 + "line": 293, + "column": 51 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -78638,47 +80367,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 9422, - "end": 9426, + "value": "gltfData", + "start": 9843, + "end": 9851, "loc": { "start": { - "line": 287, - "column": 36 + "line": 293, + "column": 51 }, "end": { - "line": 287, - "column": 40 + "line": 293, + "column": 59 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 9427, - "end": 9429, + "start": 9851, + "end": 9852, "loc": { "start": { - "line": 287, - "column": 41 + "line": 293, + "column": 59 }, "end": { - "line": 287, - "column": 43 + "line": 293, + "column": 60 } } }, @@ -78694,44 +80421,43 @@ "postfix": false, "binop": null }, - "value": "specularTexture", - "start": 9430, - "end": 9445, + "value": "textures", + "start": 9852, + "end": 9860, "loc": { "start": { - "line": 287, - "column": 44 + "line": 293, + "column": 60 }, "end": { - "line": 287, - "column": 59 + "line": 293, + "column": 68 } } }, { "type": { - "label": "==/!=", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 9446, - "end": 9449, + "start": 9860, + "end": 9861, "loc": { "start": { - "line": 287, - "column": 60 + "line": 293, + "column": 68 }, "end": { - "line": 287, - "column": 63 + "line": 293, + "column": 69 } } }, @@ -78747,23 +80473,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 9450, - "end": 9459, + "value": "specularColorTexture", + "start": 9861, + "end": 9881, "loc": { "start": { - "line": 287, - "column": 64 + "line": 293, + "column": 69 }, "end": { - "line": 287, - "column": 73 + "line": 293, + "column": 89 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -78771,25 +80497,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9459, - "end": 9460, + "start": 9881, + "end": 9882, "loc": { "start": { - "line": 287, - "column": 73 + "line": 293, + "column": 89 }, "end": { - "line": 287, - "column": 74 + "line": 293, + "column": 90 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -78798,38 +80525,23 @@ "postfix": false, "binop": null }, - "start": 9461, - "end": 9462, - "loc": { - "start": { - "line": 287, - "column": 75 - }, - "end": { - "line": 287, - "column": 76 - } - } - }, - { - "type": "CommentLine", - "value": " textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;", - "start": 9479, - "end": 9575, + "value": "index", + "start": 9882, + "end": 9887, "loc": { "start": { - "line": 288, - "column": 16 + "line": 293, + "column": 90 }, "end": { - "line": 288, - "column": 112 + "line": 293, + "column": 95 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -78837,25 +80549,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9588, - "end": 9589, + "start": 9887, + "end": 9888, "loc": { "start": { - "line": 289, - "column": 12 + "line": 293, + "column": 95 }, "end": { - "line": 289, - "column": 13 + "line": 293, + "column": 96 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -78866,17 +80578,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 9602, - "end": 9607, + "start": 9888, + "end": 9889, "loc": { "start": { - "line": 290, - "column": 12 + "line": 293, + "column": 96 }, "end": { - "line": 290, - "column": 17 + "line": 293, + "column": 97 } } }, @@ -78892,52 +80603,51 @@ "postfix": false, "binop": null }, - "value": "specularColorTexture", - "start": 9608, - "end": 9628, + "value": "_textureId", + "start": 9889, + "end": 9899, "loc": { "start": { - "line": 290, - "column": 18 + "line": 293, + "column": 97 }, "end": { - "line": 290, - "column": 38 + "line": 293, + "column": 107 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 9629, - "end": 9630, + "start": 9899, + "end": 9900, "loc": { "start": { - "line": 290, - "column": 39 + "line": 293, + "column": 107 }, "end": { - "line": 290, - "column": 40 + "line": 293, + "column": 108 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -78945,23 +80655,22 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 9631, - "end": 9642, + "start": 9913, + "end": 9914, "loc": { "start": { - "line": 290, - "column": 41 + "line": 294, + "column": 12 }, "end": { - "line": 290, - "column": 52 + "line": 294, + "column": 13 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -78969,71 +80678,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 9642, - "end": 9643, - "loc": { - "start": { - "line": 290, - "column": 52 - }, - "end": { - "line": 290, - "column": 53 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "value": "specularColorTexture", - "start": 9643, - "end": 9663, + "start": 9923, + "end": 9924, "loc": { "start": { - "line": 290, - "column": 53 + "line": 295, + "column": 8 }, "end": { - "line": 290, - "column": 73 + "line": 295, + "column": 9 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 9663, - "end": 9664, + "start": 9929, + "end": 9930, "loc": { "start": { - "line": 290, - "column": 73 + "line": 296, + "column": 4 }, "end": { - "line": 290, - "column": 74 + "line": 296, + "column": 5 } } }, @@ -79052,16 +80733,16 @@ "updateContext": null }, "value": "if", - "start": 9677, - "end": 9679, + "start": 9935, + "end": 9937, "loc": { "start": { - "line": 291, - "column": 12 + "line": 297, + "column": 4 }, "end": { - "line": 291, - "column": 14 + "line": 297, + "column": 6 } } }, @@ -79077,16 +80758,16 @@ "postfix": false, "binop": null }, - "start": 9680, - "end": 9681, + "start": 9938, + "end": 9939, "loc": { "start": { - "line": 291, - "column": 15 + "line": 297, + "column": 7 }, "end": { - "line": 291, - "column": 16 + "line": 297, + "column": 8 } } }, @@ -79102,51 +80783,49 @@ "postfix": false, "binop": null }, - "value": "specularColorTexture", - "start": 9681, - "end": 9701, + "value": "textureSetCfg", + "start": 9939, + "end": 9952, "loc": { "start": { - "line": 291, - "column": 16 + "line": 297, + "column": 8 }, "end": { - "line": 291, - "column": 36 + "line": 297, + "column": 21 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 9702, - "end": 9705, + "start": 9952, + "end": 9953, "loc": { "start": { - "line": 291, - "column": 37 + "line": 297, + "column": 21 }, "end": { - "line": 291, - "column": 40 + "line": 297, + "column": 22 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -79154,26 +80833,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 9706, - "end": 9710, + "value": "normalTextureId", + "start": 9953, + "end": 9968, "loc": { "start": { - "line": 291, - "column": 41 + "line": 297, + "column": 22 }, "end": { - "line": 291, - "column": 45 + "line": 297, + "column": 37 } } }, { "type": { - "label": "&&", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -79181,20 +80859,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 6, "updateContext": null }, - "value": "&&", - "start": 9711, - "end": 9713, + "value": "!==", + "start": 9969, + "end": 9972, "loc": { "start": { - "line": 291, - "column": 46 + "line": 297, + "column": 38 }, "end": { - "line": 291, - "column": 48 + "line": 297, + "column": 41 } } }, @@ -79210,23 +80888,23 @@ "postfix": false, "binop": null }, - "value": "specularColorTexture", - "start": 9714, - "end": 9734, + "value": "undefined", + "start": 9973, + "end": 9982, "loc": { "start": { - "line": 291, - "column": 49 + "line": 297, + "column": 42 }, "end": { - "line": 291, - "column": 69 + "line": 297, + "column": 51 } } }, { "type": { - "label": "==/!=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -79234,20 +80912,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 1, "updateContext": null }, - "value": "!==", - "start": 9735, - "end": 9738, + "value": "||", + "start": 9983, + "end": 9985, "loc": { "start": { - "line": 291, - "column": 70 + "line": 297, + "column": 52 }, "end": { - "line": 291, - "column": 73 + "line": 297, + "column": 54 } } }, @@ -79263,23 +80941,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 9739, - "end": 9748, + "value": "textureSetCfg", + "start": 9994, + "end": 10007, "loc": { "start": { - "line": 291, - "column": 74 + "line": 298, + "column": 8 }, "end": { - "line": 291, - "column": 83 + "line": 298, + "column": 21 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -79287,43 +80965,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 9748, - "end": 9749, - "loc": { - "start": { - "line": 291, - "column": 83 - }, - "end": { - "line": 291, - "column": 84 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 9750, - "end": 9751, + "start": 10007, + "end": 10008, "loc": { "start": { - "line": 291, - "column": 85 + "line": 298, + "column": 21 }, "end": { - "line": 291, - "column": 86 + "line": 298, + "column": 22 } } }, @@ -79339,43 +80993,44 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 9768, - "end": 9781, + "value": "occlusionTextureId", + "start": 10008, + "end": 10026, "loc": { "start": { - "line": 292, - "column": 16 + "line": 298, + "column": 22 }, "end": { - "line": 292, - "column": 29 + "line": 298, + "column": 40 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 9781, - "end": 9782, + "value": "!==", + "start": 10027, + "end": 10030, "loc": { "start": { - "line": 292, - "column": 29 + "line": 298, + "column": 41 }, "end": { - "line": 292, - "column": 30 + "line": 298, + "column": 44 } } }, @@ -79391,44 +81046,44 @@ "postfix": false, "binop": null }, - "value": "colorTextureId", - "start": 9782, - "end": 9796, + "value": "undefined", + "start": 10031, + "end": 10040, "loc": { "start": { - "line": 292, - "column": 30 + "line": 298, + "column": 45 }, "end": { - "line": 292, - "column": 44 + "line": 298, + "column": 54 } } }, { "type": { - "label": "=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "=", - "start": 9797, - "end": 9798, + "value": "||", + "start": 10041, + "end": 10043, "loc": { "start": { - "line": 292, - "column": 45 + "line": 298, + "column": 55 }, "end": { - "line": 292, - "column": 46 + "line": 298, + "column": 57 } } }, @@ -79444,17 +81099,17 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 9799, - "end": 9802, + "value": "textureSetCfg", + "start": 10052, + "end": 10065, "loc": { "start": { - "line": 292, - "column": 47 + "line": 299, + "column": 8 }, "end": { - "line": 292, - "column": 50 + "line": 299, + "column": 21 } } }, @@ -79471,16 +81126,16 @@ "binop": null, "updateContext": null }, - "start": 9802, - "end": 9803, + "start": 10065, + "end": 10066, "loc": { "start": { - "line": 292, - "column": 50 + "line": 299, + "column": 21 }, "end": { - "line": 292, - "column": 51 + "line": 299, + "column": 22 } } }, @@ -79496,43 +81151,44 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 9803, - "end": 9811, + "value": "emissiveTextureId", + "start": 10066, + "end": 10083, "loc": { "start": { - "line": 292, - "column": 51 + "line": 299, + "column": 22 }, "end": { - "line": 292, - "column": 59 + "line": 299, + "column": 39 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 9811, - "end": 9812, + "value": "!==", + "start": 10084, + "end": 10087, "loc": { "start": { - "line": 292, - "column": 59 + "line": 299, + "column": 40 }, "end": { - "line": 292, - "column": 60 + "line": 299, + "column": 43 } } }, @@ -79548,43 +81204,44 @@ "postfix": false, "binop": null }, - "value": "textures", - "start": 9812, - "end": 9820, + "value": "undefined", + "start": 10088, + "end": 10097, "loc": { "start": { - "line": 292, - "column": 60 + "line": 299, + "column": 44 }, "end": { - "line": 292, - "column": 68 + "line": 299, + "column": 53 } } }, { "type": { - "label": "[", + "label": "||", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 9820, - "end": 9821, + "value": "||", + "start": 10098, + "end": 10100, "loc": { "start": { - "line": 292, - "column": 68 + "line": 299, + "column": 54 }, "end": { - "line": 292, - "column": 69 + "line": 299, + "column": 56 } } }, @@ -79600,17 +81257,17 @@ "postfix": false, "binop": null }, - "value": "specularColorTexture", - "start": 9821, - "end": 9841, + "value": "textureSetCfg", + "start": 10109, + "end": 10122, "loc": { "start": { - "line": 292, - "column": 69 + "line": 300, + "column": 8 }, "end": { - "line": 292, - "column": 89 + "line": 300, + "column": 21 } } }, @@ -79627,16 +81284,16 @@ "binop": null, "updateContext": null }, - "start": 9841, - "end": 9842, + "start": 10122, + "end": 10123, "loc": { "start": { - "line": 292, - "column": 89 + "line": 300, + "column": 21 }, "end": { - "line": 292, - "column": 90 + "line": 300, + "column": 22 } } }, @@ -79652,69 +81309,97 @@ "postfix": false, "binop": null }, - "value": "index", - "start": 9842, - "end": 9847, + "value": "colorTextureId", + "start": 10123, + "end": 10137, "loc": { "start": { - "line": 292, - "column": 90 + "line": 300, + "column": 22 }, "end": { - "line": 292, - "column": 95 + "line": 300, + "column": 36 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 9847, - "end": 9848, + "value": "!==", + "start": 10138, + "end": 10141, "loc": { "start": { - "line": 292, - "column": 95 + "line": 300, + "column": 37 }, "end": { - "line": 292, - "column": 96 + "line": 300, + "column": 40 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 10142, + "end": 10151, + "loc": { + "start": { + "line": 300, + "column": 41 + }, + "end": { + "line": 300, + "column": 50 + } + } + }, + { + "type": { + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "start": 9848, - "end": 9849, + "value": "||", + "start": 10152, + "end": 10154, "loc": { "start": { - "line": 292, - "column": 96 + "line": 300, + "column": 51 }, "end": { - "line": 292, - "column": 97 + "line": 300, + "column": 53 } } }, @@ -79730,24 +81415,24 @@ "postfix": false, "binop": null }, - "value": "_textureId", - "start": 9849, - "end": 9859, + "value": "textureSetCfg", + "start": 10163, + "end": 10176, "loc": { "start": { - "line": 292, - "column": 97 + "line": 301, + "column": 8 }, "end": { - "line": 292, - "column": 107 + "line": 301, + "column": 21 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -79757,24 +81442,24 @@ "binop": null, "updateContext": null }, - "start": 9859, - "end": 9860, + "start": 10176, + "end": 10177, "loc": { "start": { - "line": 292, - "column": 107 + "line": 301, + "column": 21 }, "end": { - "line": 292, - "column": 108 + "line": 301, + "column": 22 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -79782,49 +81467,52 @@ "postfix": false, "binop": null }, - "start": 9873, - "end": 9874, + "value": "metallicRoughnessTextureId", + "start": 10177, + "end": 10203, "loc": { "start": { - "line": 293, - "column": 12 + "line": 301, + "column": 22 }, "end": { - "line": 293, - "column": 13 + "line": 301, + "column": 48 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 9883, - "end": 9884, + "value": "!==", + "start": 10204, + "end": 10207, "loc": { "start": { - "line": 294, - "column": 8 + "line": 301, + "column": 49 }, "end": { - "line": 294, - "column": 9 + "line": 301, + "column": 52 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -79832,23 +81520,23 @@ "postfix": false, "binop": null }, - "start": 9889, - "end": 9890, + "value": "undefined", + "start": 10208, + "end": 10217, "loc": { "start": { - "line": 295, - "column": 4 + "line": 301, + "column": 53 }, "end": { - "line": 295, - "column": 5 + "line": 301, + "column": 62 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -79856,26 +81544,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 9895, - "end": 9897, + "start": 10217, + "end": 10218, "loc": { "start": { - "line": 296, - "column": 4 + "line": 301, + "column": 62 }, "end": { - "line": 296, - "column": 6 + "line": 301, + "column": 63 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -79885,16 +81571,16 @@ "postfix": false, "binop": null }, - "start": 9898, - "end": 9899, + "start": 10219, + "end": 10220, "loc": { "start": { - "line": 296, - "column": 7 + "line": 301, + "column": 64 }, "end": { - "line": 296, - "column": 8 + "line": 301, + "column": 65 } } }, @@ -79911,15 +81597,15 @@ "binop": null }, "value": "textureSetCfg", - "start": 9899, - "end": 9912, + "start": 10229, + "end": 10242, "loc": { "start": { - "line": 296, + "line": 302, "column": 8 }, "end": { - "line": 296, + "line": 302, "column": 21 } } @@ -79937,15 +81623,15 @@ "binop": null, "updateContext": null }, - "start": 9912, - "end": 9913, + "start": 10242, + "end": 10243, "loc": { "start": { - "line": 296, + "line": 302, "column": 21 }, "end": { - "line": 296, + "line": 302, "column": 22 } } @@ -79962,50 +81648,50 @@ "postfix": false, "binop": null }, - "value": "normalTextureId", - "start": 9913, - "end": 9928, + "value": "textureSetId", + "start": 10243, + "end": 10255, "loc": { "start": { - "line": 296, + "line": 302, "column": 22 }, "end": { - "line": 296, - "column": 37 + "line": 302, + "column": 34 } } }, { "type": { - "label": "==/!=", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 9929, - "end": 9932, + "value": "=", + "start": 10256, + "end": 10257, "loc": { "start": { - "line": 296, - "column": 38 + "line": 302, + "column": 35 }, "end": { - "line": 296, - "column": 41 + "line": 302, + "column": 36 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -80015,51 +81701,50 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 9933, - "end": 9942, + "start": 10258, + "end": 10259, "loc": { "start": { - "line": 296, - "column": 42 + "line": 302, + "column": 37 }, "end": { - "line": 296, - "column": 51 + "line": 302, + "column": 38 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 9943, - "end": 9945, + "value": "textureSet-", + "start": 10259, + "end": 10270, "loc": { "start": { - "line": 296, - "column": 52 + "line": 302, + "column": 38 }, "end": { - "line": 296, - "column": 54 + "line": 302, + "column": 49 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "${", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -80068,43 +81753,16 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 9954, - "end": 9967, - "loc": { - "start": { - "line": 297, - "column": 8 - }, - "end": { - "line": 297, - "column": 21 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 9967, - "end": 9968, + "start": 10270, + "end": 10272, "loc": { "start": { - "line": 297, - "column": 21 + "line": 302, + "column": 49 }, "end": { - "line": 297, - "column": 22 + "line": 302, + "column": 51 } } }, @@ -80120,44 +81778,43 @@ "postfix": false, "binop": null }, - "value": "occlusionTextureId", - "start": 9968, - "end": 9986, + "value": "ctx", + "start": 10272, + "end": 10275, "loc": { "start": { - "line": 297, - "column": 22 + "line": 302, + "column": 51 }, "end": { - "line": 297, - "column": 40 + "line": 302, + "column": 54 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 9987, - "end": 9990, + "start": 10275, + "end": 10276, "loc": { "start": { - "line": 297, - "column": 41 + "line": 302, + "column": 54 }, "end": { - "line": 297, - "column": 44 + "line": 302, + "column": 55 } } }, @@ -80173,52 +81830,51 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 9991, - "end": 10000, + "value": "nextId", + "start": 10276, + "end": 10282, "loc": { "start": { - "line": 297, - "column": 45 + "line": 302, + "column": 55 }, "end": { - "line": 297, - "column": 54 + "line": 302, + "column": 61 } } }, { "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "value": "||", - "start": 10001, - "end": 10003, + "value": "++", + "start": 10282, + "end": 10284, "loc": { "start": { - "line": 297, - "column": 55 + "line": 302, + "column": 61 }, "end": { - "line": 297, - "column": 57 + "line": 302, + "column": 63 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -80226,23 +81882,22 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 10012, - "end": 10025, + "start": 10284, + "end": 10285, "loc": { "start": { - "line": 298, - "column": 8 + "line": 302, + "column": 63 }, "end": { - "line": 298, - "column": 21 + "line": 302, + "column": 64 } } }, { "type": { - "label": ".", + "label": "template", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -80253,22 +81908,23 @@ "binop": null, "updateContext": null }, - "start": 10025, - "end": 10026, + "value": ";", + "start": 10285, + "end": 10286, "loc": { "start": { - "line": 298, - "column": 21 + "line": 302, + "column": 64 }, "end": { - "line": 298, - "column": 22 + "line": 302, + "column": 65 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -80278,44 +81934,16 @@ "postfix": false, "binop": null }, - "value": "emissiveTextureId", - "start": 10026, - "end": 10043, - "loc": { - "start": { - "line": 298, - "column": 22 - }, - "end": { - "line": 298, - "column": 39 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 10044, - "end": 10047, + "start": 10286, + "end": 10287, "loc": { "start": { - "line": 298, - "column": 40 + "line": 302, + "column": 65 }, "end": { - "line": 298, - "column": 43 + "line": 302, + "column": 66 } } }, @@ -80331,44 +81959,43 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 10048, - "end": 10057, + "value": "ctx", + "start": 10296, + "end": 10299, "loc": { "start": { - "line": 298, - "column": 44 + "line": 303, + "column": 8 }, "end": { - "line": 298, - "column": 53 + "line": 303, + "column": 11 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 10058, - "end": 10060, + "start": 10299, + "end": 10300, "loc": { "start": { - "line": 298, - "column": 54 + "line": 303, + "column": 11 }, - "end": { - "line": 298, - "column": 56 + "end": { + "line": 303, + "column": 12 } } }, @@ -80384,17 +82011,17 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 10069, - "end": 10082, + "value": "xktModel", + "start": 10300, + "end": 10308, "loc": { "start": { - "line": 299, - "column": 8 + "line": 303, + "column": 12 }, "end": { - "line": 299, - "column": 21 + "line": 303, + "column": 20 } } }, @@ -80411,16 +82038,16 @@ "binop": null, "updateContext": null }, - "start": 10082, - "end": 10083, + "start": 10308, + "end": 10309, "loc": { "start": { - "line": 299, - "column": 21 + "line": 303, + "column": 20 }, "end": { - "line": 299, - "column": 22 + "line": 303, + "column": 21 } } }, @@ -80436,44 +82063,42 @@ "postfix": false, "binop": null }, - "value": "colorTextureId", - "start": 10083, - "end": 10097, + "value": "createTextureSet", + "start": 10309, + "end": 10325, "loc": { "start": { - "line": 299, - "column": 22 + "line": 303, + "column": 21 }, "end": { - "line": 299, - "column": 36 + "line": 303, + "column": 37 } } }, { "type": { - "label": "==/!=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "!==", - "start": 10098, - "end": 10101, + "start": 10325, + "end": 10326, "loc": { "start": { - "line": 299, + "line": 303, "column": 37 }, "end": { - "line": 299, - "column": 40 + "line": 303, + "column": 38 } } }, @@ -80489,23 +82114,48 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 10102, - "end": 10111, + "value": "textureSetCfg", + "start": 10326, + "end": 10339, "loc": { "start": { - "line": 299, - "column": 41 + "line": 303, + "column": 38 }, "end": { - "line": 299, - "column": 50 + "line": 303, + "column": 51 } } }, { "type": { - "label": "||", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 10339, + "end": 10340, + "loc": { + "start": { + "line": 303, + "column": 51 + }, + "end": { + "line": 303, + "column": 52 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -80513,19 +82163,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 10112, - "end": 10114, + "start": 10340, + "end": 10341, "loc": { "start": { - "line": 299, - "column": 51 + "line": 303, + "column": 52 }, "end": { - "line": 299, + "line": 303, "column": 53 } } @@ -80542,17 +82191,17 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 10123, - "end": 10136, + "value": "ctx", + "start": 10350, + "end": 10353, "loc": { "start": { - "line": 300, + "line": 304, "column": 8 }, "end": { - "line": 300, - "column": 21 + "line": 304, + "column": 11 } } }, @@ -80569,16 +82218,16 @@ "binop": null, "updateContext": null }, - "start": 10136, - "end": 10137, + "start": 10353, + "end": 10354, "loc": { "start": { - "line": 300, - "column": 21 + "line": 304, + "column": 11 }, "end": { - "line": 300, - "column": 22 + "line": 304, + "column": 12 } } }, @@ -80594,44 +82243,43 @@ "postfix": false, "binop": null }, - "value": "metallicRoughnessTextureId", - "start": 10137, - "end": 10163, + "value": "stats", + "start": 10354, + "end": 10359, "loc": { "start": { - "line": 300, - "column": 22 + "line": 304, + "column": 12 }, "end": { - "line": 300, - "column": 48 + "line": 304, + "column": 17 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 10164, - "end": 10167, + "start": 10359, + "end": 10360, "loc": { "start": { - "line": 300, - "column": 49 + "line": 304, + "column": 17 }, "end": { - "line": 300, - "column": 52 + "line": 304, + "column": 18 } } }, @@ -80647,100 +82295,77 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 10168, - "end": 10177, + "value": "numTextureSets", + "start": 10360, + "end": 10374, "loc": { "start": { - "line": 300, - "column": 53 + "line": 304, + "column": 18 }, "end": { - "line": 300, - "column": 62 + "line": 304, + "column": 32 } } }, { "type": { - "label": ")", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 10177, - "end": 10178, - "loc": { - "start": { - "line": 300, - "column": 62 - }, - "end": { - "line": 300, - "column": 63 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 10179, - "end": 10180, + "value": "++", + "start": 10374, + "end": 10376, "loc": { "start": { - "line": 300, - "column": 64 + "line": 304, + "column": 32 }, "end": { - "line": 300, - "column": 65 + "line": 304, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetCfg", - "start": 10189, - "end": 10202, + "start": 10376, + "end": 10377, "loc": { "start": { - "line": 301, - "column": 8 + "line": 304, + "column": 34 }, "end": { - "line": 301, - "column": 21 + "line": 304, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -80750,16 +82375,17 @@ "binop": null, "updateContext": null }, - "start": 10202, - "end": 10203, + "value": "return", + "start": 10386, + "end": 10392, "loc": { "start": { - "line": 301, - "column": 21 + "line": 305, + "column": 8 }, "end": { - "line": 301, - "column": 22 + "line": 305, + "column": 14 } } }, @@ -80775,50 +82401,49 @@ "postfix": false, "binop": null }, - "value": "textureSetId", - "start": 10203, - "end": 10215, + "value": "textureSetCfg", + "start": 10393, + "end": 10406, "loc": { "start": { - "line": 301, - "column": 22 + "line": 305, + "column": 15 }, "end": { - "line": 301, - "column": 34 + "line": 305, + "column": 28 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 10216, - "end": 10217, + "start": 10406, + "end": 10407, "loc": { "start": { - "line": 301, - "column": 35 + "line": 305, + "column": 28 }, "end": { - "line": 301, - "column": 36 + "line": 305, + "column": 29 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -80828,23 +82453,24 @@ "postfix": false, "binop": null }, - "start": 10218, - "end": 10219, + "value": "textureSetId", + "start": 10407, + "end": 10419, "loc": { "start": { - "line": 301, - "column": 37 + "line": 305, + "column": 29 }, "end": { - "line": 301, - "column": 38 + "line": 305, + "column": 41 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -80854,25 +82480,24 @@ "binop": null, "updateContext": null }, - "value": "textureSet-", - "start": 10219, - "end": 10230, + "start": 10419, + "end": 10420, "loc": { "start": { - "line": 301, - "column": 38 + "line": 305, + "column": 41 }, "end": { - "line": 301, - "column": 49 + "line": 305, + "column": 42 } } }, { "type": { - "label": "${", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -80880,50 +82505,53 @@ "postfix": false, "binop": null }, - "start": 10230, - "end": 10232, + "start": 10425, + "end": 10426, "loc": { "start": { - "line": 301, - "column": 49 + "line": 306, + "column": 4 }, "end": { - "line": 301, - "column": 51 + "line": 306, + "column": 5 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 10232, - "end": 10235, + "value": "return", + "start": 10431, + "end": 10437, "loc": { "start": { - "line": 301, - "column": 51 + "line": 307, + "column": 4 }, "end": { - "line": 301, - "column": 54 + "line": 307, + "column": 10 } } }, { "type": { - "label": ".", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -80932,76 +82560,77 @@ "binop": null, "updateContext": null }, - "start": 10235, - "end": 10236, + "value": "null", + "start": 10438, + "end": 10442, "loc": { "start": { - "line": 301, - "column": 54 + "line": 307, + "column": 11 }, "end": { - "line": 301, - "column": 55 + "line": 307, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "nextId", - "start": 10236, - "end": 10242, + "start": 10442, + "end": 10443, "loc": { "start": { - "line": 301, - "column": 55 + "line": 307, + "column": 15 }, "end": { - "line": 301, - "column": 61 + "line": 307, + "column": 16 } } }, { "type": { - "label": "++/--", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 10242, - "end": 10244, + "start": 10444, + "end": 10445, "loc": { "start": { - "line": 301, - "column": 61 + "line": 308, + "column": 0 }, "end": { - "line": 301, - "column": 63 + "line": 308, + "column": 1 } } }, { "type": { - "label": "}", + "label": "function", + "keyword": "function", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -81009,50 +82638,50 @@ "postfix": false, "binop": null }, - "start": 10244, - "end": 10245, + "value": "function", + "start": 10447, + "end": 10455, "loc": { "start": { - "line": 301, - "column": 63 + "line": 310, + "column": 0 }, "end": { - "line": 301, - "column": 64 + "line": 310, + "column": 8 } } }, { "type": { - "label": "template", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": ";", - "start": 10245, - "end": 10246, + "value": "parseMaterialAttributes", + "start": 10456, + "end": 10479, "loc": { "start": { - "line": 301, - "column": 64 + "line": 310, + "column": 9 }, "end": { - "line": 301, - "column": 65 + "line": 310, + "column": 32 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -81061,16 +82690,16 @@ "postfix": false, "binop": null }, - "start": 10246, - "end": 10247, + "start": 10479, + "end": 10480, "loc": { "start": { - "line": 301, - "column": 65 + "line": 310, + "column": 32 }, "end": { - "line": 301, - "column": 66 + "line": 310, + "column": 33 } } }, @@ -81087,23 +82716,23 @@ "binop": null }, "value": "ctx", - "start": 10256, - "end": 10259, + "start": 10480, + "end": 10483, "loc": { "start": { - "line": 302, - "column": 8 + "line": 310, + "column": 33 }, "end": { - "line": 302, - "column": 11 + "line": 310, + "column": 36 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -81113,16 +82742,16 @@ "binop": null, "updateContext": null }, - "start": 10259, - "end": 10260, + "start": 10483, + "end": 10484, "loc": { "start": { - "line": 302, - "column": 11 + "line": 310, + "column": 36 }, "end": { - "line": 302, - "column": 12 + "line": 310, + "column": 37 } } }, @@ -81138,23 +82767,23 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 10260, - "end": 10268, + "value": "material", + "start": 10485, + "end": 10493, "loc": { "start": { - "line": 302, - "column": 12 + "line": 310, + "column": 38 }, "end": { - "line": 302, - "column": 20 + "line": 310, + "column": 46 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -81162,26 +82791,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10268, - "end": 10269, + "start": 10493, + "end": 10494, "loc": { "start": { - "line": 302, - "column": 20 + "line": 310, + "column": 46 }, "end": { - "line": 302, - "column": 21 + "line": 310, + "column": 47 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -81190,76 +82818,68 @@ "postfix": false, "binop": null }, - "value": "createTextureSet", - "start": 10269, - "end": 10285, + "start": 10495, + "end": 10496, "loc": { "start": { - "line": 302, - "column": 21 + "line": 310, + "column": 48 }, "end": { - "line": 302, - "column": 37 + "line": 310, + "column": 49 } } }, { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 10285, - "end": 10286, + "type": "CommentLine", + "value": " Substitute RGBA for material, to use fast flat shading instead", + "start": 10497, + "end": 10562, "loc": { "start": { - "line": 302, - "column": 37 + "line": 310, + "column": 50 }, "end": { - "line": 302, - "column": 38 + "line": 310, + "column": 115 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetCfg", - "start": 10286, - "end": 10299, + "value": "const", + "start": 10567, + "end": 10572, "loc": { "start": { - "line": 302, - "column": 38 + "line": 311, + "column": 4 }, "end": { - "line": 302, - "column": 51 + "line": 311, + "column": 9 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -81267,42 +82887,44 @@ "postfix": false, "binop": null }, - "start": 10299, - "end": 10300, + "value": "extensions", + "start": 10573, + "end": 10583, "loc": { - "start": { - "line": 302, - "column": 51 + "start": { + "line": 311, + "column": 10 }, "end": { - "line": 302, - "column": 52 + "line": 311, + "column": 20 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 10300, - "end": 10301, + "value": "=", + "start": 10584, + "end": 10585, "loc": { "start": { - "line": 302, - "column": 52 + "line": 311, + "column": 21 }, "end": { - "line": 302, - "column": 53 + "line": 311, + "column": 22 } } }, @@ -81318,17 +82940,17 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 10310, - "end": 10313, + "value": "material", + "start": 10586, + "end": 10594, "loc": { "start": { - "line": 303, - "column": 8 + "line": 311, + "column": 23 }, "end": { - "line": 303, - "column": 11 + "line": 311, + "column": 31 } } }, @@ -81345,16 +82967,16 @@ "binop": null, "updateContext": null }, - "start": 10313, - "end": 10314, + "start": 10594, + "end": 10595, "loc": { "start": { - "line": 303, - "column": 11 + "line": 311, + "column": 31 }, "end": { - "line": 303, - "column": 12 + "line": 311, + "column": 32 } } }, @@ -81370,24 +82992,24 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 10314, - "end": 10319, + "value": "extensions", + "start": 10595, + "end": 10605, "loc": { "start": { - "line": 303, - "column": 12 + "line": 311, + "column": 32 }, "end": { - "line": 303, - "column": 17 + "line": 311, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -81397,122 +83019,122 @@ "binop": null, "updateContext": null }, - "start": 10319, - "end": 10320, + "start": 10605, + "end": 10606, "loc": { "start": { - "line": 303, - "column": 17 + "line": 311, + "column": 42 }, "end": { - "line": 303, - "column": 18 + "line": 311, + "column": 43 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "numTextureSets", - "start": 10320, - "end": 10334, + "value": "const", + "start": 10611, + "end": 10616, "loc": { "start": { - "line": 303, - "column": 18 + "line": 312, + "column": 4 }, "end": { - "line": 303, - "column": 32 + "line": 312, + "column": 9 } } }, { "type": { - "label": "++/--", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 10334, - "end": 10336, + "value": "materialAttributes", + "start": 10617, + "end": 10635, "loc": { "start": { - "line": 303, - "column": 32 + "line": 312, + "column": 10 }, "end": { - "line": 303, - "column": 34 + "line": 312, + "column": 28 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 10336, - "end": 10337, + "value": "=", + "start": 10636, + "end": 10637, "loc": { "start": { - "line": 303, - "column": 34 + "line": 312, + "column": 29 }, "end": { - "line": 303, - "column": 35 + "line": 312, + "column": 30 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 10346, - "end": 10352, + "start": 10638, + "end": 10639, "loc": { "start": { - "line": 304, - "column": 8 + "line": 312, + "column": 31 }, "end": { - "line": 304, - "column": 14 + "line": 312, + "column": 32 } } }, @@ -81528,24 +83150,24 @@ "postfix": false, "binop": null }, - "value": "textureSetCfg", - "start": 10353, - "end": 10366, + "value": "color", + "start": 10648, + "end": 10653, "loc": { "start": { - "line": 304, - "column": 15 + "line": 313, + "column": 8 }, "end": { - "line": 304, - "column": 28 + "line": 313, + "column": 13 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -81555,76 +83177,78 @@ "binop": null, "updateContext": null }, - "start": 10366, - "end": 10367, + "start": 10653, + "end": 10654, "loc": { "start": { - "line": 304, - "column": 28 + "line": 313, + "column": 13 }, "end": { - "line": 304, - "column": 29 + "line": 313, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "new", + "keyword": "new", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "textureSetId", - "start": 10367, - "end": 10379, + "value": "new", + "start": 10655, + "end": 10658, "loc": { "start": { - "line": 304, - "column": 29 + "line": 313, + "column": 15 }, "end": { - "line": 304, - "column": 41 + "line": 313, + "column": 18 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10379, - "end": 10380, + "value": "Float32Array", + "start": 10659, + "end": 10671, "loc": { "start": { - "line": 304, - "column": 41 + "line": 313, + "column": 19 }, "end": { - "line": 304, - "column": 42 + "line": 313, + "column": 31 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -81632,25 +83256,24 @@ "postfix": false, "binop": null }, - "start": 10385, - "end": 10386, + "start": 10671, + "end": 10672, "loc": { "start": { - "line": 305, - "column": 4 + "line": 313, + "column": 31 }, "end": { - "line": 305, - "column": 5 + "line": 313, + "column": 32 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -81659,24 +83282,22 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 10391, - "end": 10397, + "start": 10672, + "end": 10673, "loc": { "start": { - "line": 306, - "column": 4 + "line": 313, + "column": 32 }, "end": { - "line": 306, - "column": 10 + "line": 313, + "column": 33 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -81687,23 +83308,23 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 10398, - "end": 10402, + "value": 1, + "start": 10673, + "end": 10674, "loc": { "start": { - "line": 306, - "column": 11 + "line": 313, + "column": 33 }, "end": { - "line": 306, - "column": 15 + "line": 313, + "column": 34 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -81714,74 +83335,75 @@ "binop": null, "updateContext": null }, - "start": 10402, - "end": 10403, + "start": 10674, + "end": 10675, "loc": { "start": { - "line": 306, - "column": 15 + "line": 313, + "column": 34 }, "end": { - "line": 306, - "column": 16 + "line": 313, + "column": 35 } } }, { "type": { - "label": "}", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10404, - "end": 10405, + "value": 1, + "start": 10676, + "end": 10677, "loc": { "start": { - "line": 307, - "column": 0 + "line": 313, + "column": 36 }, "end": { - "line": 307, - "column": 1 + "line": 313, + "column": 37 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 10407, - "end": 10415, + "start": 10677, + "end": 10678, "loc": { "start": { - "line": 309, - "column": 0 + "line": 313, + "column": 37 }, "end": { - "line": 309, - "column": 8 + "line": 313, + "column": 38 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -81789,50 +83411,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseMaterialAttributes", - "start": 10416, - "end": 10439, + "value": 1, + "start": 10679, + "end": 10680, "loc": { "start": { - "line": 309, - "column": 9 + "line": 313, + "column": 39 }, "end": { - "line": 309, - "column": 32 + "line": 313, + "column": 40 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10439, - "end": 10440, + "start": 10680, + "end": 10681, "loc": { "start": { - "line": 309, - "column": 32 + "line": 313, + "column": 40 }, "end": { - "line": 309, - "column": 33 + "line": 313, + "column": 41 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -81840,26 +83464,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 10440, - "end": 10443, + "value": 1, + "start": 10682, + "end": 10683, "loc": { "start": { - "line": 309, - "column": 33 + "line": 313, + "column": 42 }, "end": { - "line": 309, - "column": 36 + "line": 313, + "column": 43 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -81869,24 +83494,24 @@ "binop": null, "updateContext": null }, - "start": 10443, - "end": 10444, + "start": 10683, + "end": 10684, "loc": { "start": { - "line": 309, - "column": 36 + "line": 313, + "column": 43 }, "end": { - "line": 309, - "column": 37 + "line": 313, + "column": 44 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -81894,49 +83519,49 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 10445, - "end": 10453, + "start": 10684, + "end": 10685, "loc": { "start": { - "line": 309, - "column": 38 + "line": 313, + "column": 44 }, "end": { - "line": 309, - "column": 46 + "line": 313, + "column": 45 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10453, - "end": 10454, + "start": 10685, + "end": 10686, "loc": { "start": { - "line": 309, - "column": 46 + "line": 313, + "column": 45 }, "end": { - "line": 309, - "column": 47 + "line": 313, + "column": 46 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -81945,40 +83570,24 @@ "postfix": false, "binop": null }, - "start": 10455, - "end": 10456, - "loc": { - "start": { - "line": 309, - "column": 48 - }, - "end": { - "line": 309, - "column": 49 - } - } - }, - { - "type": "CommentLine", - "value": " Substitute RGBA for material, to use fast flat shading instead", - "start": 10457, - "end": 10522, + "value": "opacity", + "start": 10695, + "end": 10702, "loc": { "start": { - "line": 309, - "column": 50 + "line": 314, + "column": 8 }, "end": { - "line": 309, - "column": 115 + "line": 314, + "column": 15 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -81988,23 +83597,22 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 10527, - "end": 10532, + "start": 10702, + "end": 10703, "loc": { "start": { - "line": 310, - "column": 4 + "line": 314, + "column": 15 }, "end": { - "line": 310, - "column": 9 + "line": 314, + "column": 16 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -82012,46 +83620,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "extensions", - "start": 10533, - "end": 10543, + "value": 1, + "start": 10704, + "end": 10705, "loc": { "start": { - "line": 310, - "column": 10 + "line": 314, + "column": 17 }, "end": { - "line": 310, - "column": 20 + "line": 314, + "column": 18 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 10544, - "end": 10545, + "start": 10705, + "end": 10706, "loc": { "start": { - "line": 310, - "column": 21 + "line": 314, + "column": 18 }, "end": { - "line": 310, - "column": 22 + "line": 314, + "column": 19 } } }, @@ -82067,24 +83675,24 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 10546, - "end": 10554, + "value": "metallic", + "start": 10715, + "end": 10723, "loc": { "start": { - "line": 310, - "column": 23 + "line": 315, + "column": 8 }, "end": { - "line": 310, - "column": 31 + "line": 315, + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -82094,22 +83702,22 @@ "binop": null, "updateContext": null }, - "start": 10554, - "end": 10555, + "start": 10723, + "end": 10724, "loc": { "start": { - "line": 310, - "column": 31 + "line": 315, + "column": 16 }, "end": { - "line": 310, - "column": 32 + "line": 315, + "column": 17 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -82117,25 +83725,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "extensions", - "start": 10555, - "end": 10565, + "value": 0, + "start": 10725, + "end": 10726, "loc": { "start": { - "line": 310, - "column": 32 + "line": 315, + "column": 18 }, "end": { - "line": 310, - "column": 42 + "line": 315, + "column": 19 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -82146,105 +83755,103 @@ "binop": null, "updateContext": null }, - "start": 10565, - "end": 10566, + "start": 10726, + "end": 10727, "loc": { "start": { - "line": 310, - "column": 42 + "line": 315, + "column": 19 }, "end": { - "line": 310, - "column": 43 + "line": 315, + "column": 20 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 10571, - "end": 10576, + "value": "roughness", + "start": 10736, + "end": 10745, "loc": { "start": { - "line": 311, - "column": 4 + "line": 316, + "column": 8 }, "end": { - "line": 311, - "column": 9 + "line": 316, + "column": 17 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ":", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "materialAttributes", - "start": 10577, - "end": 10595, + "start": 10745, + "end": 10746, "loc": { "start": { - "line": 311, - "column": 10 + "line": 316, + "column": 17 }, "end": { - "line": 311, - "column": 28 + "line": 316, + "column": 18 } } }, { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "type": { + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 10596, - "end": 10597, + "value": 1, + "start": 10747, + "end": 10748, "loc": { "start": { - "line": 311, - "column": 29 + "line": 316, + "column": 19 }, "end": { - "line": 311, - "column": 30 + "line": 316, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82252,49 +83859,50 @@ "postfix": false, "binop": null }, - "start": 10598, - "end": 10599, + "start": 10753, + "end": 10754, "loc": { "start": { - "line": 311, - "column": 31 + "line": 317, + "column": 4 }, "end": { - "line": 311, - "column": 32 + "line": 317, + "column": 5 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "color", - "start": 10608, - "end": 10613, + "start": 10754, + "end": 10755, "loc": { "start": { - "line": 312, - "column": 8 + "line": 317, + "column": 5 }, "end": { - "line": 312, - "column": 13 + "line": 317, + "column": 6 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -82304,23 +83912,23 @@ "binop": null, "updateContext": null }, - "start": 10613, - "end": 10614, + "value": "if", + "start": 10760, + "end": 10762, "loc": { "start": { - "line": 312, - "column": 13 + "line": 318, + "column": 4 }, "end": { - "line": 312, - "column": 14 + "line": 318, + "column": 6 } } }, { "type": { - "label": "new", - "keyword": "new", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -82328,20 +83936,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "new", - "start": 10615, - "end": 10618, + "start": 10763, + "end": 10764, "loc": { "start": { - "line": 312, - "column": 15 + "line": 318, + "column": 7 }, "end": { - "line": 312, - "column": 18 + "line": 318, + "column": 8 } } }, @@ -82357,25 +83963,25 @@ "postfix": false, "binop": null }, - "value": "Float32Array", - "start": 10619, - "end": 10631, + "value": "extensions", + "start": 10764, + "end": 10774, "loc": { "start": { - "line": 312, - "column": 19 + "line": 318, + "column": 8 }, "end": { - "line": 312, - "column": 31 + "line": 318, + "column": 18 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82383,22 +83989,22 @@ "postfix": false, "binop": null }, - "start": 10631, - "end": 10632, + "start": 10774, + "end": 10775, "loc": { "start": { - "line": 312, - "column": 31 + "line": 318, + "column": 18 }, "end": { - "line": 312, - "column": 32 + "line": 318, + "column": 19 } } }, { "type": { - "label": "[", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -82406,27 +84012,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10632, - "end": 10633, + "start": 10776, + "end": 10777, "loc": { "start": { - "line": 312, - "column": 32 + "line": 318, + "column": 20 }, "end": { - "line": 312, - "column": 33 + "line": 318, + "column": 21 } } }, { "type": { - "label": "num", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82435,103 +84041,103 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 10633, - "end": 10634, + "value": "const", + "start": 10786, + "end": 10791, "loc": { "start": { - "line": 312, - "column": 33 + "line": 319, + "column": 8 }, "end": { - "line": 312, - "column": 34 + "line": 319, + "column": 13 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10634, - "end": 10635, + "value": "specularPBR", + "start": 10792, + "end": 10803, "loc": { "start": { - "line": 312, - "column": 34 + "line": 319, + "column": 14 }, "end": { - "line": 312, - "column": 35 + "line": 319, + "column": 25 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 10636, - "end": 10637, + "value": "=", + "start": 10804, + "end": 10805, "loc": { "start": { - "line": 312, - "column": 36 + "line": 319, + "column": 26 }, "end": { - "line": 312, - "column": 37 + "line": 319, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10637, - "end": 10638, + "value": "extensions", + "start": 10806, + "end": 10816, "loc": { "start": { - "line": 312, - "column": 37 + "line": 319, + "column": 28 }, "end": { - "line": 312, + "line": 319, "column": 38 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -82541,25 +84147,24 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 10639, - "end": 10640, + "start": 10816, + "end": 10817, "loc": { "start": { - "line": 312, - "column": 39 + "line": 319, + "column": 38 }, "end": { - "line": 312, - "column": 40 + "line": 319, + "column": 39 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82568,24 +84173,25 @@ "binop": null, "updateContext": null }, - "start": 10640, - "end": 10641, + "value": "KHR_materials_pbrSpecularGlossiness", + "start": 10817, + "end": 10854, "loc": { "start": { - "line": 312, - "column": 40 + "line": 319, + "column": 39 }, "end": { - "line": 312, - "column": 41 + "line": 319, + "column": 76 } } }, { "type": { - "label": "num", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82594,24 +84200,23 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 10642, - "end": 10643, + "start": 10854, + "end": 10855, "loc": { "start": { - "line": 312, - "column": 42 + "line": 319, + "column": 76 }, "end": { - "line": 312, - "column": 43 + "line": 319, + "column": 77 } } }, { "type": { - "label": "]", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -82621,22 +84226,23 @@ "binop": null, "updateContext": null }, - "start": 10643, - "end": 10644, + "start": 10855, + "end": 10856, "loc": { "start": { - "line": 312, - "column": 43 + "line": 319, + "column": 77 }, "end": { - "line": 312, - "column": 44 + "line": 319, + "column": 78 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -82644,44 +84250,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10644, - "end": 10645, + "value": "if", + "start": 10865, + "end": 10867, "loc": { "start": { - "line": 312, - "column": 44 + "line": 320, + "column": 8 }, "end": { - "line": 312, - "column": 45 + "line": 320, + "column": 10 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10645, - "end": 10646, + "start": 10868, + "end": 10869, "loc": { "start": { - "line": 312, - "column": 45 + "line": 320, + "column": 11 }, "end": { - "line": 312, - "column": 46 + "line": 320, + "column": 12 } } }, @@ -82697,77 +84304,75 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 10655, - "end": 10662, + "value": "specularPBR", + "start": 10869, + "end": 10880, "loc": { "start": { - "line": 313, - "column": 8 + "line": 320, + "column": 12 }, "end": { - "line": 313, - "column": 15 + "line": 320, + "column": 23 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10662, - "end": 10663, + "start": 10880, + "end": 10881, "loc": { "start": { - "line": 313, - "column": 15 + "line": 320, + "column": 23 }, "end": { - "line": 313, - "column": 16 + "line": 320, + "column": 24 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 10664, - "end": 10665, + "start": 10882, + "end": 10883, "loc": { "start": { - "line": 313, - "column": 17 + "line": 320, + "column": 25 }, "end": { - "line": 313, - "column": 18 + "line": 320, + "column": 26 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -82777,16 +84382,17 @@ "binop": null, "updateContext": null }, - "start": 10665, - "end": 10666, + "value": "const", + "start": 10896, + "end": 10901, "loc": { "start": { - "line": 313, - "column": 18 + "line": 321, + "column": 12 }, "end": { - "line": 313, - "column": 19 + "line": 321, + "column": 17 } } }, @@ -82802,49 +84408,50 @@ "postfix": false, "binop": null }, - "value": "metallic", - "start": 10675, - "end": 10683, + "value": "diffuseFactor", + "start": 10902, + "end": 10915, "loc": { "start": { - "line": 314, - "column": 8 + "line": 321, + "column": 18 }, "end": { - "line": 314, - "column": 16 + "line": 321, + "column": 31 } } }, { "type": { - "label": ":", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 10683, - "end": 10684, + "value": "=", + "start": 10916, + "end": 10917, "loc": { "start": { - "line": 314, - "column": 16 + "line": 321, + "column": 32 }, "end": { - "line": 314, - "column": 17 + "line": 321, + "column": 33 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -82852,27 +84459,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 10685, - "end": 10686, + "value": "specularPBR", + "start": 10918, + "end": 10929, "loc": { "start": { - "line": 314, - "column": 18 + "line": 321, + "column": 34 }, "end": { - "line": 314, - "column": 19 + "line": 321, + "column": 45 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -82882,16 +84488,16 @@ "binop": null, "updateContext": null }, - "start": 10686, - "end": 10687, + "start": 10929, + "end": 10930, "loc": { "start": { - "line": 314, - "column": 19 + "line": 321, + "column": 45 }, "end": { - "line": 314, - "column": 20 + "line": 321, + "column": 46 } } }, @@ -82907,23 +84513,23 @@ "postfix": false, "binop": null }, - "value": "roughness", - "start": 10696, - "end": 10705, + "value": "diffuseFactor", + "start": 10930, + "end": 10943, "loc": { "start": { - "line": 315, - "column": 8 + "line": 321, + "column": 46 }, "end": { - "line": 315, - "column": 17 + "line": 321, + "column": 59 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -82934,24 +84540,25 @@ "binop": null, "updateContext": null }, - "start": 10705, - "end": 10706, + "start": 10943, + "end": 10944, "loc": { "start": { - "line": 315, - "column": 17 + "line": 321, + "column": 59 }, "end": { - "line": 315, - "column": 18 + "line": 321, + "column": 60 } } }, { "type": { - "label": "num", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -82960,127 +84567,102 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 10707, - "end": 10708, - "loc": { - "start": { - "line": 315, - "column": 19 - }, - "end": { - "line": 315, - "column": 20 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 10713, - "end": 10714, + "value": "if", + "start": 10957, + "end": 10959, "loc": { "start": { - "line": 316, - "column": 4 + "line": 322, + "column": 12 }, "end": { - "line": 316, - "column": 5 + "line": 322, + "column": 14 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10714, - "end": 10715, + "start": 10960, + "end": 10961, "loc": { "start": { - "line": 316, - "column": 5 + "line": 322, + "column": 15 }, "end": { - "line": 316, - "column": 6 + "line": 322, + "column": 16 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 10720, - "end": 10722, + "value": "diffuseFactor", + "start": 10961, + "end": 10974, "loc": { "start": { - "line": 317, - "column": 4 + "line": 322, + "column": 16 }, "end": { - "line": 317, - "column": 6 + "line": 322, + "column": 29 } } }, { "type": { - "label": "(", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 10723, - "end": 10724, + "value": "!==", + "start": 10975, + "end": 10978, "loc": { "start": { - "line": 317, - "column": 7 + "line": 322, + "column": 30 }, "end": { - "line": 317, - "column": 8 + "line": 322, + "column": 33 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -83088,51 +84670,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "extensions", - "start": 10724, - "end": 10734, + "value": "null", + "start": 10979, + "end": 10983, "loc": { "start": { - "line": 317, - "column": 8 + "line": 322, + "column": 34 }, - "end": { - "line": 317, - "column": 18 + "end": { + "line": 322, + "column": 38 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 2, + "updateContext": null }, - "start": 10734, - "end": 10735, + "value": "&&", + "start": 10984, + "end": 10986, "loc": { "start": { - "line": 317, - "column": 18 + "line": 322, + "column": 39 }, "end": { - "line": 317, - "column": 19 + "line": 322, + "column": 41 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83141,44 +84726,44 @@ "postfix": false, "binop": null }, - "start": 10736, - "end": 10737, + "value": "diffuseFactor", + "start": 10987, + "end": 11000, "loc": { "start": { - "line": 317, - "column": 20 + "line": 322, + "column": 42 }, "end": { - "line": 317, - "column": 21 + "line": 322, + "column": 55 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "const", - "start": 10746, - "end": 10751, + "value": "!==", + "start": 11001, + "end": 11004, "loc": { "start": { - "line": 318, - "column": 8 + "line": 322, + "column": 56 }, "end": { - "line": 318, - "column": 13 + "line": 322, + "column": 59 } } }, @@ -83194,51 +84779,49 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 10752, - "end": 10763, + "value": "undefined", + "start": 11005, + "end": 11014, "loc": { "start": { - "line": 318, - "column": 14 + "line": 322, + "column": 60 }, "end": { - "line": 318, - "column": 25 + "line": 322, + "column": 69 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 10764, - "end": 10765, + "start": 11014, + "end": 11015, "loc": { "start": { - "line": 318, - "column": 26 + "line": 322, + "column": 69 }, "end": { - "line": 318, - "column": 27 + "line": 322, + "column": 70 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83247,51 +84830,50 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 10766, - "end": 10776, + "start": 11016, + "end": 11017, "loc": { "start": { - "line": 318, - "column": 28 + "line": 322, + "column": 71 }, "end": { - "line": 318, - "column": 38 + "line": 322, + "column": 72 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10776, - "end": 10777, + "value": "materialAttributes", + "start": 11034, + "end": 11052, "loc": { "start": { - "line": 318, - "column": 38 + "line": 323, + "column": 16 }, "end": { - "line": 318, - "column": 39 + "line": 323, + "column": 34 } } }, { "type": { - "label": "string", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83300,50 +84882,49 @@ "binop": null, "updateContext": null }, - "value": "KHR_materials_pbrSpecularGlossiness", - "start": 10777, - "end": 10814, + "start": 11052, + "end": 11053, "loc": { "start": { - "line": 318, - "column": 39 + "line": 323, + "column": 34 }, "end": { - "line": 318, - "column": 76 + "line": 323, + "column": 35 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 10814, - "end": 10815, + "value": "color", + "start": 11053, + "end": 11058, "loc": { "start": { - "line": 318, - "column": 76 + "line": 323, + "column": 35 }, "end": { - "line": 318, - "column": 77 + "line": 323, + "column": 40 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -83353,44 +84934,42 @@ "binop": null, "updateContext": null }, - "start": 10815, - "end": 10816, + "start": 11058, + "end": 11059, "loc": { "start": { - "line": 318, - "column": 77 + "line": 323, + "column": 40 }, "end": { - "line": 318, - "column": 78 + "line": 323, + "column": 41 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 10825, - "end": 10827, + "value": "set", + "start": 11059, + "end": 11062, "loc": { "start": { - "line": 319, - "column": 8 + "line": 323, + "column": 41 }, "end": { - "line": 319, - "column": 10 + "line": 323, + "column": 44 } } }, @@ -83406,16 +84985,16 @@ "postfix": false, "binop": null }, - "start": 10828, - "end": 10829, + "start": 11062, + "end": 11063, "loc": { "start": { - "line": 319, - "column": 11 + "line": 323, + "column": 44 }, "end": { - "line": 319, - "column": 12 + "line": 323, + "column": 45 } } }, @@ -83431,17 +85010,17 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 10829, - "end": 10840, + "value": "diffuseFactor", + "start": 11063, + "end": 11076, "loc": { "start": { - "line": 319, - "column": 12 + "line": 323, + "column": 45 }, "end": { - "line": 319, - "column": 23 + "line": 323, + "column": 58 } } }, @@ -83457,48 +85036,48 @@ "postfix": false, "binop": null }, - "start": 10840, - "end": 10841, + "start": 11076, + "end": 11077, "loc": { "start": { - "line": 319, - "column": 23 + "line": 323, + "column": 58 }, "end": { - "line": 319, - "column": 24 + "line": 323, + "column": 59 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10842, - "end": 10843, + "start": 11077, + "end": 11078, "loc": { "start": { - "line": 319, - "column": 25 + "line": 323, + "column": 59 }, "end": { - "line": 319, - "column": 26 + "line": 323, + "column": 60 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83506,28 +85085,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 10856, - "end": 10861, + "start": 11091, + "end": 11092, "loc": { "start": { - "line": 320, + "line": 324, "column": 12 }, "end": { - "line": 320, - "column": 17 + "line": 324, + "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83535,44 +85112,44 @@ "postfix": false, "binop": null }, - "value": "diffuseFactor", - "start": 10862, - "end": 10875, + "start": 11101, + "end": 11102, "loc": { "start": { - "line": 320, - "column": 18 + "line": 325, + "column": 8 }, "end": { - "line": 320, - "column": 31 + "line": 325, + "column": 9 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 10876, - "end": 10877, + "value": "const", + "start": 11111, + "end": 11116, "loc": { "start": { - "line": 320, - "column": 32 + "line": 326, + "column": 8 }, "end": { - "line": 320, - "column": 33 + "line": 326, + "column": 13 } } }, @@ -83588,43 +85165,44 @@ "postfix": false, "binop": null }, - "value": "specularPBR", - "start": 10878, - "end": 10889, + "value": "common", + "start": 11117, + "end": 11123, "loc": { "start": { - "line": 320, - "column": 34 + "line": 326, + "column": 14 }, "end": { - "line": 320, - "column": 45 + "line": 326, + "column": 20 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 10889, - "end": 10890, + "value": "=", + "start": 11124, + "end": 11125, "loc": { "start": { - "line": 320, - "column": 45 + "line": 326, + "column": 21 }, "end": { - "line": 320, - "column": 46 + "line": 326, + "column": 22 } } }, @@ -83640,25 +85218,25 @@ "postfix": false, "binop": null }, - "value": "diffuseFactor", - "start": 10890, - "end": 10903, + "value": "extensions", + "start": 11126, + "end": 11136, "loc": { "start": { - "line": 320, - "column": 46 + "line": 326, + "column": 23 }, "end": { - "line": 320, - "column": 59 + "line": 326, + "column": 33 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83667,25 +85245,24 @@ "binop": null, "updateContext": null }, - "start": 10903, - "end": 10904, + "start": 11136, + "end": 11137, "loc": { "start": { - "line": 320, - "column": 59 + "line": 326, + "column": 33 }, "end": { - "line": 320, - "column": 60 + "line": 326, + "column": 34 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83694,74 +85271,49 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 10917, - "end": 10919, - "loc": { - "start": { - "line": 321, - "column": 12 - }, - "end": { - "line": 321, - "column": 14 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 10920, - "end": 10921, + "value": "KHR_materials_common", + "start": 11137, + "end": 11159, "loc": { "start": { - "line": 321, - "column": 15 + "line": 326, + "column": 34 }, "end": { - "line": 321, - "column": 16 + "line": 326, + "column": 56 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "diffuseFactor", - "start": 10921, - "end": 10934, + "start": 11159, + "end": 11160, "loc": { "start": { - "line": 321, - "column": 16 + "line": 326, + "column": 56 }, "end": { - "line": 321, - "column": 29 + "line": 326, + "column": 57 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -83769,29 +85321,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 10935, - "end": 10938, + "start": 11160, + "end": 11161, "loc": { "start": { - "line": 321, - "column": 30 + "line": 326, + "column": 57 }, "end": { - "line": 321, - "column": 33 + "line": 326, + "column": 58 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -83800,44 +85351,42 @@ "binop": null, "updateContext": null }, - "value": "null", - "start": 10939, - "end": 10943, + "value": "if", + "start": 11170, + "end": 11172, "loc": { "start": { - "line": 321, - "column": 34 + "line": 327, + "column": 8 }, "end": { - "line": 321, - "column": 38 + "line": 327, + "column": 10 } } }, { "type": { - "label": "&&", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 10944, - "end": 10946, + "start": 11173, + "end": 11174, "loc": { "start": { - "line": 321, - "column": 39 + "line": 327, + "column": 11 }, "end": { - "line": 321, - "column": 41 + "line": 327, + "column": 12 } } }, @@ -83853,51 +85402,49 @@ "postfix": false, "binop": null }, - "value": "diffuseFactor", - "start": 10947, - "end": 10960, + "value": "common", + "start": 11174, + "end": 11180, "loc": { "start": { - "line": 321, - "column": 42 + "line": 327, + "column": 12 }, "end": { - "line": 321, - "column": 55 + "line": 327, + "column": 18 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "!==", - "start": 10961, - "end": 10964, + "start": 11180, + "end": 11181, "loc": { "start": { - "line": 321, - "column": 56 + "line": 327, + "column": 18 }, "end": { - "line": 321, - "column": 59 + "line": 327, + "column": 19 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -83906,23 +85453,23 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 10965, - "end": 10974, + "start": 11182, + "end": 11183, "loc": { "start": { - "line": 321, - "column": 60 + "line": 327, + "column": 20 }, "end": { - "line": 321, - "column": 69 + "line": 327, + "column": 21 } } }, { "type": { - "label": ")", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -83930,43 +85477,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 10974, - "end": 10975, - "loc": { - "start": { - "line": 321, - "column": 69 - }, - "end": { - "line": 321, - "column": 70 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 10976, - "end": 10977, + "value": "const", + "start": 11196, + "end": 11201, "loc": { "start": { - "line": 321, - "column": 71 + "line": 328, + "column": 12 }, "end": { - "line": 321, - "column": 72 + "line": 328, + "column": 17 } } }, @@ -83982,43 +85506,44 @@ "postfix": false, "binop": null }, - "value": "materialAttributes", - "start": 10994, - "end": 11012, + "value": "technique", + "start": 11202, + "end": 11211, "loc": { "start": { - "line": 322, - "column": 16 + "line": 328, + "column": 18 }, "end": { - "line": 322, - "column": 34 + "line": 328, + "column": 27 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 11012, - "end": 11013, + "value": "=", + "start": 11212, + "end": 11213, "loc": { "start": { - "line": 322, - "column": 34 + "line": 328, + "column": 28 }, "end": { - "line": 322, - "column": 35 + "line": 328, + "column": 29 } } }, @@ -84034,17 +85559,17 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 11013, - "end": 11018, + "value": "common", + "start": 11214, + "end": 11220, "loc": { "start": { - "line": 322, - "column": 35 + "line": 328, + "column": 30 }, "end": { - "line": 322, - "column": 40 + "line": 328, + "column": 36 } } }, @@ -84061,16 +85586,16 @@ "binop": null, "updateContext": null }, - "start": 11018, - "end": 11019, + "start": 11220, + "end": 11221, "loc": { "start": { - "line": 322, - "column": 40 + "line": 328, + "column": 36 }, "end": { - "line": 322, - "column": 41 + "line": 328, + "column": 37 } } }, @@ -84086,76 +85611,79 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 11019, - "end": 11022, + "value": "technique", + "start": 11221, + "end": 11230, "loc": { "start": { - "line": 322, - "column": 41 + "line": 328, + "column": 37 }, "end": { - "line": 322, - "column": 44 + "line": 328, + "column": 46 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11022, - "end": 11023, + "start": 11230, + "end": 11231, "loc": { "start": { - "line": 322, - "column": 44 + "line": 328, + "column": 46 }, "end": { - "line": 322, - "column": 45 + "line": 328, + "column": 47 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "diffuseFactor", - "start": 11023, - "end": 11036, + "value": "const", + "start": 11244, + "end": 11249, "loc": { "start": { - "line": 322, - "column": 45 + "line": 329, + "column": 12 }, "end": { - "line": 322, - "column": 58 + "line": 329, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84163,75 +85691,52 @@ "postfix": false, "binop": null }, - "start": 11036, - "end": 11037, + "value": "values", + "start": 11250, + "end": 11256, "loc": { "start": { - "line": 322, - "column": 58 + "line": 329, + "column": 18 }, "end": { - "line": 322, - "column": 59 + "line": 329, + "column": 24 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 11037, - "end": 11038, - "loc": { - "start": { - "line": 322, - "column": 59 - }, - "end": { - "line": 322, - "column": 60 - } - } - }, - { - "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 11051, - "end": 11052, + "value": "=", + "start": 11257, + "end": 11258, "loc": { "start": { - "line": 323, - "column": 12 + "line": 329, + "column": 25 }, "end": { - "line": 323, - "column": 13 + "line": 329, + "column": 26 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84239,23 +85744,23 @@ "postfix": false, "binop": null }, - "start": 11061, - "end": 11062, + "value": "common", + "start": 11259, + "end": 11265, "loc": { "start": { - "line": 324, - "column": 8 + "line": 329, + "column": 27 }, "end": { - "line": 324, - "column": 9 + "line": 329, + "column": 33 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -84266,17 +85771,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 11071, - "end": 11076, + "start": 11265, + "end": 11266, "loc": { "start": { - "line": 325, - "column": 8 + "line": 329, + "column": 33 }, "end": { - "line": 325, - "column": 13 + "line": 329, + "column": 34 } } }, @@ -84292,51 +85796,51 @@ "postfix": false, "binop": null }, - "value": "common", - "start": 11077, - "end": 11083, + "value": "values", + "start": 11266, + "end": 11272, "loc": { "start": { - "line": 325, - "column": 14 + "line": 329, + "column": 34 }, "end": { - "line": 325, - "column": 20 + "line": 329, + "column": 40 } } }, { "type": { - "label": "=", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "=", - "start": 11084, - "end": 11085, + "value": "||", + "start": 11273, + "end": 11275, "loc": { "start": { - "line": 325, - "column": 21 + "line": 329, + "column": 41 }, "end": { - "line": 325, - "column": 22 + "line": 329, + "column": 43 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -84345,51 +85849,49 @@ "postfix": false, "binop": null }, - "value": "extensions", - "start": 11086, - "end": 11096, + "start": 11276, + "end": 11277, "loc": { "start": { - "line": 325, - "column": 23 + "line": 329, + "column": 44 }, "end": { - "line": 325, - "column": 33 + "line": 329, + "column": 45 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11096, - "end": 11097, + "start": 11277, + "end": 11278, "loc": { "start": { - "line": 325, - "column": 33 + "line": 329, + "column": 45 }, "end": { - "line": 325, - "column": 34 + "line": 329, + "column": 46 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -84398,23 +85900,23 @@ "binop": null, "updateContext": null }, - "value": "KHR_materials_common", - "start": 11097, - "end": 11119, + "start": 11278, + "end": 11279, "loc": { "start": { - "line": 325, - "column": 34 + "line": 329, + "column": 46 }, "end": { - "line": 325, - "column": 56 + "line": 329, + "column": 47 } } }, { "type": { - "label": "]", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -84425,77 +85927,77 @@ "binop": null, "updateContext": null }, - "start": 11119, - "end": 11120, + "value": "const", + "start": 11292, + "end": 11297, "loc": { "start": { - "line": 325, - "column": 56 + "line": 330, + "column": 12 }, "end": { - "line": 325, - "column": 57 + "line": 330, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11120, - "end": 11121, + "value": "blinn", + "start": 11298, + "end": 11303, "loc": { "start": { - "line": 325, - "column": 57 + "line": 330, + "column": 18 }, "end": { - "line": 325, - "column": 58 + "line": 330, + "column": 23 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 11130, - "end": 11132, + "value": "=", + "start": 11304, + "end": 11305, "loc": { "start": { - "line": 326, - "column": 8 + "line": 330, + "column": 24 }, "end": { - "line": 326, - "column": 10 + "line": 330, + "column": 25 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -84504,92 +86006,97 @@ "postfix": false, "binop": null }, - "start": 11133, - "end": 11134, + "value": "technique", + "start": 11306, + "end": 11315, "loc": { "start": { - "line": 326, - "column": 11 + "line": 330, + "column": 26 }, "end": { - "line": 326, - "column": 12 + "line": 330, + "column": 35 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "value": "common", - "start": 11134, - "end": 11140, + "value": "===", + "start": 11316, + "end": 11319, "loc": { "start": { - "line": 326, - "column": 12 + "line": 330, + "column": 36 }, "end": { - "line": 326, - "column": 18 + "line": 330, + "column": 39 } } }, { "type": { - "label": ")", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11140, - "end": 11141, + "value": "BLINN", + "start": 11320, + "end": 11327, "loc": { "start": { - "line": 326, - "column": 18 + "line": 330, + "column": 40 }, "end": { - "line": 326, - "column": 19 + "line": 330, + "column": 47 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11142, - "end": 11143, + "start": 11327, + "end": 11328, "loc": { "start": { - "line": 326, - "column": 20 + "line": 330, + "column": 47 }, "end": { - "line": 326, - "column": 21 + "line": 330, + "column": 48 } } }, @@ -84608,15 +86115,15 @@ "updateContext": null }, "value": "const", - "start": 11156, - "end": 11161, + "start": 11341, + "end": 11346, "loc": { "start": { - "line": 327, + "line": 331, "column": 12 }, "end": { - "line": 327, + "line": 331, "column": 17 } } @@ -84633,17 +86140,17 @@ "postfix": false, "binop": null }, - "value": "technique", - "start": 11162, - "end": 11171, + "value": "phong", + "start": 11347, + "end": 11352, "loc": { "start": { - "line": 327, + "line": 331, "column": 18 }, "end": { - "line": 327, - "column": 27 + "line": 331, + "column": 23 } } }, @@ -84661,16 +86168,16 @@ "updateContext": null }, "value": "=", - "start": 11172, - "end": 11173, + "start": 11353, + "end": 11354, "loc": { "start": { - "line": 327, - "column": 28 + "line": 331, + "column": 24 }, "end": { - "line": 327, - "column": 29 + "line": 331, + "column": 25 } } }, @@ -84686,49 +86193,50 @@ "postfix": false, "binop": null }, - "value": "common", - "start": 11174, - "end": 11180, + "value": "technique", + "start": 11355, + "end": 11364, "loc": { "start": { - "line": 327, - "column": 30 + "line": 331, + "column": 26 }, "end": { - "line": 327, - "column": 36 + "line": 331, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 11180, - "end": 11181, + "value": "===", + "start": 11365, + "end": 11368, "loc": { "start": { - "line": 327, + "line": 331, "column": 36 }, "end": { - "line": 327, - "column": 37 + "line": 331, + "column": 39 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -84736,19 +86244,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "technique", - "start": 11181, - "end": 11190, + "value": "PHONG", + "start": 11369, + "end": 11376, "loc": { "start": { - "line": 327, - "column": 37 + "line": 331, + "column": 40 }, "end": { - "line": 327, - "column": 46 + "line": 331, + "column": 47 } } }, @@ -84765,16 +86274,16 @@ "binop": null, "updateContext": null }, - "start": 11190, - "end": 11191, + "start": 11376, + "end": 11377, "loc": { "start": { - "line": 327, - "column": 46 + "line": 331, + "column": 47 }, "end": { - "line": 327, - "column": 47 + "line": 331, + "column": 48 } } }, @@ -84793,15 +86302,15 @@ "updateContext": null }, "value": "const", - "start": 11204, - "end": 11209, + "start": 11390, + "end": 11395, "loc": { "start": { - "line": 328, + "line": 332, "column": 12 }, "end": { - "line": 328, + "line": 332, "column": 17 } } @@ -84818,17 +86327,17 @@ "postfix": false, "binop": null }, - "value": "values", - "start": 11210, - "end": 11216, + "value": "lambert", + "start": 11396, + "end": 11403, "loc": { "start": { - "line": 328, + "line": 332, "column": 18 }, "end": { - "line": 328, - "column": 24 + "line": 332, + "column": 25 } } }, @@ -84846,68 +86355,16 @@ "updateContext": null }, "value": "=", - "start": 11217, - "end": 11218, + "start": 11404, + "end": 11405, "loc": { "start": { - "line": 328, - "column": 25 - }, - "end": { - "line": 328, + "line": 332, "column": 26 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "common", - "start": 11219, - "end": 11225, - "loc": { - "start": { - "line": 328, - "column": 27 - }, - "end": { - "line": 328, - "column": 33 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 11225, - "end": 11226, - "loc": { - "start": { - "line": 328, - "column": 33 }, "end": { - "line": 328, - "column": 34 + "line": 332, + "column": 27 } } }, @@ -84923,23 +86380,23 @@ "postfix": false, "binop": null }, - "value": "values", - "start": 11226, - "end": 11232, + "value": "technique", + "start": 11406, + "end": 11415, "loc": { "start": { - "line": 328, - "column": 34 + "line": 332, + "column": 28 }, "end": { - "line": 328, - "column": 40 + "line": 332, + "column": 37 } } }, { "type": { - "label": "||", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -84947,70 +86404,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": 6, "updateContext": null }, - "value": "||", - "start": 11233, - "end": 11235, - "loc": { - "start": { - "line": 328, - "column": 41 - }, - "end": { - "line": 328, - "column": 43 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 11236, - "end": 11237, + "value": "===", + "start": 11416, + "end": 11419, "loc": { "start": { - "line": 328, - "column": 44 + "line": 332, + "column": 38 }, "end": { - "line": 328, - "column": 45 + "line": 332, + "column": 41 } } }, { "type": { - "label": "}", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11237, - "end": 11238, + "value": "LAMBERT", + "start": 11420, + "end": 11429, "loc": { "start": { - "line": 328, - "column": 45 + "line": 332, + "column": 42 }, "end": { - "line": 328, - "column": 46 + "line": 332, + "column": 51 } } }, @@ -85027,16 +86461,16 @@ "binop": null, "updateContext": null }, - "start": 11238, - "end": 11239, + "start": 11429, + "end": 11430, "loc": { "start": { - "line": 328, - "column": 46 + "line": 332, + "column": 51 }, "end": { - "line": 328, - "column": 47 + "line": 332, + "column": 52 } } }, @@ -85055,15 +86489,15 @@ "updateContext": null }, "value": "const", - "start": 11252, - "end": 11257, + "start": 11443, + "end": 11448, "loc": { "start": { - "line": 329, + "line": 333, "column": 12 }, "end": { - "line": 329, + "line": 333, "column": 17 } } @@ -85080,17 +86514,17 @@ "postfix": false, "binop": null }, - "value": "blinn", - "start": 11258, - "end": 11263, + "value": "diffuse", + "start": 11449, + "end": 11456, "loc": { "start": { - "line": 329, + "line": 333, "column": 18 }, "end": { - "line": 329, - "column": 23 + "line": 333, + "column": 25 } } }, @@ -85108,16 +86542,16 @@ "updateContext": null }, "value": "=", - "start": 11264, - "end": 11265, + "start": 11457, + "end": 11458, "loc": { "start": { - "line": 329, - "column": 24 + "line": 333, + "column": 26 }, "end": { - "line": 329, - "column": 25 + "line": 333, + "column": 27 } } }, @@ -85133,50 +86567,49 @@ "postfix": false, "binop": null }, - "value": "technique", - "start": 11266, - "end": 11275, + "value": "values", + "start": 11459, + "end": 11465, "loc": { "start": { - "line": 329, - "column": 26 + "line": 333, + "column": 28 }, "end": { - "line": 329, - "column": 35 + "line": 333, + "column": 34 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 11276, - "end": 11279, + "start": 11465, + "end": 11466, "loc": { "start": { - "line": 329, - "column": 36 + "line": 333, + "column": 34 }, "end": { - "line": 329, - "column": 39 + "line": 333, + "column": 35 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -85184,20 +86617,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "BLINN", - "start": 11280, - "end": 11287, + "value": "diffuse", + "start": 11466, + "end": 11473, "loc": { "start": { - "line": 329, - "column": 40 + "line": 333, + "column": 35 }, "end": { - "line": 329, - "column": 47 + "line": 333, + "column": 42 } } }, @@ -85214,23 +86646,23 @@ "binop": null, "updateContext": null }, - "start": 11287, - "end": 11288, + "start": 11473, + "end": 11474, "loc": { "start": { - "line": 329, - "column": 47 + "line": 333, + "column": 42 }, "end": { - "line": 329, - "column": 48 + "line": 333, + "column": 43 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -85241,17 +86673,42 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 11301, - "end": 11306, + "value": "if", + "start": 11487, + "end": 11489, "loc": { "start": { - "line": 330, + "line": 334, "column": 12 }, "end": { - "line": 330, - "column": 17 + "line": 334, + "column": 14 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 11490, + "end": 11491, + "loc": { + "start": { + "line": 334, + "column": 15 + }, + "end": { + "line": 334, + "column": 16 } } }, @@ -85267,51 +86724,51 @@ "postfix": false, "binop": null }, - "value": "phong", - "start": 11307, - "end": 11312, + "value": "diffuse", + "start": 11491, + "end": 11498, "loc": { "start": { - "line": 330, - "column": 18 + "line": 334, + "column": 16 }, "end": { - "line": 330, + "line": 334, "column": 23 } } }, { "type": { - "label": "=", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "=", - "start": 11313, - "end": 11314, + "value": "&&", + "start": 11499, + "end": 11501, "loc": { "start": { - "line": 330, + "line": 334, "column": 24 }, "end": { - "line": 330, - "column": 25 + "line": 334, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -85320,125 +86777,122 @@ "postfix": false, "binop": null }, - "value": "technique", - "start": 11315, - "end": 11324, + "start": 11502, + "end": 11503, "loc": { "start": { - "line": 330, - "column": 26 + "line": 334, + "column": 27 }, "end": { - "line": 330, - "column": 35 + "line": 334, + "column": 28 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "===", - "start": 11325, - "end": 11328, + "value": "blinn", + "start": 11503, + "end": 11508, "loc": { "start": { - "line": 330, - "column": 36 + "line": 334, + "column": 28 }, "end": { - "line": 330, - "column": 39 + "line": 334, + "column": 33 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": "||", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "PHONG", - "start": 11329, - "end": 11336, + "value": "||", + "start": 11509, + "end": 11511, "loc": { "start": { - "line": 330, - "column": 40 + "line": 334, + "column": 34 }, "end": { - "line": 330, - "column": 47 + "line": 334, + "column": 36 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11336, - "end": 11337, + "value": "phong", + "start": 11512, + "end": 11517, "loc": { "start": { - "line": 330, - "column": 47 + "line": 334, + "column": 37 }, "end": { - "line": 330, - "column": 48 + "line": 334, + "column": 42 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "||", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 1, "updateContext": null }, - "value": "const", - "start": 11350, - "end": 11355, + "value": "||", + "start": 11518, + "end": 11520, "loc": { "start": { - "line": 331, - "column": 12 + "line": 334, + "column": 43 }, "end": { - "line": 331, - "column": 17 + "line": 334, + "column": 45 } } }, @@ -85455,51 +86909,49 @@ "binop": null }, "value": "lambert", - "start": 11356, - "end": 11363, + "start": 11521, + "end": 11528, "loc": { "start": { - "line": 331, - "column": 18 + "line": 334, + "column": 46 }, "end": { - "line": 331, - "column": 25 + "line": 334, + "column": 53 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 11364, - "end": 11365, + "start": 11528, + "end": 11529, "loc": { "start": { - "line": 331, - "column": 26 + "line": 334, + "column": 53 }, "end": { - "line": 331, - "column": 27 + "line": 334, + "column": 54 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85507,52 +86959,50 @@ "postfix": false, "binop": null }, - "value": "technique", - "start": 11366, - "end": 11375, + "start": 11529, + "end": 11530, "loc": { "start": { - "line": 331, - "column": 28 + "line": 334, + "column": 54 }, "end": { - "line": 331, - "column": 37 + "line": 334, + "column": 55 } } }, { "type": { - "label": "==/!=", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "===", - "start": 11376, - "end": 11379, + "start": 11531, + "end": 11532, "loc": { "start": { - "line": 331, - "column": 38 + "line": 334, + "column": 56 }, "end": { - "line": 331, - "column": 41 + "line": 334, + "column": 57 } } }, { "type": { - "label": "string", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85561,71 +87011,69 @@ "binop": null, "updateContext": null }, - "value": "LAMBERT", - "start": 11380, - "end": 11389, + "value": "if", + "start": 11549, + "end": 11551, "loc": { "start": { - "line": 331, - "column": 42 + "line": 335, + "column": 16 }, "end": { - "line": 331, - "column": 51 + "line": 335, + "column": 18 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11389, - "end": 11390, + "start": 11552, + "end": 11553, "loc": { "start": { - "line": 331, - "column": 51 + "line": 335, + "column": 19 }, "end": { - "line": 331, - "column": 52 + "line": 335, + "column": 20 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "const", - "start": 11403, - "end": 11408, + "value": "!", + "start": 11553, + "end": 11554, "loc": { "start": { - "line": 332, - "column": 12 + "line": 335, + "column": 20 }, "end": { - "line": 332, - "column": 17 + "line": 335, + "column": 21 } } }, @@ -85641,43 +87089,42 @@ "postfix": false, "binop": null }, - "value": "diffuse", - "start": 11409, - "end": 11416, + "value": "utils", + "start": 11554, + "end": 11559, "loc": { "start": { - "line": 332, - "column": 18 + "line": 335, + "column": 21 }, "end": { - "line": 332, - "column": 25 + "line": 335, + "column": 26 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 11417, - "end": 11418, + "start": 11559, + "end": 11560, "loc": { "start": { - "line": 332, + "line": 335, "column": 26 }, "end": { - "line": 332, + "line": 335, "column": 27 } } @@ -85694,43 +87141,42 @@ "postfix": false, "binop": null }, - "value": "values", - "start": 11419, - "end": 11425, + "value": "isString", + "start": 11560, + "end": 11568, "loc": { "start": { - "line": 332, - "column": 28 + "line": 335, + "column": 27 }, "end": { - "line": 332, - "column": 34 + "line": 335, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11425, - "end": 11426, + "start": 11568, + "end": 11569, "loc": { "start": { - "line": 332, - "column": 34 + "line": 335, + "column": 35 }, "end": { - "line": 332, - "column": 35 + "line": 335, + "column": 36 } } }, @@ -85747,49 +87193,47 @@ "binop": null }, "value": "diffuse", - "start": 11426, - "end": 11433, + "start": 11569, + "end": 11576, "loc": { "start": { - "line": 332, - "column": 35 + "line": 335, + "column": 36 }, "end": { - "line": 332, - "column": 42 + "line": 335, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11433, - "end": 11434, + "start": 11576, + "end": 11577, "loc": { "start": { - "line": 332, - "column": 42 + "line": 335, + "column": 43 }, "end": { - "line": 332, - "column": 43 + "line": 335, + "column": 44 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -85797,26 +87241,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 11447, - "end": 11449, + "start": 11577, + "end": 11578, "loc": { "start": { - "line": 333, - "column": 12 + "line": 335, + "column": 44 }, "end": { - "line": 333, - "column": 14 + "line": 335, + "column": 45 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -85826,16 +87268,16 @@ "postfix": false, "binop": null }, - "start": 11450, - "end": 11451, + "start": 11579, + "end": 11580, "loc": { "start": { - "line": 333, - "column": 15 + "line": 335, + "column": 46 }, "end": { - "line": 333, - "column": 16 + "line": 335, + "column": 47 } } }, @@ -85851,51 +87293,102 @@ "postfix": false, "binop": null }, - "value": "diffuse", - "start": 11451, - "end": 11458, + "value": "materialAttributes", + "start": 11601, + "end": 11619, "loc": { "start": { - "line": 333, - "column": 16 + "line": 336, + "column": 20 }, "end": { - "line": 333, - "column": 23 + "line": 336, + "column": 38 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11619, + "end": 11620, + "loc": { + "start": { + "line": 336, + "column": 38 + }, + "end": { + "line": 336, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "color", + "start": 11620, + "end": 11625, + "loc": { + "start": { + "line": 336, + "column": 39 + }, + "end": { + "line": 336, + "column": 44 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 11459, - "end": 11461, + "start": 11625, + "end": 11626, "loc": { "start": { - "line": 333, - "column": 24 + "line": 336, + "column": 44 }, "end": { - "line": 333, - "column": 26 + "line": 336, + "column": 45 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -85904,23 +87397,24 @@ "postfix": false, "binop": null }, - "start": 11462, - "end": 11463, + "value": "set", + "start": 11626, + "end": 11629, "loc": { "start": { - "line": 333, - "column": 27 + "line": 336, + "column": 45 }, "end": { - "line": 333, - "column": 28 + "line": 336, + "column": 48 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -85929,52 +87423,50 @@ "postfix": false, "binop": null }, - "value": "blinn", - "start": 11463, - "end": 11468, + "start": 11629, + "end": 11630, "loc": { "start": { - "line": 333, - "column": 28 + "line": 336, + "column": 48 }, "end": { - "line": 333, - "column": 33 + "line": 336, + "column": 49 } } }, { "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 11469, - "end": 11471, + "value": "diffuse", + "start": 11630, + "end": 11637, "loc": { "start": { - "line": 333, - "column": 34 + "line": 336, + "column": 49 }, "end": { - "line": 333, - "column": 36 + "line": 336, + "column": 56 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -85982,23 +87474,22 @@ "postfix": false, "binop": null }, - "value": "phong", - "start": 11472, - "end": 11477, + "start": 11637, + "end": 11638, "loc": { "start": { - "line": 333, - "column": 37 + "line": 336, + "column": 56 }, "end": { - "line": 333, - "column": 42 + "line": 336, + "column": 57 } } }, { "type": { - "label": "||", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -86006,28 +87497,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 11478, - "end": 11480, + "start": 11638, + "end": 11639, "loc": { "start": { - "line": 333, - "column": 43 + "line": 336, + "column": 57 }, "end": { - "line": 333, - "column": 45 + "line": 336, + "column": 58 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86035,23 +87525,22 @@ "postfix": false, "binop": null }, - "value": "lambert", - "start": 11481, - "end": 11488, + "start": 11656, + "end": 11657, "loc": { "start": { - "line": 333, - "column": 46 + "line": 337, + "column": 16 }, "end": { - "line": 333, - "column": 53 + "line": 337, + "column": 17 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86061,22 +87550,23 @@ "postfix": false, "binop": null }, - "start": 11488, - "end": 11489, + "start": 11670, + "end": 11671, "loc": { "start": { - "line": 333, - "column": 53 + "line": 338, + "column": 12 }, "end": { - "line": 333, - "column": 54 + "line": 338, + "column": 13 } } }, { "type": { - "label": ")", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86084,25 +87574,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11489, - "end": 11490, + "value": "const", + "start": 11684, + "end": 11689, "loc": { "start": { - "line": 333, - "column": 54 + "line": 339, + "column": 12 }, "end": { - "line": 333, - "column": 55 + "line": 339, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -86111,51 +87603,51 @@ "postfix": false, "binop": null }, - "start": 11491, - "end": 11492, + "value": "transparency", + "start": 11690, + "end": 11702, "loc": { "start": { - "line": 333, - "column": 56 + "line": 339, + "column": 18 }, "end": { - "line": 333, - "column": 57 + "line": 339, + "column": 30 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 11509, - "end": 11511, + "value": "=", + "start": 11703, + "end": 11704, "loc": { "start": { - "line": 334, - "column": 16 + "line": 339, + "column": 31 }, "end": { - "line": 334, - "column": 18 + "line": 339, + "column": 32 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -86164,43 +87656,43 @@ "postfix": false, "binop": null }, - "start": 11512, - "end": 11513, + "value": "values", + "start": 11705, + "end": 11711, "loc": { "start": { - "line": 334, - "column": 19 + "line": 339, + "column": 33 }, "end": { - "line": 334, - "column": 20 + "line": 339, + "column": 39 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 11513, - "end": 11514, + "start": 11711, + "end": 11712, "loc": { "start": { - "line": 334, - "column": 20 + "line": 339, + "column": 39 }, "end": { - "line": 334, - "column": 21 + "line": 339, + "column": 40 } } }, @@ -86216,24 +87708,24 @@ "postfix": false, "binop": null }, - "value": "utils", - "start": 11514, - "end": 11519, + "value": "transparency", + "start": 11712, + "end": 11724, "loc": { "start": { - "line": 334, - "column": 21 + "line": 339, + "column": 40 }, "end": { - "line": 334, - "column": 26 + "line": 339, + "column": 52 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -86243,42 +87735,44 @@ "binop": null, "updateContext": null }, - "start": 11519, - "end": 11520, + "start": 11724, + "end": 11725, "loc": { "start": { - "line": 334, - "column": 26 + "line": 339, + "column": 52 }, "end": { - "line": 334, - "column": 27 + "line": 339, + "column": 53 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "isString", - "start": 11520, - "end": 11528, + "value": "if", + "start": 11738, + "end": 11740, "loc": { "start": { - "line": 334, - "column": 27 + "line": 340, + "column": 12 }, "end": { - "line": 334, - "column": 35 + "line": 340, + "column": 14 } } }, @@ -86294,16 +87788,16 @@ "postfix": false, "binop": null }, - "start": 11528, - "end": 11529, + "start": 11741, + "end": 11742, "loc": { "start": { - "line": 334, - "column": 35 + "line": 340, + "column": 15 }, "end": { - "line": 334, - "column": 36 + "line": 340, + "column": 16 } } }, @@ -86319,92 +87813,99 @@ "postfix": false, "binop": null }, - "value": "diffuse", - "start": 11529, - "end": 11536, + "value": "transparency", + "start": 11742, + "end": 11754, "loc": { "start": { - "line": 334, - "column": 36 + "line": 340, + "column": 16 }, "end": { - "line": 334, - "column": 43 + "line": 340, + "column": 28 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 11536, - "end": 11537, + "value": "!==", + "start": 11755, + "end": 11758, "loc": { "start": { - "line": 334, - "column": 43 + "line": 340, + "column": 29 }, "end": { - "line": 334, - "column": 44 + "line": 340, + "column": 32 } } }, { "type": { - "label": ")", + "label": "null", + "keyword": "null", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 11537, - "end": 11538, + "value": "null", + "start": 11759, + "end": 11763, "loc": { "start": { - "line": 334, - "column": 44 + "line": 340, + "column": 33 }, "end": { - "line": 334, - "column": 45 + "line": 340, + "column": 37 } } }, { "type": { - "label": "{", + "label": "&&", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 2, + "updateContext": null }, - "start": 11539, - "end": 11540, + "value": "&&", + "start": 11764, + "end": 11766, "loc": { "start": { - "line": 334, - "column": 46 + "line": 340, + "column": 38 }, "end": { - "line": 334, - "column": 47 + "line": 340, + "column": 40 } } }, @@ -86420,43 +87921,44 @@ "postfix": false, "binop": null }, - "value": "materialAttributes", - "start": 11561, - "end": 11579, + "value": "transparency", + "start": 11767, + "end": 11779, "loc": { "start": { - "line": 335, - "column": 20 + "line": 340, + "column": 41 }, "end": { - "line": 335, - "column": 38 + "line": 340, + "column": 53 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "==/!=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 11579, - "end": 11580, + "value": "!==", + "start": 11780, + "end": 11783, "loc": { "start": { - "line": 335, - "column": 38 + "line": 340, + "column": 54 }, "end": { - "line": 335, - "column": 39 + "line": 340, + "column": 57 } } }, @@ -86472,23 +87974,23 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 11580, - "end": 11585, + "value": "undefined", + "start": 11784, + "end": 11793, "loc": { "start": { - "line": 335, - "column": 39 + "line": 340, + "column": 58 }, "end": { - "line": 335, - "column": 44 + "line": 340, + "column": 67 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -86496,26 +87998,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 11585, - "end": 11586, + "start": 11793, + "end": 11794, "loc": { "start": { - "line": 335, - "column": 44 + "line": 340, + "column": 67 }, "end": { - "line": 335, - "column": 45 + "line": 340, + "column": 68 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -86524,24 +88025,23 @@ "postfix": false, "binop": null }, - "value": "set", - "start": 11586, - "end": 11589, + "start": 11795, + "end": 11796, "loc": { "start": { - "line": 335, - "column": 45 + "line": 340, + "column": 69 }, "end": { - "line": 335, - "column": 48 + "line": 340, + "column": 70 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -86550,50 +88050,51 @@ "postfix": false, "binop": null }, - "start": 11589, - "end": 11590, + "value": "materialAttributes", + "start": 11813, + "end": 11831, "loc": { "start": { - "line": 335, - "column": 48 + "line": 341, + "column": 16 }, "end": { - "line": 335, - "column": 49 + "line": 341, + "column": 34 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "diffuse", - "start": 11590, - "end": 11597, + "start": 11831, + "end": 11832, "loc": { "start": { - "line": 335, - "column": 49 + "line": 341, + "column": 34 }, "end": { - "line": 335, - "column": 56 + "line": 341, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86601,50 +88102,52 @@ "postfix": false, "binop": null }, - "start": 11597, - "end": 11598, + "value": "opacity", + "start": 11832, + "end": 11839, "loc": { "start": { - "line": 335, - "column": 56 + "line": 341, + "column": 35 }, "end": { - "line": 335, - "column": 57 + "line": 341, + "column": 42 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 11598, - "end": 11599, + "value": "=", + "start": 11840, + "end": 11841, "loc": { "start": { - "line": 335, - "column": 57 + "line": 341, + "column": 43 }, "end": { - "line": 335, - "column": 58 + "line": 341, + "column": 44 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -86652,16 +88155,43 @@ "postfix": false, "binop": null }, - "start": 11616, - "end": 11617, + "value": "transparency", + "start": 11842, + "end": 11854, "loc": { "start": { - "line": 336, - "column": 16 + "line": 341, + "column": 45 }, "end": { - "line": 336, - "column": 17 + "line": 341, + "column": 57 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 11854, + "end": 11855, + "loc": { + "start": { + "line": 341, + "column": 57 + }, + "end": { + "line": 341, + "column": 58 } } }, @@ -86677,15 +88207,15 @@ "postfix": false, "binop": null }, - "start": 11630, - "end": 11631, + "start": 11868, + "end": 11869, "loc": { "start": { - "line": 337, + "line": 342, "column": 12 }, "end": { - "line": 337, + "line": 342, "column": 13 } } @@ -86705,15 +88235,15 @@ "updateContext": null }, "value": "const", - "start": 11644, - "end": 11649, + "start": 11882, + "end": 11887, "loc": { "start": { - "line": 338, + "line": 343, "column": 12 }, "end": { - "line": 338, + "line": 343, "column": 17 } } @@ -86730,17 +88260,17 @@ "postfix": false, "binop": null }, - "value": "transparency", - "start": 11650, - "end": 11662, + "value": "transparent", + "start": 11888, + "end": 11899, "loc": { "start": { - "line": 338, + "line": 343, "column": 18 }, "end": { - "line": 338, - "column": 30 + "line": 343, + "column": 29 } } }, @@ -86758,16 +88288,16 @@ "updateContext": null }, "value": "=", - "start": 11663, - "end": 11664, + "start": 11900, + "end": 11901, "loc": { "start": { - "line": 338, - "column": 31 + "line": 343, + "column": 30 }, "end": { - "line": 338, - "column": 32 + "line": 343, + "column": 31 } } }, @@ -86784,16 +88314,16 @@ "binop": null }, "value": "values", - "start": 11665, - "end": 11671, + "start": 11902, + "end": 11908, "loc": { "start": { - "line": 338, - "column": 33 + "line": 343, + "column": 32 }, "end": { - "line": 338, - "column": 39 + "line": 343, + "column": 38 } } }, @@ -86810,16 +88340,16 @@ "binop": null, "updateContext": null }, - "start": 11671, - "end": 11672, + "start": 11908, + "end": 11909, "loc": { "start": { - "line": 338, - "column": 39 + "line": 343, + "column": 38 }, - "end": { - "line": 338, - "column": 40 + "end": { + "line": 343, + "column": 39 } } }, @@ -86835,17 +88365,17 @@ "postfix": false, "binop": null }, - "value": "transparency", - "start": 11672, - "end": 11684, + "value": "transparent", + "start": 11909, + "end": 11920, "loc": { "start": { - "line": 338, - "column": 40 + "line": 343, + "column": 39 }, "end": { - "line": 338, - "column": 52 + "line": 343, + "column": 50 } } }, @@ -86862,16 +88392,16 @@ "binop": null, "updateContext": null }, - "start": 11684, - "end": 11685, + "start": 11920, + "end": 11921, "loc": { "start": { - "line": 338, - "column": 52 + "line": 343, + "column": 50 }, "end": { - "line": 338, - "column": 53 + "line": 343, + "column": 51 } } }, @@ -86890,15 +88420,15 @@ "updateContext": null }, "value": "if", - "start": 11698, - "end": 11700, + "start": 11934, + "end": 11936, "loc": { "start": { - "line": 339, + "line": 344, "column": 12 }, "end": { - "line": 339, + "line": 344, "column": 14 } } @@ -86915,15 +88445,15 @@ "postfix": false, "binop": null }, - "start": 11701, - "end": 11702, + "start": 11937, + "end": 11938, "loc": { "start": { - "line": 339, + "line": 344, "column": 15 }, "end": { - "line": 339, + "line": 344, "column": 16 } } @@ -86940,17 +88470,17 @@ "postfix": false, "binop": null }, - "value": "transparency", - "start": 11702, - "end": 11714, + "value": "transparent", + "start": 11938, + "end": 11949, "loc": { "start": { - "line": 339, + "line": 344, "column": 16 }, "end": { - "line": 339, - "column": 28 + "line": 344, + "column": 27 } } }, @@ -86968,16 +88498,16 @@ "updateContext": null }, "value": "!==", - "start": 11715, - "end": 11718, + "start": 11950, + "end": 11953, "loc": { "start": { - "line": 339, - "column": 29 + "line": 344, + "column": 28 }, "end": { - "line": 339, - "column": 32 + "line": 344, + "column": 31 } } }, @@ -86996,16 +88526,16 @@ "updateContext": null }, "value": "null", - "start": 11719, - "end": 11723, + "start": 11954, + "end": 11958, "loc": { "start": { - "line": 339, - "column": 33 + "line": 344, + "column": 32 }, "end": { - "line": 339, - "column": 37 + "line": 344, + "column": 36 } } }, @@ -87023,16 +88553,16 @@ "updateContext": null }, "value": "&&", - "start": 11724, - "end": 11726, + "start": 11959, + "end": 11961, "loc": { "start": { - "line": 339, - "column": 38 + "line": 344, + "column": 37 }, "end": { - "line": 339, - "column": 40 + "line": 344, + "column": 39 } } }, @@ -87048,17 +88578,17 @@ "postfix": false, "binop": null }, - "value": "transparency", - "start": 11727, - "end": 11739, + "value": "transparent", + "start": 11962, + "end": 11973, "loc": { "start": { - "line": 339, - "column": 41 + "line": 344, + "column": 40 }, "end": { - "line": 339, - "column": 53 + "line": 344, + "column": 51 } } }, @@ -87076,16 +88606,16 @@ "updateContext": null }, "value": "!==", - "start": 11740, - "end": 11743, + "start": 11974, + "end": 11977, "loc": { "start": { - "line": 339, - "column": 54 + "line": 344, + "column": 52 }, "end": { - "line": 339, - "column": 57 + "line": 344, + "column": 55 } } }, @@ -87102,16 +88632,16 @@ "binop": null }, "value": "undefined", - "start": 11744, - "end": 11753, + "start": 11978, + "end": 11987, "loc": { "start": { - "line": 339, - "column": 58 + "line": 344, + "column": 56 }, "end": { - "line": 339, - "column": 67 + "line": 344, + "column": 65 } } }, @@ -87127,16 +88657,16 @@ "postfix": false, "binop": null }, - "start": 11753, - "end": 11754, + "start": 11987, + "end": 11988, "loc": { "start": { - "line": 339, - "column": 67 + "line": 344, + "column": 65 }, "end": { - "line": 339, - "column": 68 + "line": 344, + "column": 66 } } }, @@ -87152,16 +88682,16 @@ "postfix": false, "binop": null }, - "start": 11755, - "end": 11756, + "start": 11989, + "end": 11990, "loc": { "start": { - "line": 339, - "column": 69 + "line": 344, + "column": 67 }, "end": { - "line": 339, - "column": 70 + "line": 344, + "column": 68 } } }, @@ -87178,15 +88708,15 @@ "binop": null }, "value": "materialAttributes", - "start": 11773, - "end": 11791, + "start": 12007, + "end": 12025, "loc": { "start": { - "line": 340, + "line": 345, "column": 16 }, "end": { - "line": 340, + "line": 345, "column": 34 } } @@ -87204,15 +88734,15 @@ "binop": null, "updateContext": null }, - "start": 11791, - "end": 11792, + "start": 12025, + "end": 12026, "loc": { "start": { - "line": 340, + "line": 345, "column": 34 }, "end": { - "line": 340, + "line": 345, "column": 35 } } @@ -87230,15 +88760,15 @@ "binop": null }, "value": "opacity", - "start": 11792, - "end": 11799, + "start": 12026, + "end": 12033, "loc": { "start": { - "line": 340, + "line": 345, "column": 35 }, "end": { - "line": 340, + "line": 345, "column": 42 } } @@ -87257,15 +88787,15 @@ "updateContext": null }, "value": "=", - "start": 11800, - "end": 11801, + "start": 12034, + "end": 12035, "loc": { "start": { - "line": 340, + "line": 345, "column": 43 }, "end": { - "line": 340, + "line": 345, "column": 44 } } @@ -87282,17 +88812,17 @@ "postfix": false, "binop": null }, - "value": "transparency", - "start": 11802, - "end": 11814, + "value": "transparent", + "start": 12036, + "end": 12047, "loc": { "start": { - "line": 340, + "line": 345, "column": 45 }, "end": { - "line": 340, - "column": 57 + "line": 345, + "column": 56 } } }, @@ -87309,16 +88839,16 @@ "binop": null, "updateContext": null }, - "start": 11814, - "end": 11815, + "start": 12047, + "end": 12048, "loc": { "start": { - "line": 340, - "column": 57 + "line": 345, + "column": 56 }, "end": { - "line": 340, - "column": 58 + "line": 345, + "column": 57 } } }, @@ -87334,19 +88864,69 @@ "postfix": false, "binop": null }, - "start": 11828, - "end": 11829, + "start": 12061, + "end": 12062, "loc": { "start": { - "line": 341, + "line": 346, "column": 12 }, "end": { - "line": 341, + "line": 346, "column": 13 } } }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 12071, + "end": 12072, + "loc": { + "start": { + "line": 347, + "column": 8 + }, + "end": { + "line": 347, + "column": 9 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 12077, + "end": 12078, + "loc": { + "start": { + "line": 348, + "column": 4 + }, + "end": { + "line": 348, + "column": 5 + } + } + }, { "type": { "label": "const", @@ -87362,16 +88942,16 @@ "updateContext": null }, "value": "const", - "start": 11842, - "end": 11847, + "start": 12083, + "end": 12088, "loc": { "start": { - "line": 342, - "column": 12 + "line": 349, + "column": 4 }, "end": { - "line": 342, - "column": 17 + "line": 349, + "column": 9 } } }, @@ -87387,17 +88967,17 @@ "postfix": false, "binop": null }, - "value": "transparent", - "start": 11848, - "end": 11859, + "value": "metallicPBR", + "start": 12089, + "end": 12100, "loc": { "start": { - "line": 342, - "column": 18 + "line": 349, + "column": 10 }, "end": { - "line": 342, - "column": 29 + "line": 349, + "column": 21 } } }, @@ -87415,16 +88995,16 @@ "updateContext": null }, "value": "=", - "start": 11860, - "end": 11861, + "start": 12101, + "end": 12102, "loc": { "start": { - "line": 342, - "column": 30 + "line": 349, + "column": 22 }, "end": { - "line": 342, - "column": 31 + "line": 349, + "column": 23 } } }, @@ -87440,17 +89020,17 @@ "postfix": false, "binop": null }, - "value": "values", - "start": 11862, - "end": 11868, + "value": "material", + "start": 12103, + "end": 12111, "loc": { "start": { - "line": 342, - "column": 32 + "line": 349, + "column": 24 }, "end": { - "line": 342, - "column": 38 + "line": 349, + "column": 32 } } }, @@ -87467,16 +89047,16 @@ "binop": null, "updateContext": null }, - "start": 11868, - "end": 11869, + "start": 12111, + "end": 12112, "loc": { "start": { - "line": 342, - "column": 38 + "line": 349, + "column": 32 }, "end": { - "line": 342, - "column": 39 + "line": 349, + "column": 33 } } }, @@ -87492,17 +89072,17 @@ "postfix": false, "binop": null }, - "value": "transparent", - "start": 11869, - "end": 11880, + "value": "pbrMetallicRoughness", + "start": 12112, + "end": 12132, "loc": { "start": { - "line": 342, - "column": 39 + "line": 349, + "column": 33 }, "end": { - "line": 342, - "column": 50 + "line": 349, + "column": 53 } } }, @@ -87519,16 +89099,16 @@ "binop": null, "updateContext": null }, - "start": 11880, - "end": 11881, + "start": 12132, + "end": 12133, "loc": { "start": { - "line": 342, - "column": 50 + "line": 349, + "column": 53 }, "end": { - "line": 342, - "column": 51 + "line": 349, + "column": 54 } } }, @@ -87547,16 +89127,16 @@ "updateContext": null }, "value": "if", - "start": 11894, - "end": 11896, + "start": 12138, + "end": 12140, "loc": { "start": { - "line": 343, - "column": 12 + "line": 350, + "column": 4 }, "end": { - "line": 343, - "column": 14 + "line": 350, + "column": 6 } } }, @@ -87572,16 +89152,16 @@ "postfix": false, "binop": null }, - "start": 11897, - "end": 11898, + "start": 12141, + "end": 12142, "loc": { "start": { - "line": 343, - "column": 15 + "line": 350, + "column": 7 }, "end": { - "line": 343, - "column": 16 + "line": 350, + "column": 8 } } }, @@ -87597,51 +89177,101 @@ "postfix": false, "binop": null }, - "value": "transparent", - "start": 11898, - "end": 11909, + "value": "metallicPBR", + "start": 12142, + "end": 12153, "loc": { "start": { - "line": 343, - "column": 16 + "line": 350, + "column": 8 }, "end": { - "line": 343, - "column": 27 + "line": 350, + "column": 19 } } }, { "type": { - "label": "==/!=", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 12153, + "end": 12154, + "loc": { + "start": { + "line": 350, + "column": 19 + }, + "end": { + "line": 350, + "column": 20 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 12155, + "end": 12156, + "loc": { + "start": { + "line": 350, + "column": 21 + }, + "end": { + "line": 350, + "column": 22 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 11910, - "end": 11913, + "value": "const", + "start": 12165, + "end": 12170, "loc": { "start": { - "line": 343, - "column": 28 + "line": 351, + "column": 8 }, "end": { - "line": 343, - "column": 31 + "line": 351, + "column": 13 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -87649,47 +89279,98 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "baseColorFactor", + "start": 12171, + "end": 12186, + "loc": { + "start": { + "line": 351, + "column": 14 + }, + "end": { + "line": 351, + "column": 29 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": "null", - "start": 11914, - "end": 11918, + "value": "=", + "start": 12187, + "end": 12188, "loc": { "start": { - "line": 343, + "line": 351, + "column": 30 + }, + "end": { + "line": 351, + "column": 31 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "metallicPBR", + "start": 12189, + "end": 12200, + "loc": { + "start": { + "line": 351, "column": 32 }, "end": { - "line": 343, - "column": 36 + "line": 351, + "column": 43 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 11919, - "end": 11921, + "start": 12200, + "end": 12201, "loc": { "start": { - "line": 343, - "column": 37 + "line": 351, + "column": 43 }, "end": { - "line": 343, - "column": 39 + "line": 351, + "column": 44 } } }, @@ -87705,23 +89386,23 @@ "postfix": false, "binop": null }, - "value": "transparent", - "start": 11922, - "end": 11933, + "value": "baseColorFactor", + "start": 12201, + "end": 12216, "loc": { "start": { - "line": 343, - "column": 40 + "line": 351, + "column": 44 }, "end": { - "line": 343, - "column": 51 + "line": 351, + "column": 59 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -87729,27 +89410,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 11934, - "end": 11937, + "start": 12216, + "end": 12217, "loc": { "start": { - "line": 343, - "column": 52 + "line": 351, + "column": 59 }, "end": { - "line": 343, - "column": 55 + "line": 351, + "column": 60 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 12226, + "end": 12228, + "loc": { + "start": { + "line": 352, + "column": 8 + }, + "end": { + "line": 352, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -87758,17 +89466,42 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 11938, - "end": 11947, + "start": 12229, + "end": 12230, "loc": { "start": { - "line": 343, - "column": 56 + "line": 352, + "column": 11 + }, + "end": { + "line": 352, + "column": 12 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "baseColorFactor", + "start": 12230, + "end": 12245, + "loc": { + "start": { + "line": 352, + "column": 12 }, "end": { - "line": 343, - "column": 65 + "line": 352, + "column": 27 } } }, @@ -87784,16 +89517,16 @@ "postfix": false, "binop": null }, - "start": 11947, - "end": 11948, + "start": 12245, + "end": 12246, "loc": { "start": { - "line": 343, - "column": 65 + "line": 352, + "column": 27 }, "end": { - "line": 343, - "column": 66 + "line": 352, + "column": 28 } } }, @@ -87809,16 +89542,16 @@ "postfix": false, "binop": null }, - "start": 11949, - "end": 11950, + "start": 12247, + "end": 12248, "loc": { "start": { - "line": 343, - "column": 67 + "line": 352, + "column": 29 }, "end": { - "line": 343, - "column": 68 + "line": 352, + "column": 30 } } }, @@ -87835,16 +89568,16 @@ "binop": null }, "value": "materialAttributes", - "start": 11967, - "end": 11985, + "start": 12261, + "end": 12279, "loc": { "start": { - "line": 344, - "column": 16 + "line": 353, + "column": 12 }, "end": { - "line": 344, - "column": 34 + "line": 353, + "column": 30 } } }, @@ -87861,16 +89594,16 @@ "binop": null, "updateContext": null }, - "start": 11985, - "end": 11986, + "start": 12279, + "end": 12280, "loc": { "start": { - "line": 344, - "column": 34 + "line": 353, + "column": 30 }, "end": { - "line": 344, - "column": 35 + "line": 353, + "column": 31 } } }, @@ -87886,50 +89619,49 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 11986, - "end": 11993, + "value": "color", + "start": 12280, + "end": 12285, "loc": { "start": { - "line": 344, - "column": 35 + "line": 353, + "column": 31 }, "end": { - "line": 344, - "column": 42 + "line": 353, + "column": 36 } } }, { "type": { - "label": "=", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 11994, - "end": 11995, + "start": 12285, + "end": 12286, "loc": { "start": { - "line": 344, - "column": 43 + "line": 353, + "column": 36 }, "end": { - "line": 344, - "column": 44 + "line": 353, + "column": 37 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -87937,26 +89669,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "transparent", - "start": 11996, - "end": 12007, + "value": 0, + "start": 12286, + "end": 12287, "loc": { "start": { - "line": 344, - "column": 45 + "line": 353, + "column": 37 }, "end": { - "line": 344, - "column": 56 + "line": 353, + "column": 38 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -87966,49 +89699,51 @@ "binop": null, "updateContext": null }, - "start": 12007, - "end": 12008, + "start": 12287, + "end": 12288, "loc": { "start": { - "line": 344, - "column": 56 + "line": 353, + "column": 38 }, "end": { - "line": 344, - "column": 57 + "line": 353, + "column": 39 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12021, - "end": 12022, + "value": "=", + "start": 12289, + "end": 12290, "loc": { "start": { - "line": 345, - "column": 12 + "line": 353, + "column": 40 }, "end": { - "line": 345, - "column": 13 + "line": 353, + "column": 41 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88016,50 +89751,51 @@ "postfix": false, "binop": null }, - "start": 12031, - "end": 12032, + "value": "baseColorFactor", + "start": 12291, + "end": 12306, "loc": { "start": { - "line": 346, - "column": 8 + "line": 353, + "column": 42 }, "end": { - "line": 346, - "column": 9 + "line": 353, + "column": 57 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12037, - "end": 12038, + "start": 12306, + "end": 12307, "loc": { "start": { - "line": 347, - "column": 4 + "line": 353, + "column": 57 }, "end": { - "line": 347, - "column": 5 + "line": 353, + "column": 58 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88068,70 +89804,69 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 12043, - "end": 12048, + "value": 0, + "start": 12307, + "end": 12308, "loc": { "start": { - "line": 348, - "column": 4 + "line": 353, + "column": 58 }, "end": { - "line": 348, - "column": 9 + "line": 353, + "column": 59 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metallicPBR", - "start": 12049, - "end": 12060, + "start": 12308, + "end": 12309, "loc": { "start": { - "line": 348, - "column": 10 + "line": 353, + "column": 59 }, "end": { - "line": 348, - "column": 21 + "line": 353, + "column": 60 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 12061, - "end": 12062, + "start": 12309, + "end": 12310, "loc": { "start": { - "line": 348, - "column": 22 + "line": 353, + "column": 60 }, "end": { - "line": 348, - "column": 23 + "line": 353, + "column": 61 } } }, @@ -88147,17 +89882,17 @@ "postfix": false, "binop": null }, - "value": "material", - "start": 12063, - "end": 12071, + "value": "materialAttributes", + "start": 12323, + "end": 12341, "loc": { "start": { - "line": 348, - "column": 24 + "line": 354, + "column": 12 }, "end": { - "line": 348, - "column": 32 + "line": 354, + "column": 30 } } }, @@ -88174,16 +89909,16 @@ "binop": null, "updateContext": null }, - "start": 12071, - "end": 12072, + "start": 12341, + "end": 12342, "loc": { "start": { - "line": 348, - "column": 32 + "line": 354, + "column": 30 }, "end": { - "line": 348, - "column": 33 + "line": 354, + "column": 31 } } }, @@ -88199,25 +89934,25 @@ "postfix": false, "binop": null }, - "value": "pbrMetallicRoughness", - "start": 12072, - "end": 12092, + "value": "color", + "start": 12342, + "end": 12347, "loc": { "start": { - "line": 348, - "column": 33 + "line": 354, + "column": 31 }, "end": { - "line": 348, - "column": 53 + "line": 354, + "column": 36 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88226,25 +89961,24 @@ "binop": null, "updateContext": null }, - "start": 12092, - "end": 12093, + "start": 12347, + "end": 12348, "loc": { "start": { - "line": 348, - "column": 53 + "line": 354, + "column": 36 }, "end": { - "line": 348, - "column": 54 + "line": 354, + "column": 37 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88253,76 +89987,78 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 12098, - "end": 12100, + "value": 1, + "start": 12348, + "end": 12349, "loc": { "start": { - "line": 349, - "column": 4 + "line": 354, + "column": 37 }, "end": { - "line": 349, - "column": 6 + "line": 354, + "column": 38 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "]", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12101, - "end": 12102, + "start": 12349, + "end": 12350, "loc": { "start": { - "line": 349, - "column": 7 + "line": 354, + "column": 38 }, "end": { - "line": 349, - "column": 8 + "line": 354, + "column": 39 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metallicPBR", - "start": 12102, - "end": 12113, + "value": "=", + "start": 12351, + "end": 12352, "loc": { "start": { - "line": 349, - "column": 8 + "line": 354, + "column": 40 }, "end": { - "line": 349, - "column": 19 + "line": 354, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88330,22 +90066,23 @@ "postfix": false, "binop": null }, - "start": 12113, - "end": 12114, + "value": "baseColorFactor", + "start": 12353, + "end": 12368, "loc": { "start": { - "line": 349, - "column": 19 + "line": 354, + "column": 42 }, "end": { - "line": 349, - "column": 20 + "line": 354, + "column": 57 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -88353,27 +90090,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12115, - "end": 12116, + "start": 12368, + "end": 12369, "loc": { "start": { - "line": 349, - "column": 21 + "line": 354, + "column": 57 }, "end": { - "line": 349, - "column": 22 + "line": 354, + "column": 58 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88382,70 +90119,69 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 12125, - "end": 12130, + "value": 1, + "start": 12369, + "end": 12370, "loc": { "start": { - "line": 350, - "column": 8 + "line": 354, + "column": 58 }, "end": { - "line": 350, - "column": 13 + "line": 354, + "column": 59 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "baseColorFactor", - "start": 12131, - "end": 12146, + "start": 12370, + "end": 12371, "loc": { "start": { - "line": 350, - "column": 14 + "line": 354, + "column": 59 }, "end": { - "line": 350, - "column": 29 + "line": 354, + "column": 60 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 12147, - "end": 12148, + "start": 12371, + "end": 12372, "loc": { "start": { - "line": 350, - "column": 30 + "line": 354, + "column": 60 }, "end": { - "line": 350, - "column": 31 + "line": 354, + "column": 61 } } }, @@ -88461,17 +90197,17 @@ "postfix": false, "binop": null }, - "value": "metallicPBR", - "start": 12149, - "end": 12160, + "value": "materialAttributes", + "start": 12385, + "end": 12403, "loc": { "start": { - "line": 350, - "column": 32 + "line": 355, + "column": 12 }, "end": { - "line": 350, - "column": 43 + "line": 355, + "column": 30 } } }, @@ -88488,16 +90224,16 @@ "binop": null, "updateContext": null }, - "start": 12160, - "end": 12161, + "start": 12403, + "end": 12404, "loc": { "start": { - "line": 350, - "column": 43 + "line": 355, + "column": 30 }, "end": { - "line": 350, - "column": 44 + "line": 355, + "column": 31 } } }, @@ -88513,25 +90249,25 @@ "postfix": false, "binop": null }, - "value": "baseColorFactor", - "start": 12161, - "end": 12176, + "value": "color", + "start": 12404, + "end": 12409, "loc": { "start": { - "line": 350, - "column": 44 + "line": 355, + "column": 31 }, "end": { - "line": 350, - "column": 59 + "line": 355, + "column": 36 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88540,25 +90276,24 @@ "binop": null, "updateContext": null }, - "start": 12176, - "end": 12177, + "start": 12409, + "end": 12410, "loc": { "start": { - "line": 350, - "column": 59 + "line": 355, + "column": 36 }, "end": { - "line": 350, - "column": 60 + "line": 355, + "column": 37 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88567,76 +90302,78 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 12186, - "end": 12188, + "value": 2, + "start": 12410, + "end": 12411, "loc": { "start": { - "line": 351, - "column": 8 + "line": 355, + "column": 37 }, "end": { - "line": 351, - "column": 10 + "line": 355, + "column": 38 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "]", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12189, - "end": 12190, + "start": 12411, + "end": 12412, "loc": { "start": { - "line": 351, - "column": 11 + "line": 355, + "column": 38 }, "end": { - "line": 351, - "column": 12 + "line": 355, + "column": 39 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "baseColorFactor", - "start": 12190, - "end": 12205, + "value": "=", + "start": 12413, + "end": 12414, "loc": { "start": { - "line": 351, - "column": 12 + "line": 355, + "column": 40 }, "end": { - "line": 351, - "column": 27 + "line": 355, + "column": 41 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88644,22 +90381,23 @@ "postfix": false, "binop": null }, - "start": 12205, - "end": 12206, + "value": "baseColorFactor", + "start": 12415, + "end": 12430, "loc": { "start": { - "line": 351, - "column": 27 + "line": 355, + "column": 42 }, "end": { - "line": 351, - "column": 28 + "line": 355, + "column": 57 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -88667,24 +90405,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12207, - "end": 12208, + "start": 12430, + "end": 12431, "loc": { "start": { - "line": 351, - "column": 29 + "line": 355, + "column": 57 }, "end": { - "line": 351, - "column": 30 + "line": 355, + "column": 58 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -88692,25 +90431,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "materialAttributes", - "start": 12221, - "end": 12239, + "value": 2, + "start": 12431, + "end": 12432, "loc": { "start": { - "line": 352, - "column": 12 + "line": 355, + "column": 58 }, "end": { - "line": 352, - "column": 30 + "line": 355, + "column": 59 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -88721,76 +90461,76 @@ "binop": null, "updateContext": null }, - "start": 12239, - "end": 12240, + "start": 12432, + "end": 12433, "loc": { "start": { - "line": 352, - "column": 30 + "line": 355, + "column": 59 }, "end": { - "line": 352, - "column": 31 + "line": 355, + "column": 60 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "color", - "start": 12240, - "end": 12245, + "start": 12433, + "end": 12434, "loc": { "start": { - "line": 352, - "column": 31 + "line": 355, + "column": 60 }, "end": { - "line": 352, - "column": 36 + "line": 355, + "column": 61 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12245, - "end": 12246, + "value": "materialAttributes", + "start": 12447, + "end": 12465, "loc": { "start": { - "line": 352, - "column": 36 + "line": 356, + "column": 12 }, "end": { - "line": 352, - "column": 37 + "line": 356, + "column": 30 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -88799,43 +90539,42 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 12246, - "end": 12247, + "start": 12465, + "end": 12466, "loc": { "start": { - "line": 352, - "column": 37 + "line": 356, + "column": 30 }, "end": { - "line": 352, - "column": 38 + "line": 356, + "column": 31 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12247, - "end": 12248, + "value": "opacity", + "start": 12466, + "end": 12473, "loc": { "start": { - "line": 352, - "column": 38 + "line": 356, + "column": 31 }, "end": { - "line": 352, - "column": 39 + "line": 356, + "column": 38 } } }, @@ -88853,16 +90592,16 @@ "updateContext": null }, "value": "=", - "start": 12249, - "end": 12250, + "start": 12474, + "end": 12475, "loc": { "start": { - "line": 352, - "column": 40 + "line": 356, + "column": 39 }, "end": { - "line": 352, - "column": 41 + "line": 356, + "column": 40 } } }, @@ -88879,16 +90618,16 @@ "binop": null }, "value": "baseColorFactor", - "start": 12251, - "end": 12266, + "start": 12476, + "end": 12491, "loc": { "start": { - "line": 352, - "column": 42 + "line": 356, + "column": 41 }, "end": { - "line": 352, - "column": 57 + "line": 356, + "column": 56 } } }, @@ -88905,16 +90644,16 @@ "binop": null, "updateContext": null }, - "start": 12266, - "end": 12267, + "start": 12491, + "end": 12492, "loc": { "start": { - "line": 352, - "column": 57 + "line": 356, + "column": 56 }, "end": { - "line": 352, - "column": 58 + "line": 356, + "column": 57 } } }, @@ -88931,17 +90670,17 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 12267, - "end": 12268, + "value": 3, + "start": 12492, + "end": 12493, "loc": { "start": { - "line": 352, - "column": 58 + "line": 356, + "column": 57 }, "end": { - "line": 352, - "column": 59 + "line": 356, + "column": 58 } } }, @@ -88958,16 +90697,16 @@ "binop": null, "updateContext": null }, - "start": 12268, - "end": 12269, + "start": 12493, + "end": 12494, "loc": { "start": { - "line": 352, - "column": 59 + "line": 356, + "column": 58 }, "end": { - "line": 352, - "column": 60 + "line": 356, + "column": 59 } } }, @@ -88984,24 +90723,24 @@ "binop": null, "updateContext": null }, - "start": 12269, - "end": 12270, + "start": 12494, + "end": 12495, "loc": { "start": { - "line": 352, - "column": 60 + "line": 356, + "column": 59 }, "end": { - "line": 352, - "column": 61 + "line": 356, + "column": 60 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89009,23 +90748,23 @@ "postfix": false, "binop": null }, - "value": "materialAttributes", - "start": 12283, - "end": 12301, + "start": 12504, + "end": 12505, "loc": { "start": { - "line": 353, - "column": 12 + "line": 357, + "column": 8 }, "end": { - "line": 353, - "column": 30 + "line": 357, + "column": 9 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89036,16 +90775,17 @@ "binop": null, "updateContext": null }, - "start": 12301, - "end": 12302, + "value": "const", + "start": 12514, + "end": 12519, "loc": { "start": { - "line": 353, - "column": 30 + "line": 358, + "column": 8 }, "end": { - "line": 353, - "column": 31 + "line": 358, + "column": 13 } } }, @@ -89061,49 +90801,50 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 12302, - "end": 12307, + "value": "metallicFactor", + "start": 12520, + "end": 12534, "loc": { "start": { - "line": 353, - "column": 31 + "line": 358, + "column": 14 }, "end": { - "line": 353, - "column": 36 + "line": 358, + "column": 28 } } }, { "type": { - "label": "[", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 12307, - "end": 12308, + "value": "=", + "start": 12535, + "end": 12536, "loc": { "start": { - "line": 353, - "column": 36 + "line": 358, + "column": 29 }, "end": { - "line": 353, - "column": 37 + "line": 358, + "column": 30 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89111,26 +90852,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 12308, - "end": 12309, + "value": "metallicPBR", + "start": 12537, + "end": 12548, "loc": { "start": { - "line": 353, - "column": 37 + "line": 358, + "column": 31 }, "end": { - "line": 353, - "column": 38 + "line": 358, + "column": 42 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89141,77 +90881,77 @@ "binop": null, "updateContext": null }, - "start": 12309, - "end": 12310, + "start": 12548, + "end": 12549, "loc": { "start": { - "line": 353, - "column": 38 + "line": 358, + "column": 42 }, "end": { - "line": 353, - "column": 39 + "line": 358, + "column": 43 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 12311, - "end": 12312, + "value": "metallicFactor", + "start": 12549, + "end": 12563, "loc": { "start": { - "line": 353, - "column": 40 + "line": 358, + "column": 43 }, "end": { - "line": 353, - "column": 41 + "line": 358, + "column": 57 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "baseColorFactor", - "start": 12313, - "end": 12328, + "start": 12563, + "end": 12564, "loc": { "start": { - "line": 353, - "column": 42 + "line": 358, + "column": 57 }, "end": { - "line": 353, - "column": 57 + "line": 358, + "column": 58 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89220,75 +90960,74 @@ "binop": null, "updateContext": null }, - "start": 12328, - "end": 12329, + "value": "if", + "start": 12573, + "end": 12575, "loc": { "start": { - "line": 353, - "column": 57 + "line": 359, + "column": 8 }, "end": { - "line": 353, - "column": 58 + "line": 359, + "column": 10 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 12329, - "end": 12330, + "start": 12576, + "end": 12577, "loc": { "start": { - "line": 353, - "column": 58 + "line": 359, + "column": 11 }, "end": { - "line": 353, - "column": 59 + "line": 359, + "column": 12 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12330, - "end": 12331, + "value": "metallicFactor", + "start": 12577, + "end": 12591, "loc": { "start": { - "line": 353, - "column": 59 + "line": 359, + "column": 12 }, "end": { - "line": 353, - "column": 60 + "line": 359, + "column": 26 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -89296,25 +91035,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 12331, - "end": 12332, + "value": "!==", + "start": 12592, + "end": 12595, "loc": { "start": { - "line": 353, - "column": 60 + "line": 359, + "column": 27 }, "end": { - "line": 353, - "column": 61 + "line": 359, + "column": 30 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89322,45 +91063,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "materialAttributes", - "start": 12345, - "end": 12363, + "value": "null", + "start": 12596, + "end": 12600, "loc": { "start": { - "line": 354, - "column": 12 + "line": 359, + "column": 31 }, "end": { - "line": 354, - "column": 30 + "line": 359, + "column": 35 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 12363, - "end": 12364, + "value": "&&", + "start": 12601, + "end": 12603, "loc": { "start": { - "line": 354, - "column": 30 + "line": 359, + "column": 36 }, "end": { - "line": 354, - "column": 31 + "line": 359, + "column": 38 } } }, @@ -89376,49 +91119,50 @@ "postfix": false, "binop": null }, - "value": "color", - "start": 12364, - "end": 12369, + "value": "metallicFactor", + "start": 12604, + "end": 12618, "loc": { "start": { - "line": 354, - "column": 31 + "line": 359, + "column": 39 }, "end": { - "line": 354, - "column": 36 + "line": 359, + "column": 53 } } }, { "type": { - "label": "[", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 12369, - "end": 12370, + "value": "!==", + "start": 12619, + "end": 12622, "loc": { "start": { - "line": 354, - "column": 36 + "line": 359, + "column": 54 }, "end": { - "line": 354, - "column": 37 + "line": 359, + "column": 57 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89426,26 +91170,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 2, - "start": 12370, - "end": 12371, + "value": "undefined", + "start": 12623, + "end": 12632, "loc": { "start": { - "line": 354, - "column": 37 + "line": 359, + "column": 58 }, "end": { - "line": 354, - "column": 38 + "line": 359, + "column": 67 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89453,46 +91196,43 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12371, - "end": 12372, + "start": 12632, + "end": 12633, "loc": { "start": { - "line": 354, - "column": 38 + "line": 359, + "column": 67 }, "end": { - "line": 354, - "column": 39 + "line": 359, + "column": 68 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 12373, - "end": 12374, + "start": 12634, + "end": 12635, "loc": { "start": { - "line": 354, - "column": 40 + "line": 359, + "column": 69 }, "end": { - "line": 354, - "column": 41 + "line": 359, + "column": 70 } } }, @@ -89508,25 +91248,25 @@ "postfix": false, "binop": null }, - "value": "baseColorFactor", - "start": 12375, - "end": 12390, + "value": "materialAttributes", + "start": 12648, + "end": 12666, "loc": { "start": { - "line": 354, - "column": 42 + "line": 360, + "column": 12 }, "end": { - "line": 354, - "column": 57 + "line": 360, + "column": 30 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89535,22 +91275,22 @@ "binop": null, "updateContext": null }, - "start": 12390, - "end": 12391, + "start": 12666, + "end": 12667, "loc": { "start": { - "line": 354, - "column": 57 + "line": 360, + "column": 30 }, "end": { - "line": 354, - "column": 58 + "line": 360, + "column": 31 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89558,46 +91298,72 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "value": "metallic", + "start": 12667, + "end": 12675, + "loc": { + "start": { + "line": 360, + "column": 31 + }, + "end": { + "line": 360, + "column": 39 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "value": 2, - "start": 12391, - "end": 12392, + "value": "=", + "start": 12676, + "end": 12677, "loc": { "start": { - "line": 354, - "column": 58 + "line": 360, + "column": 40 }, "end": { - "line": 354, - "column": 59 + "line": 360, + "column": 41 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12392, - "end": 12393, + "value": "metallicFactor", + "start": 12678, + "end": 12692, "loc": { "start": { - "line": 354, - "column": 59 + "line": 360, + "column": 42 }, "end": { - "line": 354, - "column": 60 + "line": 360, + "column": 56 } } }, @@ -89614,24 +91380,24 @@ "binop": null, "updateContext": null }, - "start": 12393, - "end": 12394, + "start": 12692, + "end": 12693, "loc": { "start": { - "line": 354, - "column": 60 + "line": 360, + "column": 56 }, "end": { - "line": 354, - "column": 61 + "line": 360, + "column": 57 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89639,23 +91405,23 @@ "postfix": false, "binop": null }, - "value": "materialAttributes", - "start": 12407, - "end": 12425, + "start": 12702, + "end": 12703, "loc": { "start": { - "line": 355, - "column": 12 + "line": 361, + "column": 8 }, "end": { - "line": 355, - "column": 30 + "line": 361, + "column": 9 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89666,16 +91432,17 @@ "binop": null, "updateContext": null }, - "start": 12425, - "end": 12426, + "value": "const", + "start": 12712, + "end": 12717, "loc": { "start": { - "line": 355, - "column": 30 + "line": 362, + "column": 8 }, "end": { - "line": 355, - "column": 31 + "line": 362, + "column": 13 } } }, @@ -89691,17 +91458,17 @@ "postfix": false, "binop": null }, - "value": "opacity", - "start": 12426, - "end": 12433, + "value": "roughnessFactor", + "start": 12718, + "end": 12733, "loc": { "start": { - "line": 355, - "column": 31 + "line": 362, + "column": 14 }, "end": { - "line": 355, - "column": 38 + "line": 362, + "column": 29 } } }, @@ -89719,16 +91486,16 @@ "updateContext": null }, "value": "=", - "start": 12434, - "end": 12435, + "start": 12734, + "end": 12735, "loc": { "start": { - "line": 355, - "column": 39 + "line": 362, + "column": 30 }, "end": { - "line": 355, - "column": 40 + "line": 362, + "column": 31 } } }, @@ -89744,51 +91511,25 @@ "postfix": false, "binop": null }, - "value": "baseColorFactor", - "start": 12436, - "end": 12451, - "loc": { - "start": { - "line": 355, - "column": 41 - }, - "end": { - "line": 355, - "column": 56 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 12451, - "end": 12452, + "value": "metallicPBR", + "start": 12736, + "end": 12747, "loc": { "start": { - "line": 355, - "column": 56 + "line": 362, + "column": 32 }, "end": { - "line": 355, - "column": 57 + "line": 362, + "column": 43 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -89797,42 +91538,41 @@ "binop": null, "updateContext": null }, - "value": 3, - "start": 12452, - "end": 12453, + "start": 12747, + "end": 12748, "loc": { "start": { - "line": 355, - "column": 57 + "line": 362, + "column": 43 }, "end": { - "line": 355, - "column": 58 + "line": 362, + "column": 44 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12453, - "end": 12454, + "value": "roughnessFactor", + "start": 12748, + "end": 12763, "loc": { "start": { - "line": 355, - "column": 58 + "line": 362, + "column": 44 }, "end": { - "line": 355, + "line": 362, "column": 59 } } @@ -89850,22 +91590,23 @@ "binop": null, "updateContext": null }, - "start": 12454, - "end": 12455, + "start": 12763, + "end": 12764, "loc": { "start": { - "line": 355, + "line": 362, "column": 59 }, "end": { - "line": 355, + "line": 362, "column": 60 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -89873,46 +91614,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12464, - "end": 12465, + "value": "if", + "start": 12773, + "end": 12775, "loc": { "start": { - "line": 356, + "line": 363, "column": 8 }, "end": { - "line": 356, - "column": 9 + "line": 363, + "column": 10 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 12474, - "end": 12479, + "start": 12776, + "end": 12777, "loc": { "start": { - "line": 357, - "column": 8 + "line": 363, + "column": 11 }, "end": { - "line": 357, - "column": 13 + "line": 363, + "column": 12 } } }, @@ -89928,50 +91668,51 @@ "postfix": false, "binop": null }, - "value": "metallicFactor", - "start": 12480, - "end": 12494, + "value": "roughnessFactor", + "start": 12777, + "end": 12792, "loc": { "start": { - "line": 357, - "column": 14 + "line": 363, + "column": 12 }, "end": { - "line": 357, - "column": 28 + "line": 363, + "column": 27 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 12495, - "end": 12496, + "value": "!==", + "start": 12793, + "end": 12796, "loc": { "start": { - "line": 357, - "column": 29 + "line": 363, + "column": 28 }, "end": { - "line": 357, - "column": 30 + "line": 363, + "column": 31 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -89979,45 +91720,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "metallicPBR", - "start": 12497, - "end": 12508, + "value": "null", + "start": 12797, + "end": 12801, "loc": { "start": { - "line": 357, - "column": 31 + "line": 363, + "column": 32 }, "end": { - "line": 357, - "column": 42 + "line": 363, + "column": 36 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 12508, - "end": 12509, + "value": "&&", + "start": 12802, + "end": 12804, "loc": { "start": { - "line": 357, - "column": 42 + "line": 363, + "column": 37 }, "end": { - "line": 357, - "column": 43 + "line": 363, + "column": 39 } } }, @@ -90033,23 +91776,23 @@ "postfix": false, "binop": null }, - "value": "metallicFactor", - "start": 12509, - "end": 12523, + "value": "roughnessFactor", + "start": 12805, + "end": 12820, "loc": { "start": { - "line": 357, - "column": 43 + "line": 363, + "column": 40 }, "end": { - "line": 357, - "column": 57 + "line": 363, + "column": 55 } } }, { "type": { - "label": ";", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -90057,26 +91800,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "start": 12523, - "end": 12524, + "value": "!==", + "start": 12821, + "end": 12824, "loc": { "start": { - "line": 357, - "column": 57 + "line": 363, + "column": 56 }, "end": { - "line": 357, - "column": 58 + "line": 363, + "column": 59 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "undefined", + "start": 12825, + "end": 12834, + "loc": { + "start": { + "line": 363, + "column": 60 + }, + "end": { + "line": 363, + "column": 69 + } + } + }, + { + "type": { + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -90084,26 +91853,24 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 12533, - "end": 12535, + "start": 12834, + "end": 12835, "loc": { "start": { - "line": 358, - "column": 8 + "line": 363, + "column": 69 }, "end": { - "line": 358, - "column": 10 + "line": 363, + "column": 70 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -90113,16 +91880,16 @@ "postfix": false, "binop": null }, - "start": 12536, - "end": 12537, + "start": 12836, + "end": 12837, "loc": { "start": { - "line": 358, - "column": 11 + "line": 363, + "column": 71 }, "end": { - "line": 358, - "column": 12 + "line": 363, + "column": 72 } } }, @@ -90138,51 +91905,49 @@ "postfix": false, "binop": null }, - "value": "metallicFactor", - "start": 12537, - "end": 12551, + "value": "materialAttributes", + "start": 12850, + "end": 12868, "loc": { "start": { - "line": 358, + "line": 364, "column": 12 }, "end": { - "line": 358, - "column": 26 + "line": 364, + "column": 30 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 12552, - "end": 12555, + "start": 12868, + "end": 12869, "loc": { "start": { - "line": 358, - "column": 27 + "line": 364, + "column": 30 }, "end": { - "line": 358, - "column": 30 + "line": 364, + "column": 31 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -90190,47 +91955,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 12556, - "end": 12560, + "value": "roughness", + "start": 12869, + "end": 12878, "loc": { "start": { - "line": 358, + "line": 364, "column": 31 }, "end": { - "line": 358, - "column": 35 + "line": 364, + "column": 40 } } }, { "type": { - "label": "&&", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 12561, - "end": 12563, + "value": "=", + "start": 12879, + "end": 12880, "loc": { "start": { - "line": 358, - "column": 36 + "line": 364, + "column": 41 }, "end": { - "line": 358, - "column": 38 + "line": 364, + "column": 42 } } }, @@ -90246,23 +92010,23 @@ "postfix": false, "binop": null }, - "value": "metallicFactor", - "start": 12564, - "end": 12578, + "value": "roughnessFactor", + "start": 12881, + "end": 12896, "loc": { "start": { - "line": 358, - "column": 39 + "line": 364, + "column": 43 }, "end": { - "line": 358, - "column": 53 + "line": 364, + "column": 58 } } }, { "type": { - "label": "==/!=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -90270,28 +92034,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 12579, - "end": 12582, + "start": 12896, + "end": 12897, "loc": { "start": { - "line": 358, - "column": 54 + "line": 364, + "column": 58 }, "end": { - "line": 358, - "column": 57 + "line": 364, + "column": 59 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90299,23 +92062,22 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 12583, - "end": 12592, + "start": 12906, + "end": 12907, "loc": { "start": { - "line": 358, - "column": 58 + "line": 365, + "column": 8 }, "end": { - "line": 358, - "column": 67 + "line": 365, + "column": 9 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -90325,41 +92087,44 @@ "postfix": false, "binop": null }, - "start": 12592, - "end": 12593, + "start": 12912, + "end": 12913, "loc": { "start": { - "line": 358, - "column": 67 + "line": 366, + "column": 4 }, "end": { - "line": 358, - "column": 68 + "line": 366, + "column": 5 } } }, { "type": { - "label": "{", + "label": "return", + "keyword": "return", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12594, - "end": 12595, + "value": "return", + "start": 12918, + "end": 12924, "loc": { "start": { - "line": 358, - "column": 69 + "line": 367, + "column": 4 }, "end": { - "line": 358, - "column": 70 + "line": 367, + "column": 10 } } }, @@ -90376,23 +92141,23 @@ "binop": null }, "value": "materialAttributes", - "start": 12608, - "end": 12626, + "start": 12925, + "end": 12943, "loc": { "start": { - "line": 359, - "column": 12 + "line": 367, + "column": 11 }, "end": { - "line": 359, - "column": 30 + "line": 367, + "column": 29 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -90402,16 +92167,68 @@ "binop": null, "updateContext": null }, - "start": 12626, - "end": 12627, + "start": 12943, + "end": 12944, "loc": { "start": { - "line": 359, + "line": 367, + "column": 29 + }, + "end": { + "line": 367, "column": 30 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 12945, + "end": 12946, + "loc": { + "start": { + "line": 368, + "column": 0 }, "end": { - "line": 359, - "column": 31 + "line": 368, + "column": 1 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 12948, + "end": 12956, + "loc": { + "start": { + "line": 370, + "column": 0 + }, + "end": { + "line": 370, + "column": 8 } } }, @@ -90427,44 +92244,42 @@ "postfix": false, "binop": null }, - "value": "metallic", - "start": 12627, - "end": 12635, + "value": "parseDefaultScene", + "start": 12957, + "end": 12974, "loc": { "start": { - "line": 359, - "column": 31 + "line": 370, + "column": 9 }, "end": { - "line": 359, - "column": 39 + "line": 370, + "column": 26 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 12636, - "end": 12637, + "start": 12974, + "end": 12975, "loc": { "start": { - "line": 359, - "column": 40 + "line": 370, + "column": 26 }, "end": { - "line": 359, - "column": 41 + "line": 370, + "column": 27 } } }, @@ -90480,51 +92295,50 @@ "postfix": false, "binop": null }, - "value": "metallicFactor", - "start": 12638, - "end": 12652, + "value": "ctx", + "start": 12975, + "end": 12978, "loc": { "start": { - "line": 359, - "column": 42 + "line": 370, + "column": 27 }, "end": { - "line": 359, - "column": 56 + "line": 370, + "column": 30 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12652, - "end": 12653, + "start": 12978, + "end": 12979, "loc": { "start": { - "line": 359, - "column": 56 + "line": 370, + "column": 30 }, "end": { - "line": 359, - "column": 57 + "line": 370, + "column": 31 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -90532,16 +92346,16 @@ "postfix": false, "binop": null }, - "start": 12662, - "end": 12663, + "start": 12980, + "end": 12981, "loc": { "start": { - "line": 360, - "column": 8 + "line": 370, + "column": 32 }, "end": { - "line": 360, - "column": 9 + "line": 370, + "column": 33 } } }, @@ -90560,16 +92374,16 @@ "updateContext": null }, "value": "const", - "start": 12672, - "end": 12677, + "start": 12986, + "end": 12991, "loc": { "start": { - "line": 361, - "column": 8 + "line": 371, + "column": 4 }, "end": { - "line": 361, - "column": 13 + "line": 371, + "column": 9 } } }, @@ -90585,17 +92399,17 @@ "postfix": false, "binop": null }, - "value": "roughnessFactor", - "start": 12678, - "end": 12693, + "value": "gltfData", + "start": 12992, + "end": 13000, "loc": { "start": { - "line": 361, - "column": 14 + "line": 371, + "column": 10 }, "end": { - "line": 361, - "column": 29 + "line": 371, + "column": 18 } } }, @@ -90613,16 +92427,16 @@ "updateContext": null }, "value": "=", - "start": 12694, - "end": 12695, + "start": 13001, + "end": 13002, "loc": { "start": { - "line": 361, - "column": 30 + "line": 371, + "column": 19 }, "end": { - "line": 361, - "column": 31 + "line": 371, + "column": 20 } } }, @@ -90638,17 +92452,17 @@ "postfix": false, "binop": null }, - "value": "metallicPBR", - "start": 12696, - "end": 12707, + "value": "ctx", + "start": 13003, + "end": 13006, "loc": { "start": { - "line": 361, - "column": 32 + "line": 371, + "column": 21 }, "end": { - "line": 361, - "column": 43 + "line": 371, + "column": 24 } } }, @@ -90665,16 +92479,16 @@ "binop": null, "updateContext": null }, - "start": 12707, - "end": 12708, + "start": 13006, + "end": 13007, "loc": { "start": { - "line": 361, - "column": 43 + "line": 371, + "column": 24 }, "end": { - "line": 361, - "column": 44 + "line": 371, + "column": 25 } } }, @@ -90690,17 +92504,17 @@ "postfix": false, "binop": null }, - "value": "roughnessFactor", - "start": 12708, - "end": 12723, + "value": "gltfData", + "start": 13007, + "end": 13015, "loc": { "start": { - "line": 361, - "column": 44 + "line": 371, + "column": 25 }, "end": { - "line": 361, - "column": 59 + "line": 371, + "column": 33 } } }, @@ -90717,23 +92531,23 @@ "binop": null, "updateContext": null }, - "start": 12723, - "end": 12724, + "start": 13015, + "end": 13016, "loc": { "start": { - "line": 361, - "column": 59 + "line": 371, + "column": 33 }, "end": { - "line": 361, - "column": 60 + "line": 371, + "column": 34 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -90744,24 +92558,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 12733, - "end": 12735, + "value": "const", + "start": 13021, + "end": 13026, "loc": { "start": { - "line": 362, - "column": 8 + "line": 372, + "column": 4 }, "end": { - "line": 362, - "column": 10 + "line": 372, + "column": 9 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -90770,16 +92584,44 @@ "postfix": false, "binop": null }, - "start": 12736, - "end": 12737, + "value": "scene", + "start": 13027, + "end": 13032, "loc": { "start": { - "line": 362, - "column": 11 + "line": 372, + "column": 10 }, "end": { - "line": 362, - "column": 12 + "line": 372, + "column": 15 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 13033, + "end": 13034, + "loc": { + "start": { + "line": 372, + "column": 16 + }, + "end": { + "line": 372, + "column": 17 } } }, @@ -90795,51 +92637,49 @@ "postfix": false, "binop": null }, - "value": "roughnessFactor", - "start": 12737, - "end": 12752, + "value": "gltfData", + "start": 13035, + "end": 13043, "loc": { "start": { - "line": 362, - "column": 12 + "line": 372, + "column": 18 }, "end": { - "line": 362, - "column": 27 + "line": 372, + "column": 26 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 12753, - "end": 12756, + "start": 13043, + "end": 13044, "loc": { "start": { - "line": 362, - "column": 28 + "line": 372, + "column": 26 }, "end": { - "line": 362, - "column": 31 + "line": 372, + "column": 27 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -90847,26 +92687,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 12757, - "end": 12761, + "value": "scene", + "start": 13044, + "end": 13049, "loc": { "start": { - "line": 362, - "column": 32 + "line": 372, + "column": 27 }, "end": { - "line": 362, - "column": 36 + "line": 372, + "column": 32 } } }, { "type": { - "label": "&&", + "label": "||", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -90874,20 +92713,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": 1, "updateContext": null }, - "value": "&&", - "start": 12762, - "end": 12764, + "value": "||", + "start": 13050, + "end": 13052, "loc": { "start": { - "line": 362, - "column": 37 + "line": 372, + "column": 33 }, "end": { - "line": 362, - "column": 39 + "line": 372, + "column": 35 } } }, @@ -90903,44 +92742,43 @@ "postfix": false, "binop": null }, - "value": "roughnessFactor", - "start": 12765, - "end": 12780, + "value": "gltfData", + "start": 13053, + "end": 13061, "loc": { "start": { - "line": 362, - "column": 40 + "line": 372, + "column": 36 }, "end": { - "line": 362, - "column": 55 + "line": 372, + "column": 44 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "!==", - "start": 12781, - "end": 12784, + "start": 13061, + "end": 13062, "loc": { "start": { - "line": 362, - "column": 56 + "line": 372, + "column": 44 }, "end": { - "line": 362, - "column": 59 + "line": 372, + "column": 45 } } }, @@ -90956,100 +92794,103 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 12785, - "end": 12794, + "value": "scenes", + "start": 13062, + "end": 13068, "loc": { "start": { - "line": 362, - "column": 60 + "line": 372, + "column": 45 }, "end": { - "line": 362, - "column": 69 + "line": 372, + "column": 51 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12794, - "end": 12795, + "start": 13068, + "end": 13069, "loc": { "start": { - "line": 362, - "column": 69 + "line": 372, + "column": 51 }, "end": { - "line": 362, - "column": 70 + "line": 372, + "column": 52 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12796, - "end": 12797, + "value": 0, + "start": 13069, + "end": 13070, "loc": { "start": { - "line": 362, - "column": 71 + "line": 372, + "column": 52 }, "end": { - "line": 362, - "column": 72 + "line": 372, + "column": 53 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "materialAttributes", - "start": 12810, - "end": 12828, + "start": 13070, + "end": 13071, "loc": { "start": { - "line": 363, - "column": 12 + "line": 372, + "column": 53 }, "end": { - "line": 363, - "column": 30 + "line": 372, + "column": 54 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -91059,23 +92900,51 @@ "binop": null, "updateContext": null }, - "start": 12828, - "end": 12829, + "start": 13071, + "end": 13072, "loc": { "start": { - "line": 363, - "column": 30 + "line": 372, + "column": 54 }, "end": { - "line": 363, - "column": 31 + "line": 372, + "column": 55 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 13077, + "end": 13079, + "loc": { + "start": { + "line": 373, + "column": 4 + }, + "end": { + "line": 373, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -91084,44 +92953,43 @@ "postfix": false, "binop": null }, - "value": "roughness", - "start": 12829, - "end": 12838, + "start": 13080, + "end": 13081, "loc": { "start": { - "line": 363, - "column": 31 + "line": 373, + "column": 7 }, "end": { - "line": 363, - "column": 40 + "line": 373, + "column": 8 } } }, { "type": { - "label": "=", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, + "isAssign": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 12839, - "end": 12840, + "value": "!", + "start": 13081, + "end": 13082, "loc": { "start": { - "line": 363, - "column": 41 + "line": 373, + "column": 8 }, "end": { - "line": 363, - "column": 42 + "line": 373, + "column": 9 } } }, @@ -91137,51 +93005,50 @@ "postfix": false, "binop": null }, - "value": "roughnessFactor", - "start": 12841, - "end": 12856, + "value": "scene", + "start": 13082, + "end": 13087, "loc": { "start": { - "line": 363, - "column": 43 + "line": 373, + "column": 9 }, "end": { - "line": 363, - "column": 58 + "line": 373, + "column": 14 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12856, - "end": 12857, + "start": 13087, + "end": 13088, "loc": { "start": { - "line": 363, - "column": 58 + "line": 373, + "column": 14 }, "end": { - "line": 363, - "column": 59 + "line": 373, + "column": 15 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -91189,24 +93056,24 @@ "postfix": false, "binop": null }, - "start": 12866, - "end": 12867, + "start": 13089, + "end": 13090, "loc": { "start": { - "line": 364, - "column": 8 + "line": 373, + "column": 16 }, "end": { - "line": 364, - "column": 9 + "line": 373, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -91214,24 +93081,24 @@ "postfix": false, "binop": null }, - "start": 12872, - "end": 12873, + "value": "ctx", + "start": 13099, + "end": 13102, "loc": { "start": { - "line": 365, - "column": 4 + "line": 374, + "column": 8 }, "end": { - "line": 365, - "column": 5 + "line": 374, + "column": 11 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -91241,17 +93108,16 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 12878, - "end": 12884, + "start": 13102, + "end": 13103, "loc": { "start": { - "line": 366, - "column": 4 + "line": 374, + "column": 11 }, "end": { - "line": 366, - "column": 10 + "line": 374, + "column": 12 } } }, @@ -91267,77 +93133,77 @@ "postfix": false, "binop": null }, - "value": "materialAttributes", - "start": 12885, - "end": 12903, + "value": "error", + "start": 13103, + "end": 13108, "loc": { "start": { - "line": 366, - "column": 11 + "line": 374, + "column": 12 }, "end": { - "line": 366, - "column": 29 + "line": 374, + "column": 17 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12903, - "end": 12904, + "start": 13108, + "end": 13109, "loc": { "start": { - "line": 366, - "column": 29 + "line": 374, + "column": 17 }, "end": { - "line": 366, - "column": 30 + "line": 374, + "column": 18 } } }, { "type": { - "label": "}", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12905, - "end": 12906, + "value": "glTF has no default scene", + "start": 13109, + "end": 13136, "loc": { "start": { - "line": 367, - "column": 0 + "line": 374, + "column": 18 }, "end": { - "line": 367, - "column": 1 + "line": 374, + "column": 45 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -91345,100 +93211,102 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 12908, - "end": 12916, + "start": 13136, + "end": 13137, "loc": { "start": { - "line": 369, - "column": 0 + "line": 374, + "column": 45 }, "end": { - "line": 369, - "column": 8 + "line": 374, + "column": 46 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseDefaultScene", - "start": 12917, - "end": 12934, + "start": 13137, + "end": 13138, "loc": { "start": { - "line": 369, - "column": 9 + "line": 374, + "column": 46 }, "end": { - "line": 369, - "column": 26 + "line": 374, + "column": 47 } } }, { "type": { - "label": "(", + "label": "return", + "keyword": "return", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 12934, - "end": 12935, + "value": "return", + "start": 13147, + "end": 13153, "loc": { "start": { - "line": 369, - "column": 26 + "line": 375, + "column": 8 }, "end": { - "line": 369, - "column": 27 + "line": 375, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 12935, - "end": 12938, + "start": 13153, + "end": 13154, "loc": { "start": { - "line": 369, - "column": 27 + "line": 375, + "column": 14 }, "end": { - "line": 369, - "column": 30 + "line": 375, + "column": 15 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91448,23 +93316,23 @@ "postfix": false, "binop": null }, - "start": 12938, - "end": 12939, + "start": 13159, + "end": 13160, "loc": { "start": { - "line": 369, - "column": 30 + "line": 376, + "column": 4 }, "end": { - "line": 369, - "column": 31 + "line": 376, + "column": 5 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -91473,44 +93341,42 @@ "postfix": false, "binop": null }, - "start": 12940, - "end": 12941, + "value": "parseScene", + "start": 13165, + "end": 13175, "loc": { "start": { - "line": 369, - "column": 32 + "line": 377, + "column": 4 }, "end": { - "line": 369, - "column": 33 + "line": 377, + "column": 14 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 12946, - "end": 12951, + "start": 13175, + "end": 13176, "loc": { "start": { - "line": 370, - "column": 4 + "line": 377, + "column": 14 }, "end": { - "line": 370, - "column": 9 + "line": 377, + "column": 15 } } }, @@ -91526,44 +93392,43 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 12952, - "end": 12960, + "value": "ctx", + "start": 13176, + "end": 13179, "loc": { "start": { - "line": 370, - "column": 10 + "line": 377, + "column": 15 }, "end": { - "line": 370, + "line": 377, "column": 18 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 12961, - "end": 12962, + "start": 13179, + "end": 13180, "loc": { "start": { - "line": 370, - "column": 19 + "line": 377, + "column": 18 }, "end": { - "line": 370, - "column": 20 + "line": 377, + "column": 19 } } }, @@ -91579,23 +93444,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 12963, - "end": 12966, + "value": "scene", + "start": 13181, + "end": 13186, "loc": { "start": { - "line": 370, - "column": 21 + "line": 377, + "column": 20 }, "end": { - "line": 370, - "column": 24 + "line": 377, + "column": 25 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91603,99 +93468,96 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12966, - "end": 12967, + "start": 13186, + "end": 13187, "loc": { "start": { - "line": 370, - "column": 24 + "line": 377, + "column": 25 }, "end": { - "line": 370, - "column": 25 + "line": 377, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "gltfData", - "start": 12967, - "end": 12975, + "start": 13187, + "end": 13188, "loc": { "start": { - "line": 370, - "column": 25 + "line": 377, + "column": 26 }, "end": { - "line": 370, - "column": 33 + "line": 377, + "column": 27 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 12975, - "end": 12976, + "start": 13189, + "end": 13190, "loc": { "start": { - "line": 370, - "column": 33 + "line": 378, + "column": 0 }, "end": { - "line": 370, - "column": 34 + "line": 378, + "column": 1 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "function", + "keyword": "function", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 12981, - "end": 12986, + "value": "function", + "start": 13192, + "end": 13200, "loc": { "start": { - "line": 371, - "column": 4 + "line": 380, + "column": 0 }, "end": { - "line": 371, - "column": 9 + "line": 380, + "column": 8 } } }, @@ -91711,44 +93573,42 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 12987, - "end": 12992, + "value": "parseScene", + "start": 13201, + "end": 13211, "loc": { "start": { - "line": 371, - "column": 10 + "line": 380, + "column": 9 }, "end": { - "line": 371, - "column": 15 + "line": 380, + "column": 19 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 12993, - "end": 12994, + "start": 13211, + "end": 13212, "loc": { "start": { - "line": 371, - "column": 16 + "line": 380, + "column": 19 }, "end": { - "line": 371, - "column": 17 + "line": 380, + "column": 20 } } }, @@ -91764,24 +93624,24 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 12995, - "end": 13003, + "value": "ctx", + "start": 13212, + "end": 13215, "loc": { "start": { - "line": 371, - "column": 18 + "line": 380, + "column": 20 }, "end": { - "line": 371, - "column": 26 + "line": 380, + "column": 23 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -91791,16 +93651,16 @@ "binop": null, "updateContext": null }, - "start": 13003, - "end": 13004, + "start": 13215, + "end": 13216, "loc": { "start": { - "line": 371, - "column": 26 + "line": 380, + "column": 23 }, "end": { - "line": 371, - "column": 27 + "line": 380, + "column": 24 } } }, @@ -91817,50 +93677,48 @@ "binop": null }, "value": "scene", - "start": 13004, - "end": 13009, + "start": 13217, + "end": 13222, "loc": { "start": { - "line": 371, - "column": 27 + "line": 380, + "column": 25 }, "end": { - "line": 371, - "column": 32 + "line": 380, + "column": 30 } } }, { "type": { - "label": "||", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, - "updateContext": null + "binop": null }, - "value": "||", - "start": 13010, - "end": 13012, + "start": 13222, + "end": 13223, "loc": { "start": { - "line": 371, - "column": 33 + "line": 380, + "column": 30 }, "end": { - "line": 371, - "column": 35 + "line": 380, + "column": 31 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -91869,23 +93727,23 @@ "postfix": false, "binop": null }, - "value": "gltfData", - "start": 13013, - "end": 13021, + "start": 13224, + "end": 13225, "loc": { "start": { - "line": 371, - "column": 36 + "line": 380, + "column": 32 }, "end": { - "line": 371, - "column": 44 + "line": 380, + "column": 33 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -91896,16 +93754,17 @@ "binop": null, "updateContext": null }, - "start": 13021, - "end": 13022, + "value": "const", + "start": 13230, + "end": 13235, "loc": { "start": { - "line": 371, - "column": 44 + "line": 381, + "column": 4 }, "end": { - "line": 371, - "column": 45 + "line": 381, + "column": 9 } } }, @@ -91921,49 +93780,50 @@ "postfix": false, "binop": null }, - "value": "scenes", - "start": 13022, - "end": 13028, + "value": "nodes", + "start": 13236, + "end": 13241, "loc": { "start": { - "line": 371, - "column": 45 + "line": 381, + "column": 10 }, "end": { - "line": 371, - "column": 51 + "line": 381, + "column": 15 } } }, { "type": { - "label": "[", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13028, - "end": 13029, + "value": "=", + "start": 13242, + "end": 13243, "loc": { "start": { - "line": 371, - "column": 51 + "line": 381, + "column": 16 }, "end": { - "line": 371, - "column": 52 + "line": 381, + "column": 17 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -91971,26 +93831,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 13029, - "end": 13030, + "value": "scene", + "start": 13244, + "end": 13249, "loc": { "start": { - "line": 371, - "column": 52 + "line": 381, + "column": 18 }, "end": { - "line": 371, - "column": 53 + "line": 381, + "column": 23 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -92001,16 +93860,42 @@ "binop": null, "updateContext": null }, - "start": 13030, - "end": 13031, + "start": 13249, + "end": 13250, "loc": { "start": { - "line": 371, - "column": 53 + "line": 381, + "column": 23 }, "end": { - "line": 371, - "column": 54 + "line": 381, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "nodes", + "start": 13250, + "end": 13255, + "loc": { + "start": { + "line": 381, + "column": 24 + }, + "end": { + "line": 381, + "column": 29 } } }, @@ -92027,16 +93912,16 @@ "binop": null, "updateContext": null }, - "start": 13031, - "end": 13032, + "start": 13255, + "end": 13256, "loc": { "start": { - "line": 371, - "column": 54 + "line": 381, + "column": 29 }, "end": { - "line": 371, - "column": 55 + "line": 381, + "column": 30 } } }, @@ -92055,15 +93940,15 @@ "updateContext": null }, "value": "if", - "start": 13037, - "end": 13039, + "start": 13261, + "end": 13263, "loc": { "start": { - "line": 372, + "line": 382, "column": 4 }, "end": { - "line": 372, + "line": 382, "column": 6 } } @@ -92080,15 +93965,15 @@ "postfix": false, "binop": null }, - "start": 13040, - "end": 13041, + "start": 13264, + "end": 13265, "loc": { "start": { - "line": 372, + "line": 382, "column": 7 }, "end": { - "line": 372, + "line": 382, "column": 8 } } @@ -92107,15 +93992,15 @@ "updateContext": null }, "value": "!", - "start": 13041, - "end": 13042, + "start": 13265, + "end": 13266, "loc": { "start": { - "line": 372, + "line": 382, "column": 8 }, "end": { - "line": 372, + "line": 382, "column": 9 } } @@ -92132,16 +94017,16 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 13042, - "end": 13047, + "value": "nodes", + "start": 13266, + "end": 13271, "loc": { "start": { - "line": 372, + "line": 382, "column": 9 }, "end": { - "line": 372, + "line": 382, "column": 14 } } @@ -92158,15 +94043,15 @@ "postfix": false, "binop": null }, - "start": 13047, - "end": 13048, + "start": 13271, + "end": 13272, "loc": { "start": { - "line": 372, + "line": 382, "column": 14 }, "end": { - "line": 372, + "line": 382, "column": 15 } } @@ -92183,49 +94068,24 @@ "postfix": false, "binop": null }, - "start": 13049, - "end": 13050, + "start": 13273, + "end": 13274, "loc": { "start": { - "line": 372, + "line": 382, "column": 16 }, "end": { - "line": 372, + "line": 382, "column": 17 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "ctx", - "start": 13059, - "end": 13062, - "loc": { - "start": { - "line": 373, - "column": 8 - }, - "end": { - "line": 373, - "column": 11 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -92235,75 +94095,25 @@ "binop": null, "updateContext": null }, - "start": 13062, - "end": 13063, - "loc": { - "start": { - "line": 373, - "column": 11 - }, - "end": { - "line": 373, - "column": 12 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "error", - "start": 13063, - "end": 13068, + "value": "return", + "start": 13283, + "end": 13289, "loc": { "start": { - "line": 373, - "column": 12 + "line": 383, + "column": 8 }, "end": { - "line": 373, - "column": 17 + "line": 383, + "column": 14 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 13068, - "end": 13069, - "loc": { - "start": { - "line": 373, - "column": 17 - }, - "end": { - "line": 373, - "column": 18 - } - } - }, - { - "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -92312,23 +94122,22 @@ "binop": null, "updateContext": null }, - "value": "glTF has no default scene", - "start": 13069, - "end": 13096, + "start": 13289, + "end": 13290, "loc": { "start": { - "line": 373, - "column": 18 + "line": 383, + "column": 14 }, "end": { - "line": 373, - "column": 45 + "line": 383, + "column": 15 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -92338,102 +94147,76 @@ "postfix": false, "binop": null }, - "start": 13096, - "end": 13097, - "loc": { - "start": { - "line": 373, - "column": 45 - }, - "end": { - "line": 373, - "column": 46 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 13097, - "end": 13098, + "start": 13295, + "end": 13296, "loc": { "start": { - "line": 373, - "column": 46 + "line": 384, + "column": 4 }, "end": { - "line": 373, - "column": 47 + "line": 384, + "column": 5 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "for", + "keyword": "for", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "return", - "start": 13107, - "end": 13113, + "value": "for", + "start": 13301, + "end": 13304, "loc": { "start": { - "line": 374, - "column": 8 + "line": 385, + "column": 4 }, "end": { - "line": 374, - "column": 14 + "line": 385, + "column": 7 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13113, - "end": 13114, + "start": 13305, + "end": 13306, "loc": { "start": { - "line": 374, - "column": 14 + "line": 385, + "column": 8 }, "end": { - "line": 374, - "column": 15 + "line": 385, + "column": 9 } } }, { "type": { - "label": "}", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -92441,18 +94224,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13119, - "end": 13120, + "value": "let", + "start": 13306, + "end": 13309, "loc": { "start": { - "line": 375, - "column": 4 + "line": 385, + "column": 9 }, "end": { - "line": 375, - "column": 5 + "line": 385, + "column": 12 } } }, @@ -92468,48 +94253,50 @@ "postfix": false, "binop": null }, - "value": "parseScene", - "start": 13125, - "end": 13135, + "value": "i", + "start": 13310, + "end": 13311, "loc": { "start": { - "line": 376, - "column": 4 + "line": 385, + "column": 13 }, "end": { - "line": 376, + "line": 385, "column": 14 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13135, - "end": 13136, + "value": "=", + "start": 13312, + "end": 13313, "loc": { "start": { - "line": 376, - "column": 14 + "line": 385, + "column": 15 }, "end": { - "line": 376, - "column": 15 + "line": 385, + "column": 16 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -92517,18 +94304,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 13136, - "end": 13139, + "value": 0, + "start": 13314, + "end": 13315, "loc": { "start": { - "line": 376, - "column": 15 + "line": 385, + "column": 17 }, "end": { - "line": 376, + "line": 385, "column": 18 } } @@ -92546,15 +94334,15 @@ "binop": null, "updateContext": null }, - "start": 13139, - "end": 13140, + "start": 13315, + "end": 13316, "loc": { "start": { - "line": 376, + "line": 385, "column": 18 }, "end": { - "line": 376, + "line": 385, "column": 19 } } @@ -92571,25 +94359,52 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 13141, - "end": 13146, + "value": "len", + "start": 13317, + "end": 13320, "loc": { "start": { - "line": 376, + "line": 385, "column": 20 }, "end": { - "line": 376, + "line": 385, + "column": 23 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 13321, + "end": 13322, + "loc": { + "start": { + "line": 385, + "column": 24 + }, + "end": { + "line": 385, "column": 25 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -92597,23 +94412,24 @@ "postfix": false, "binop": null }, - "start": 13146, - "end": 13147, + "value": "nodes", + "start": 13323, + "end": 13328, "loc": { "start": { - "line": 376, - "column": 25 + "line": 385, + "column": 26 }, "end": { - "line": 376, - "column": 26 + "line": 385, + "column": 31 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -92623,24 +94439,24 @@ "binop": null, "updateContext": null }, - "start": 13147, - "end": 13148, + "start": 13328, + "end": 13329, "loc": { "start": { - "line": 376, - "column": 26 + "line": 385, + "column": 31 }, "end": { - "line": 376, - "column": 27 + "line": 385, + "column": 32 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -92648,43 +94464,43 @@ "postfix": false, "binop": null }, - "start": 13149, - "end": 13150, + "value": "length", + "start": 13329, + "end": 13335, "loc": { "start": { - "line": 377, - "column": 0 + "line": 385, + "column": 32 }, "end": { - "line": 377, - "column": 1 + "line": 385, + "column": 38 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 13152, - "end": 13160, + "start": 13335, + "end": 13336, "loc": { "start": { - "line": 379, - "column": 0 + "line": 385, + "column": 38 }, "end": { - "line": 379, - "column": 8 + "line": 385, + "column": 39 } } }, @@ -92700,42 +94516,44 @@ "postfix": false, "binop": null }, - "value": "parseScene", - "start": 13161, - "end": 13171, + "value": "i", + "start": 13337, + "end": 13338, "loc": { "start": { - "line": 379, - "column": 9 + "line": 385, + "column": 40 }, "end": { - "line": 379, - "column": 19 + "line": 385, + "column": 41 } } }, { "type": { - "label": "(", + "label": "", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 7, + "updateContext": null }, - "start": 13171, - "end": 13172, + "value": "<", + "start": 13339, + "end": 13340, "loc": { "start": { - "line": 379, - "column": 19 + "line": 385, + "column": 42 }, "end": { - "line": 379, - "column": 20 + "line": 385, + "column": 43 } } }, @@ -92751,23 +94569,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 13172, - "end": 13175, + "value": "len", + "start": 13341, + "end": 13344, "loc": { "start": { - "line": 379, - "column": 20 + "line": 385, + "column": 44 }, "end": { - "line": 379, - "column": 23 + "line": 385, + "column": 47 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -92778,16 +94596,16 @@ "binop": null, "updateContext": null }, - "start": 13175, - "end": 13176, + "start": 13344, + "end": 13345, "loc": { "start": { - "line": 379, - "column": 23 + "line": 385, + "column": 47 }, "end": { - "line": 379, - "column": 24 + "line": 385, + "column": 48 } } }, @@ -92803,17 +94621,43 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 13177, - "end": 13182, + "value": "i", + "start": 13346, + "end": 13347, "loc": { "start": { - "line": 379, - "column": 25 + "line": 385, + "column": 49 }, "end": { - "line": 379, - "column": 30 + "line": 385, + "column": 50 + } + } + }, + { + "type": { + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": true, + "binop": null + }, + "value": "++", + "start": 13347, + "end": 13349, + "loc": { + "start": { + "line": 385, + "column": 50 + }, + "end": { + "line": 385, + "column": 52 } } }, @@ -92829,16 +94673,16 @@ "postfix": false, "binop": null }, - "start": 13182, - "end": 13183, + "start": 13349, + "end": 13350, "loc": { "start": { - "line": 379, - "column": 30 + "line": 385, + "column": 52 }, "end": { - "line": 379, - "column": 31 + "line": 385, + "column": 53 } } }, @@ -92854,16 +94698,16 @@ "postfix": false, "binop": null }, - "start": 13184, - "end": 13185, + "start": 13351, + "end": 13352, "loc": { "start": { - "line": 379, - "column": 32 + "line": 385, + "column": 54 }, "end": { - "line": 379, - "column": 33 + "line": 385, + "column": 55 } } }, @@ -92882,16 +94726,16 @@ "updateContext": null }, "value": "const", - "start": 13190, - "end": 13195, + "start": 13361, + "end": 13366, "loc": { "start": { - "line": 380, - "column": 4 + "line": 386, + "column": 8 }, "end": { - "line": 380, - "column": 9 + "line": 386, + "column": 13 } } }, @@ -92907,17 +94751,17 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 13196, - "end": 13201, + "value": "node", + "start": 13367, + "end": 13371, "loc": { "start": { - "line": 380, - "column": 10 + "line": 386, + "column": 14 }, "end": { - "line": 380, - "column": 15 + "line": 386, + "column": 18 } } }, @@ -92935,16 +94779,16 @@ "updateContext": null }, "value": "=", - "start": 13202, - "end": 13203, + "start": 13372, + "end": 13373, "loc": { "start": { - "line": 380, - "column": 16 + "line": 386, + "column": 19 }, "end": { - "line": 380, - "column": 17 + "line": 386, + "column": 20 } } }, @@ -92960,25 +94804,25 @@ "postfix": false, "binop": null }, - "value": "scene", - "start": 13204, - "end": 13209, + "value": "nodes", + "start": 13374, + "end": 13379, "loc": { "start": { - "line": 380, - "column": 18 + "line": 386, + "column": 21 }, "end": { - "line": 380, - "column": 23 + "line": 386, + "column": 26 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -92987,16 +94831,16 @@ "binop": null, "updateContext": null }, - "start": 13209, - "end": 13210, + "start": 13379, + "end": 13380, "loc": { "start": { - "line": 380, - "column": 23 + "line": 386, + "column": 26 }, "end": { - "line": 380, - "column": 24 + "line": 386, + "column": 27 } } }, @@ -93012,24 +94856,24 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 13210, - "end": 13215, + "value": "i", + "start": 13380, + "end": 13381, "loc": { "start": { - "line": 380, - "column": 24 + "line": 386, + "column": 27 }, "end": { - "line": 380, - "column": 29 + "line": 386, + "column": 28 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -93039,24 +94883,23 @@ "binop": null, "updateContext": null }, - "start": 13215, - "end": 13216, + "start": 13381, + "end": 13382, "loc": { "start": { - "line": 380, - "column": 29 + "line": 386, + "column": 28 }, "end": { - "line": 380, - "column": 30 + "line": 386, + "column": 29 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -93066,24 +94909,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 13221, - "end": 13223, + "start": 13382, + "end": 13383, "loc": { "start": { - "line": 381, - "column": 4 + "line": 386, + "column": 29 }, "end": { - "line": 381, - "column": 6 + "line": 386, + "column": 30 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -93092,43 +94934,42 @@ "postfix": false, "binop": null }, - "start": 13224, - "end": 13225, + "value": "countMeshUsage", + "start": 13392, + "end": 13406, "loc": { "start": { - "line": 381, - "column": 7 + "line": 387, + "column": 8 }, "end": { - "line": 381, - "column": 8 + "line": 387, + "column": 22 } } }, { "type": { - "label": "prefix", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 13225, - "end": 13226, + "start": 13406, + "end": 13407, "loc": { "start": { - "line": 381, - "column": 8 + "line": 387, + "column": 22 }, "end": { - "line": 381, - "column": 9 + "line": 387, + "column": 23 } } }, @@ -93144,49 +94985,50 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 13226, - "end": 13231, + "value": "ctx", + "start": 13407, + "end": 13410, "loc": { "start": { - "line": 381, - "column": 9 + "line": 387, + "column": 23 }, "end": { - "line": 381, - "column": 14 + "line": 387, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13231, - "end": 13232, + "start": 13410, + "end": 13411, "loc": { "start": { - "line": 381, - "column": 14 + "line": 387, + "column": 26 }, "end": { - "line": 381, - "column": 15 + "line": 387, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -93195,44 +95037,42 @@ "postfix": false, "binop": null }, - "start": 13233, - "end": 13234, + "value": "node", + "start": 13412, + "end": 13416, "loc": { "start": { - "line": 381, - "column": 16 + "line": 387, + "column": 28 }, "end": { - "line": 381, - "column": 17 + "line": 387, + "column": 32 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 13243, - "end": 13249, + "start": 13416, + "end": 13417, "loc": { "start": { - "line": 382, - "column": 8 + "line": 387, + "column": 32 }, "end": { - "line": 382, - "column": 14 + "line": 387, + "column": 33 } } }, @@ -93249,16 +95089,16 @@ "binop": null, "updateContext": null }, - "start": 13249, - "end": 13250, + "start": 13417, + "end": 13418, "loc": { "start": { - "line": 382, - "column": 14 + "line": 387, + "column": 33 }, "end": { - "line": 382, - "column": 15 + "line": 387, + "column": 34 } } }, @@ -93274,15 +95114,15 @@ "postfix": false, "binop": null }, - "start": 13255, - "end": 13256, + "start": 13423, + "end": 13424, "loc": { "start": { - "line": 383, + "line": 388, "column": 4 }, "end": { - "line": 383, + "line": 388, "column": 5 } } @@ -93302,15 +95142,15 @@ "updateContext": null }, "value": "for", - "start": 13261, - "end": 13264, + "start": 13429, + "end": 13432, "loc": { "start": { - "line": 384, + "line": 389, "column": 4 }, "end": { - "line": 384, + "line": 389, "column": 7 } } @@ -93327,15 +95167,15 @@ "postfix": false, "binop": null }, - "start": 13265, - "end": 13266, + "start": 13433, + "end": 13434, "loc": { "start": { - "line": 384, + "line": 389, "column": 8 }, "end": { - "line": 384, + "line": 389, "column": 9 } } @@ -93355,15 +95195,15 @@ "updateContext": null }, "value": "let", - "start": 13266, - "end": 13269, + "start": 13434, + "end": 13437, "loc": { "start": { - "line": 384, + "line": 389, "column": 9 }, "end": { - "line": 384, + "line": 389, "column": 12 } } @@ -93381,15 +95221,15 @@ "binop": null }, "value": "i", - "start": 13270, - "end": 13271, + "start": 13438, + "end": 13439, "loc": { "start": { - "line": 384, + "line": 389, "column": 13 }, "end": { - "line": 384, + "line": 389, "column": 14 } } @@ -93408,15 +95248,15 @@ "updateContext": null }, "value": "=", - "start": 13272, - "end": 13273, + "start": 13440, + "end": 13441, "loc": { "start": { - "line": 384, + "line": 389, "column": 15 }, "end": { - "line": 384, + "line": 389, "column": 16 } } @@ -93435,15 +95275,15 @@ "updateContext": null }, "value": 0, - "start": 13274, - "end": 13275, + "start": 13442, + "end": 13443, "loc": { "start": { - "line": 384, + "line": 389, "column": 17 }, "end": { - "line": 384, + "line": 389, "column": 18 } } @@ -93461,15 +95301,15 @@ "binop": null, "updateContext": null }, - "start": 13275, - "end": 13276, + "start": 13443, + "end": 13444, "loc": { "start": { - "line": 384, + "line": 389, "column": 18 }, "end": { - "line": 384, + "line": 389, "column": 19 } } @@ -93487,15 +95327,15 @@ "binop": null }, "value": "len", - "start": 13277, - "end": 13280, + "start": 13445, + "end": 13448, "loc": { "start": { - "line": 384, + "line": 389, "column": 20 }, "end": { - "line": 384, + "line": 389, "column": 23 } } @@ -93514,15 +95354,15 @@ "updateContext": null }, "value": "=", - "start": 13281, - "end": 13282, + "start": 13449, + "end": 13450, "loc": { "start": { - "line": 384, + "line": 389, "column": 24 }, "end": { - "line": 384, + "line": 389, "column": 25 } } @@ -93540,15 +95380,15 @@ "binop": null }, "value": "nodes", - "start": 13283, - "end": 13288, + "start": 13451, + "end": 13456, "loc": { "start": { - "line": 384, + "line": 389, "column": 26 }, "end": { - "line": 384, + "line": 389, "column": 31 } } @@ -93566,15 +95406,15 @@ "binop": null, "updateContext": null }, - "start": 13288, - "end": 13289, + "start": 13456, + "end": 13457, "loc": { "start": { - "line": 384, + "line": 389, "column": 31 }, "end": { - "line": 384, + "line": 389, "column": 32 } } @@ -93592,15 +95432,15 @@ "binop": null }, "value": "length", - "start": 13289, - "end": 13295, + "start": 13457, + "end": 13463, "loc": { "start": { - "line": 384, + "line": 389, "column": 32 }, "end": { - "line": 384, + "line": 389, "column": 38 } } @@ -93618,15 +95458,15 @@ "binop": null, "updateContext": null }, - "start": 13295, - "end": 13296, + "start": 13463, + "end": 13464, "loc": { "start": { - "line": 384, + "line": 389, "column": 38 }, "end": { - "line": 384, + "line": 389, "column": 39 } } @@ -93644,15 +95484,15 @@ "binop": null }, "value": "i", - "start": 13297, - "end": 13298, + "start": 13465, + "end": 13466, "loc": { "start": { - "line": 384, + "line": 389, "column": 40 }, "end": { - "line": 384, + "line": 389, "column": 41 } } @@ -93671,15 +95511,15 @@ "updateContext": null }, "value": "<", - "start": 13299, - "end": 13300, + "start": 13467, + "end": 13468, "loc": { "start": { - "line": 384, + "line": 389, "column": 42 }, "end": { - "line": 384, + "line": 389, "column": 43 } } @@ -93697,19 +95537,151 @@ "binop": null }, "value": "len", - "start": 13301, - "end": 13304, + "start": 13469, + "end": 13472, "loc": { "start": { - "line": 384, + "line": 389, "column": 44 }, "end": { - "line": 384, + "line": 389, "column": 47 } } }, + { + "type": { + "label": "&&", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": 2, + "updateContext": null + }, + "value": "&&", + "start": 13473, + "end": 13475, + "loc": { + "start": { + "line": 389, + "column": 48 + }, + "end": { + "line": 389, + "column": 50 + } + } + }, + { + "type": { + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": true, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "!", + "start": 13476, + "end": 13477, + "loc": { + "start": { + "line": 389, + "column": 51 + }, + "end": { + "line": 389, + "column": 52 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ctx", + "start": 13477, + "end": 13480, + "loc": { + "start": { + "line": 389, + "column": 52 + }, + "end": { + "line": 389, + "column": 55 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 13480, + "end": 13481, + "loc": { + "start": { + "line": 389, + "column": 55 + }, + "end": { + "line": 389, + "column": 56 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "nodesHaveNames", + "start": 13481, + "end": 13495, + "loc": { + "start": { + "line": 389, + "column": 56 + }, + "end": { + "line": 389, + "column": 70 + } + } + }, { "type": { "label": ";", @@ -93723,16 +95695,16 @@ "binop": null, "updateContext": null }, - "start": 13304, - "end": 13305, + "start": 13495, + "end": 13496, "loc": { "start": { - "line": 384, - "column": 47 + "line": 389, + "column": 70 }, "end": { - "line": 384, - "column": 48 + "line": 389, + "column": 71 } } }, @@ -93749,16 +95721,16 @@ "binop": null }, "value": "i", - "start": 13306, - "end": 13307, + "start": 13497, + "end": 13498, "loc": { "start": { - "line": 384, - "column": 49 + "line": 389, + "column": 72 }, "end": { - "line": 384, - "column": 50 + "line": 389, + "column": 73 } } }, @@ -93775,16 +95747,16 @@ "binop": null }, "value": "++", - "start": 13307, - "end": 13309, + "start": 13498, + "end": 13500, "loc": { "start": { - "line": 384, - "column": 50 + "line": 389, + "column": 73 }, "end": { - "line": 384, - "column": 52 + "line": 389, + "column": 75 } } }, @@ -93800,16 +95772,16 @@ "postfix": false, "binop": null }, - "start": 13309, - "end": 13310, + "start": 13500, + "end": 13501, "loc": { "start": { - "line": 384, - "column": 52 + "line": 389, + "column": 75 }, "end": { - "line": 384, - "column": 53 + "line": 389, + "column": 76 } } }, @@ -93825,16 +95797,16 @@ "postfix": false, "binop": null }, - "start": 13311, - "end": 13312, + "start": 13502, + "end": 13503, "loc": { "start": { - "line": 384, - "column": 54 + "line": 389, + "column": 77 }, "end": { - "line": 384, - "column": 55 + "line": 389, + "column": 78 } } }, @@ -93853,15 +95825,15 @@ "updateContext": null }, "value": "const", - "start": 13321, - "end": 13326, + "start": 13512, + "end": 13517, "loc": { "start": { - "line": 385, + "line": 390, "column": 8 }, "end": { - "line": 385, + "line": 390, "column": 13 } } @@ -93879,15 +95851,15 @@ "binop": null }, "value": "node", - "start": 13327, - "end": 13331, + "start": 13518, + "end": 13522, "loc": { "start": { - "line": 385, + "line": 390, "column": 14 }, "end": { - "line": 385, + "line": 390, "column": 18 } } @@ -93906,15 +95878,15 @@ "updateContext": null }, "value": "=", - "start": 13332, - "end": 13333, + "start": 13523, + "end": 13524, "loc": { "start": { - "line": 385, + "line": 390, "column": 19 }, "end": { - "line": 385, + "line": 390, "column": 20 } } @@ -93932,15 +95904,15 @@ "binop": null }, "value": "nodes", - "start": 13334, - "end": 13339, + "start": 13525, + "end": 13530, "loc": { "start": { - "line": 385, + "line": 390, "column": 21 }, "end": { - "line": 385, + "line": 390, "column": 26 } } @@ -93958,15 +95930,15 @@ "binop": null, "updateContext": null }, - "start": 13339, - "end": 13340, + "start": 13530, + "end": 13531, "loc": { "start": { - "line": 385, + "line": 390, "column": 26 }, "end": { - "line": 385, + "line": 390, "column": 27 } } @@ -93984,15 +95956,15 @@ "binop": null }, "value": "i", - "start": 13340, - "end": 13341, + "start": 13531, + "end": 13532, "loc": { "start": { - "line": 385, + "line": 390, "column": 27 }, "end": { - "line": 385, + "line": 390, "column": 28 } } @@ -94010,15 +95982,15 @@ "binop": null, "updateContext": null }, - "start": 13341, - "end": 13342, + "start": 13532, + "end": 13533, "loc": { "start": { - "line": 385, + "line": 390, "column": 28 }, "end": { - "line": 385, + "line": 390, "column": 29 } } @@ -94036,19 +96008,72 @@ "binop": null, "updateContext": null }, - "start": 13342, - "end": 13343, + "start": 13533, + "end": 13534, "loc": { "start": { - "line": 385, + "line": 390, "column": 29 }, "end": { - "line": 385, + "line": 390, "column": 30 } } }, + { + "type": { + "label": "if", + "keyword": "if", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 13543, + "end": 13545, + "loc": { + "start": { + "line": 391, + "column": 8 + }, + "end": { + "line": 391, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 13546, + "end": 13547, + "loc": { + "start": { + "line": 391, + "column": 11 + }, + "end": { + "line": 391, + "column": 12 + } + } + }, { "type": { "label": "name", @@ -94061,17 +96086,17 @@ "postfix": false, "binop": null }, - "value": "countMeshUsage", - "start": 13352, - "end": 13366, + "value": "testIfNodesHaveNames", + "start": 13547, + "end": 13567, "loc": { "start": { - "line": 386, - "column": 8 + "line": 391, + "column": 12 }, "end": { - "line": 386, - "column": 22 + "line": 391, + "column": 32 } } }, @@ -94087,16 +96112,16 @@ "postfix": false, "binop": null }, - "start": 13366, - "end": 13367, + "start": 13567, + "end": 13568, "loc": { "start": { - "line": 386, - "column": 22 + "line": 391, + "column": 32 }, "end": { - "line": 386, - "column": 23 + "line": 391, + "column": 33 } } }, @@ -94112,24 +96137,125 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 13367, - "end": 13370, + "value": "node", + "start": 13568, + "end": 13572, "loc": { "start": { - "line": 386, - "column": 23 + "line": 391, + "column": 33 }, "end": { - "line": 386, - "column": 26 + "line": 391, + "column": 37 } } }, { "type": { - "label": ",", + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 13572, + "end": 13573, + "loc": { + "start": { + "line": 391, + "column": 37 + }, + "end": { + "line": 391, + "column": 38 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 13573, + "end": 13574, + "loc": { + "start": { + "line": 391, + "column": 38 + }, + "end": { + "line": 391, + "column": 39 + } + } + }, + { + "type": { + "label": "{", "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 13575, + "end": 13576, + "loc": { + "start": { + "line": 391, + "column": 40 + }, + "end": { + "line": 391, + "column": 41 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ctx", + "start": 13589, + "end": 13592, + "loc": { + "start": { + "line": 392, + "column": 12 + }, + "end": { + "line": 392, + "column": 15 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -94139,16 +96265,16 @@ "binop": null, "updateContext": null }, - "start": 13370, - "end": 13371, + "start": 13592, + "end": 13593, "loc": { "start": { - "line": 386, - "column": 26 + "line": 392, + "column": 15 }, "end": { - "line": 386, - "column": 27 + "line": 392, + "column": 16 } } }, @@ -94164,68 +96290,123 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 13372, - "end": 13376, + "value": "nodesHaveNames", + "start": 13593, + "end": 13607, "loc": { "start": { - "line": 386, - "column": 28 + "line": 392, + "column": 16 }, "end": { - "line": 386, + "line": 392, + "column": 30 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 13608, + "end": 13609, + "loc": { + "start": { + "line": 392, + "column": 31 + }, + "end": { + "line": 392, "column": 32 } } }, { "type": { - "label": ")", + "label": "true", + "keyword": "true", "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "true", + "start": 13610, + "end": 13614, + "loc": { + "start": { + "line": 392, + "column": 33 + }, + "end": { + "line": 392, + "column": 37 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13376, - "end": 13377, + "start": 13614, + "end": 13615, "loc": { "start": { - "line": 386, - "column": 32 + "line": 392, + "column": 37 }, "end": { - "line": 386, - "column": 33 + "line": 392, + "column": 38 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13377, - "end": 13378, + "start": 13624, + "end": 13625, "loc": { "start": { - "line": 386, - "column": 33 + "line": 393, + "column": 8 }, "end": { - "line": 386, - "column": 34 + "line": 393, + "column": 9 } } }, @@ -94241,44 +96422,44 @@ "postfix": false, "binop": null }, - "start": 13383, - "end": 13384, + "start": 13630, + "end": 13631, "loc": { "start": { - "line": 387, + "line": 394, "column": 4 }, "end": { - "line": 387, + "line": 394, "column": 5 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 13389, - "end": 13392, + "value": "if", + "start": 13636, + "end": 13638, "loc": { "start": { - "line": 388, + "line": 395, "column": 4 }, "end": { - "line": 388, - "column": 7 + "line": 395, + "column": 6 } } }, @@ -94294,44 +96475,43 @@ "postfix": false, "binop": null }, - "start": 13393, - "end": 13394, + "start": 13639, + "end": 13640, "loc": { "start": { - "line": 388, - "column": 8 + "line": 395, + "column": 7 }, "end": { - "line": 388, - "column": 9 + "line": 395, + "column": 8 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "let", - "start": 13394, - "end": 13397, + "value": "!", + "start": 13640, + "end": 13641, "loc": { "start": { - "line": 388, - "column": 9 + "line": 395, + "column": 8 }, "end": { - "line": 388, - "column": 12 + "line": 395, + "column": 9 } } }, @@ -94347,50 +96527,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 13398, - "end": 13399, + "value": "ctx", + "start": 13641, + "end": 13644, "loc": { "start": { - "line": 388, - "column": 13 + "line": 395, + "column": 9 }, "end": { - "line": 388, - "column": 14 + "line": 395, + "column": 12 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 13400, - "end": 13401, + "start": 13644, + "end": 13645, "loc": { "start": { - "line": 388, - "column": 15 + "line": 395, + "column": 12 }, "end": { - "line": 388, - "column": 16 + "line": 395, + "column": 13 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -94398,53 +96577,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 13402, - "end": 13403, + "value": "nodesHaveNames", + "start": 13645, + "end": 13659, "loc": { "start": { - "line": 388, - "column": 17 + "line": 395, + "column": 13 }, "end": { - "line": 388, - "column": 18 + "line": 395, + "column": 27 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13403, - "end": 13404, + "start": 13659, + "end": 13660, "loc": { "start": { - "line": 388, - "column": 18 + "line": 395, + "column": 27 }, "end": { - "line": 388, - "column": 19 + "line": 395, + "column": 28 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -94453,44 +96630,16 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 13405, - "end": 13408, - "loc": { - "start": { - "line": 388, - "column": 20 - }, - "end": { - "line": 388, - "column": 23 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 13409, - "end": 13410, + "start": 13661, + "end": 13662, "loc": { "start": { - "line": 388, - "column": 24 + "line": 395, + "column": 29 }, "end": { - "line": 388, - "column": 25 + "line": 395, + "column": 30 } } }, @@ -94506,17 +96655,17 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 13411, - "end": 13416, + "value": "ctx", + "start": 13671, + "end": 13674, "loc": { "start": { - "line": 388, - "column": 26 + "line": 396, + "column": 8 }, "end": { - "line": 388, - "column": 31 + "line": 396, + "column": 11 } } }, @@ -94533,16 +96682,16 @@ "binop": null, "updateContext": null }, - "start": 13416, - "end": 13417, + "start": 13674, + "end": 13675, "loc": { "start": { - "line": 388, - "column": 31 + "line": 396, + "column": 11 }, "end": { - "line": 388, - "column": 32 + "line": 396, + "column": 12 } } }, @@ -94558,49 +96707,48 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 13417, - "end": 13423, + "value": "log", + "start": 13675, + "end": 13678, "loc": { "start": { - "line": 388, - "column": 32 + "line": 396, + "column": 12 }, "end": { - "line": 388, - "column": 38 + "line": 396, + "column": 15 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13423, - "end": 13424, + "start": 13678, + "end": 13679, "loc": { "start": { - "line": 388, - "column": 38 + "line": 396, + "column": 15 }, "end": { - "line": 388, - "column": 39 + "line": 396, + "column": 16 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -94610,50 +96758,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 13425, - "end": 13426, + "start": 13679, + "end": 13680, "loc": { "start": { - "line": 388, - "column": 40 + "line": 396, + "column": 16 }, "end": { - "line": 388, - "column": 41 + "line": 396, + "column": 17 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 13427, - "end": 13428, + "value": "Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect", + "start": 13680, + "end": 13779, "loc": { "start": { - "line": 388, - "column": 42 + "line": 396, + "column": 17 }, "end": { - "line": 388, - "column": 43 + "line": 396, + "column": 116 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -94663,130 +96810,102 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 13429, - "end": 13432, + "start": 13779, + "end": 13780, "loc": { "start": { - "line": 388, - "column": 44 + "line": 396, + "column": 116 }, "end": { - "line": 388, - "column": 47 + "line": 396, + "column": 117 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 13433, - "end": 13435, + "start": 13780, + "end": 13781, "loc": { "start": { - "line": 388, - "column": 48 + "line": 396, + "column": 117 }, "end": { - "line": 388, - "column": 50 + "line": 396, + "column": 118 } } }, { "type": { - "label": "prefix", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 13436, - "end": 13437, - "loc": { - "start": { - "line": 388, - "column": 51 - }, - "end": { - "line": 388, - "column": 52 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "ctx", - "start": 13437, - "end": 13440, + "start": 13781, + "end": 13782, "loc": { "start": { - "line": 388, - "column": 52 + "line": 396, + "column": 118 }, "end": { - "line": 388, - "column": 55 + "line": 396, + "column": 119 } } }, { "type": { - "label": ".", + "label": "for", + "keyword": "for", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13440, - "end": 13441, + "value": "for", + "start": 13791, + "end": 13794, "loc": { "start": { - "line": 388, - "column": 55 + "line": 397, + "column": 8 }, "end": { - "line": 388, - "column": 56 + "line": 397, + "column": 11 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -94795,24 +96914,24 @@ "postfix": false, "binop": null }, - "value": "nodesHaveNames", - "start": 13441, - "end": 13455, + "start": 13795, + "end": 13796, "loc": { "start": { - "line": 388, - "column": 56 + "line": 397, + "column": 12 }, "end": { - "line": 388, - "column": 70 + "line": 397, + "column": 13 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -94822,16 +96941,17 @@ "binop": null, "updateContext": null }, - "start": 13455, - "end": 13456, + "value": "let", + "start": 13796, + "end": 13799, "loc": { "start": { - "line": 388, - "column": 70 + "line": 397, + "column": 13 }, "end": { - "line": 388, - "column": 71 + "line": 397, + "column": 16 } } }, @@ -94848,100 +96968,77 @@ "binop": null }, "value": "i", - "start": 13457, - "end": 13458, - "loc": { - "start": { - "line": 388, - "column": 72 - }, - "end": { - "line": 388, - "column": 73 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 13458, - "end": 13460, + "start": 13800, + "end": 13801, "loc": { "start": { - "line": 388, - "column": 73 + "line": 397, + "column": 17 }, "end": { - "line": 388, - "column": 75 + "line": 397, + "column": 18 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13460, - "end": 13461, + "value": "=", + "start": 13802, + "end": 13803, "loc": { "start": { - "line": 388, - "column": 75 + "line": 397, + "column": 19 }, "end": { - "line": 388, - "column": 76 + "line": 397, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13462, - "end": 13463, + "value": 0, + "start": 13804, + "end": 13805, "loc": { "start": { - "line": 388, - "column": 77 + "line": 397, + "column": 21 }, "end": { - "line": 388, - "column": 78 + "line": 397, + "column": 22 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -94951,17 +97048,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 13472, - "end": 13477, + "start": 13805, + "end": 13806, "loc": { "start": { - "line": 389, - "column": 8 + "line": 397, + "column": 22 }, "end": { - "line": 389, - "column": 13 + "line": 397, + "column": 23 } } }, @@ -94977,17 +97073,17 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 13478, - "end": 13482, + "value": "len", + "start": 13807, + "end": 13810, "loc": { "start": { - "line": 389, - "column": 14 + "line": 397, + "column": 24 }, "end": { - "line": 389, - "column": 18 + "line": 397, + "column": 27 } } }, @@ -95005,16 +97101,16 @@ "updateContext": null }, "value": "=", - "start": 13483, - "end": 13484, + "start": 13811, + "end": 13812, "loc": { "start": { - "line": 389, - "column": 19 + "line": 397, + "column": 28 }, "end": { - "line": 389, - "column": 20 + "line": 397, + "column": 29 } } }, @@ -95031,24 +97127,24 @@ "binop": null }, "value": "nodes", - "start": 13485, - "end": 13490, + "start": 13813, + "end": 13818, "loc": { "start": { - "line": 389, - "column": 21 + "line": 397, + "column": 30 }, "end": { - "line": 389, - "column": 26 + "line": 397, + "column": 35 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -95057,16 +97153,16 @@ "binop": null, "updateContext": null }, - "start": 13490, - "end": 13491, + "start": 13818, + "end": 13819, "loc": { "start": { - "line": 389, - "column": 26 + "line": 397, + "column": 35 }, "end": { - "line": 389, - "column": 27 + "line": 397, + "column": 36 } } }, @@ -95080,45 +97176,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "value": "i", - "start": 13491, - "end": 13492, - "loc": { - "start": { - "line": 389, - "column": 27 - }, - "end": { - "line": 389, - "column": 28 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13492, - "end": 13493, + "value": "length", + "start": 13819, + "end": 13825, "loc": { "start": { - "line": 389, - "column": 28 + "line": 397, + "column": 36 }, "end": { - "line": 389, - "column": 29 + "line": 397, + "column": 42 } } }, @@ -95135,69 +97205,69 @@ "binop": null, "updateContext": null }, - "start": 13493, - "end": 13494, + "start": 13825, + "end": 13826, "loc": { "start": { - "line": 389, - "column": 29 + "line": 397, + "column": 42 }, "end": { - "line": 389, - "column": 30 + "line": 397, + "column": 43 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 13503, - "end": 13505, + "value": "i", + "start": 13827, + "end": 13828, "loc": { "start": { - "line": 390, - "column": 8 + "line": 397, + "column": 44 }, "end": { - "line": 390, - "column": 10 + "line": 397, + "column": 45 } } }, { "type": { - "label": "(", + "label": "", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 7, + "updateContext": null }, - "start": 13506, - "end": 13507, + "value": "<", + "start": 13829, + "end": 13830, "loc": { "start": { - "line": 390, - "column": 11 + "line": 397, + "column": 46 }, "end": { - "line": 390, - "column": 12 + "line": 397, + "column": 47 } } }, @@ -95213,42 +97283,43 @@ "postfix": false, "binop": null }, - "value": "testIfNodesHaveNames", - "start": 13507, - "end": 13527, + "value": "len", + "start": 13831, + "end": 13834, "loc": { "start": { - "line": 390, - "column": 12 + "line": 397, + "column": 48 }, "end": { - "line": 390, - "column": 32 + "line": 397, + "column": 51 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13527, - "end": 13528, + "start": 13834, + "end": 13835, "loc": { "start": { - "line": 390, - "column": 32 + "line": 397, + "column": 51 }, "end": { - "line": 390, - "column": 33 + "line": 397, + "column": 52 } } }, @@ -95264,42 +97335,43 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 13528, - "end": 13532, + "value": "i", + "start": 13836, + "end": 13837, "loc": { "start": { - "line": 390, - "column": 33 + "line": 397, + "column": 53 }, "end": { - "line": 390, - "column": 37 + "line": 397, + "column": 54 } } }, { "type": { - "label": ")", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 13532, - "end": 13533, + "value": "++", + "start": 13837, + "end": 13839, "loc": { "start": { - "line": 390, - "column": 37 + "line": 397, + "column": 54 }, "end": { - "line": 390, - "column": 38 + "line": 397, + "column": 56 } } }, @@ -95315,16 +97387,16 @@ "postfix": false, "binop": null }, - "start": 13533, - "end": 13534, + "start": 13839, + "end": 13840, "loc": { "start": { - "line": 390, - "column": 38 + "line": 397, + "column": 56 }, "end": { - "line": 390, - "column": 39 + "line": 397, + "column": 57 } } }, @@ -95340,48 +97412,23 @@ "postfix": false, "binop": null }, - "start": 13535, - "end": 13536, - "loc": { - "start": { - "line": 390, - "column": 40 - }, - "end": { - "line": 390, - "column": 41 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "ctx", - "start": 13549, - "end": 13552, + "start": 13841, + "end": 13842, "loc": { "start": { - "line": 391, - "column": 12 + "line": 397, + "column": 58 }, "end": { - "line": 391, - "column": 15 + "line": 397, + "column": 59 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -95392,16 +97439,17 @@ "binop": null, "updateContext": null }, - "start": 13552, - "end": 13553, + "value": "const", + "start": 13855, + "end": 13860, "loc": { "start": { - "line": 391, - "column": 15 + "line": 398, + "column": 12 }, "end": { - "line": 391, - "column": 16 + "line": 398, + "column": 17 } } }, @@ -95417,17 +97465,17 @@ "postfix": false, "binop": null }, - "value": "nodesHaveNames", - "start": 13553, - "end": 13567, + "value": "node", + "start": 13861, + "end": 13865, "loc": { "start": { - "line": 391, - "column": 16 + "line": 398, + "column": 18 }, "end": { - "line": 391, - "column": 30 + "line": 398, + "column": 22 } } }, @@ -95445,23 +97493,22 @@ "updateContext": null }, "value": "=", - "start": 13568, - "end": 13569, + "start": 13866, + "end": 13867, "loc": { "start": { - "line": 391, - "column": 31 + "line": 398, + "column": 23 }, "end": { - "line": 391, - "column": 32 + "line": 398, + "column": 24 } } }, { "type": { - "label": "true", - "keyword": "true", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -95469,28 +97516,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 13570, - "end": 13574, + "value": "nodes", + "start": 13868, + "end": 13873, "loc": { "start": { - "line": 391, - "column": 33 + "line": 398, + "column": 25 }, "end": { - "line": 391, - "column": 37 + "line": 398, + "column": 30 } } }, { "type": { - "label": ";", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -95499,24 +97545,24 @@ "binop": null, "updateContext": null }, - "start": 13574, - "end": 13575, + "start": 13873, + "end": 13874, "loc": { "start": { - "line": 391, - "column": 37 + "line": 398, + "column": 30 }, "end": { - "line": 391, - "column": 38 + "line": 398, + "column": 31 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -95524,22 +97570,23 @@ "postfix": false, "binop": null }, - "start": 13584, - "end": 13585, + "value": "i", + "start": 13874, + "end": 13875, "loc": { "start": { - "line": 392, - "column": 8 + "line": 398, + "column": 31 }, "end": { - "line": 392, - "column": 9 + "line": 398, + "column": 32 } } }, { "type": { - "label": "}", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -95547,26 +97594,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13590, - "end": 13591, + "start": 13875, + "end": 13876, "loc": { "start": { - "line": 393, - "column": 4 + "line": 398, + "column": 32 }, "end": { - "line": 393, - "column": 5 + "line": 398, + "column": 33 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -95576,24 +97623,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 13596, - "end": 13598, + "start": 13876, + "end": 13877, "loc": { "start": { - "line": 394, - "column": 4 + "line": 398, + "column": 33 }, "end": { - "line": 394, - "column": 6 + "line": 398, + "column": 34 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -95602,43 +97648,42 @@ "postfix": false, "binop": null }, - "start": 13599, - "end": 13600, + "value": "parseNodesWithoutNames", + "start": 13890, + "end": 13912, "loc": { "start": { - "line": 394, - "column": 7 + "line": 399, + "column": 12 }, "end": { - "line": 394, - "column": 8 + "line": 399, + "column": 34 } } }, { "type": { - "label": "prefix", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 13600, - "end": 13601, + "start": 13912, + "end": 13913, "loc": { "start": { - "line": 394, - "column": 8 + "line": 399, + "column": 34 }, "end": { - "line": 394, - "column": 9 + "line": 399, + "column": 35 } } }, @@ -95655,23 +97700,23 @@ "binop": null }, "value": "ctx", - "start": 13601, - "end": 13604, + "start": 13913, + "end": 13916, "loc": { "start": { - "line": 394, - "column": 9 + "line": 399, + "column": 35 }, "end": { - "line": 394, - "column": 12 + "line": 399, + "column": 38 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -95681,16 +97726,16 @@ "binop": null, "updateContext": null }, - "start": 13604, - "end": 13605, + "start": 13916, + "end": 13917, "loc": { "start": { - "line": 394, - "column": 12 + "line": 399, + "column": 38 }, "end": { - "line": 394, - "column": 13 + "line": 399, + "column": 39 } } }, @@ -95706,73 +97751,49 @@ "postfix": false, "binop": null }, - "value": "nodesHaveNames", - "start": 13605, - "end": 13619, - "loc": { - "start": { - "line": 394, - "column": 13 - }, - "end": { - "line": 394, - "column": 27 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 13619, - "end": 13620, + "value": "node", + "start": 13918, + "end": 13922, "loc": { "start": { - "line": 394, - "column": 27 + "line": 399, + "column": 40 }, "end": { - "line": 394, - "column": 28 + "line": 399, + "column": 44 } } }, { "type": { - "label": "{", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13621, - "end": 13622, + "start": 13922, + "end": 13923, "loc": { "start": { - "line": 394, - "column": 29 + "line": 399, + "column": 44 }, "end": { - "line": 394, - "column": 30 + "line": 399, + "column": 45 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -95780,26 +97801,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 13631, - "end": 13634, + "value": 0, + "start": 13924, + "end": 13925, "loc": { "start": { - "line": 395, - "column": 8 + "line": 399, + "column": 46 }, "end": { - "line": 395, - "column": 11 + "line": 399, + "column": 47 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -95809,22 +97831,23 @@ "binop": null, "updateContext": null }, - "start": 13634, - "end": 13635, + "start": 13925, + "end": 13926, "loc": { "start": { - "line": 395, - "column": 11 + "line": 399, + "column": 47 }, "end": { - "line": 395, - "column": 12 + "line": 399, + "column": 48 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -95832,27 +97855,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "log", - "start": 13635, - "end": 13638, + "value": "null", + "start": 13927, + "end": 13931, "loc": { "start": { - "line": 395, - "column": 12 + "line": 399, + "column": 49 }, "end": { - "line": 395, - "column": 15 + "line": 399, + "column": 53 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -95860,47 +97884,48 @@ "postfix": false, "binop": null }, - "start": 13638, - "end": 13639, + "start": 13931, + "end": 13932, "loc": { "start": { - "line": 395, - "column": 15 + "line": 399, + "column": 53 }, "end": { - "line": 395, - "column": 16 + "line": 399, + "column": 54 } } }, { "type": { - "label": "`", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13639, - "end": 13640, + "start": 13932, + "end": 13933, "loc": { "start": { - "line": 395, - "column": 16 + "line": 399, + "column": 54 }, "end": { - "line": 395, - "column": 17 + "line": 399, + "column": 55 } } }, { "type": { - "label": "template", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -95908,28 +97933,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect", - "start": 13640, - "end": 13739, + "start": 13942, + "end": 13943, "loc": { "start": { - "line": 395, - "column": 17 + "line": 400, + "column": 8 }, "end": { - "line": 395, - "column": 116 + "line": 400, + "column": 9 } } }, { "type": { - "label": "`", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -95937,67 +97960,69 @@ "postfix": false, "binop": null }, - "start": 13739, - "end": 13740, + "start": 13948, + "end": 13949, "loc": { "start": { - "line": 395, - "column": 116 + "line": 401, + "column": 4 }, "end": { - "line": 395, - "column": 117 + "line": 401, + "column": 5 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13740, - "end": 13741, + "value": "else", + "start": 13950, + "end": 13954, "loc": { "start": { - "line": 395, - "column": 117 + "line": 401, + "column": 6 }, "end": { - "line": 395, - "column": 118 + "line": 401, + "column": 10 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13741, - "end": 13742, + "start": 13955, + "end": 13956, "loc": { "start": { - "line": 395, - "column": 118 + "line": 401, + "column": 11 }, "end": { - "line": 395, - "column": 119 + "line": 401, + "column": 12 } } }, @@ -96016,15 +98041,15 @@ "updateContext": null }, "value": "for", - "start": 13751, - "end": 13754, + "start": 13965, + "end": 13968, "loc": { "start": { - "line": 396, + "line": 402, "column": 8 }, "end": { - "line": 396, + "line": 402, "column": 11 } } @@ -96041,15 +98066,15 @@ "postfix": false, "binop": null }, - "start": 13755, - "end": 13756, + "start": 13969, + "end": 13970, "loc": { "start": { - "line": 396, + "line": 402, "column": 12 }, "end": { - "line": 396, + "line": 402, "column": 13 } } @@ -96069,15 +98094,15 @@ "updateContext": null }, "value": "let", - "start": 13756, - "end": 13759, + "start": 13970, + "end": 13973, "loc": { "start": { - "line": 396, + "line": 402, "column": 13 }, "end": { - "line": 396, + "line": 402, "column": 16 } } @@ -96095,15 +98120,15 @@ "binop": null }, "value": "i", - "start": 13760, - "end": 13761, + "start": 13974, + "end": 13975, "loc": { "start": { - "line": 396, + "line": 402, "column": 17 }, "end": { - "line": 396, + "line": 402, "column": 18 } } @@ -96122,15 +98147,15 @@ "updateContext": null }, "value": "=", - "start": 13762, - "end": 13763, + "start": 13976, + "end": 13977, "loc": { "start": { - "line": 396, + "line": 402, "column": 19 }, "end": { - "line": 396, + "line": 402, "column": 20 } } @@ -96149,15 +98174,15 @@ "updateContext": null }, "value": 0, - "start": 13764, - "end": 13765, + "start": 13978, + "end": 13979, "loc": { "start": { - "line": 396, + "line": 402, "column": 21 }, "end": { - "line": 396, + "line": 402, "column": 22 } } @@ -96175,15 +98200,15 @@ "binop": null, "updateContext": null }, - "start": 13765, - "end": 13766, + "start": 13979, + "end": 13980, "loc": { "start": { - "line": 396, + "line": 402, "column": 22 }, "end": { - "line": 396, + "line": 402, "column": 23 } } @@ -96201,15 +98226,15 @@ "binop": null }, "value": "len", - "start": 13767, - "end": 13770, + "start": 13981, + "end": 13984, "loc": { "start": { - "line": 396, + "line": 402, "column": 24 }, "end": { - "line": 396, + "line": 402, "column": 27 } } @@ -96228,15 +98253,15 @@ "updateContext": null }, "value": "=", - "start": 13771, - "end": 13772, + "start": 13985, + "end": 13986, "loc": { "start": { - "line": 396, + "line": 402, "column": 28 }, "end": { - "line": 396, + "line": 402, "column": 29 } } @@ -96254,15 +98279,15 @@ "binop": null }, "value": "nodes", - "start": 13773, - "end": 13778, + "start": 13987, + "end": 13992, "loc": { "start": { - "line": 396, + "line": 402, "column": 30 }, "end": { - "line": 396, + "line": 402, "column": 35 } } @@ -96280,15 +98305,15 @@ "binop": null, "updateContext": null }, - "start": 13778, - "end": 13779, + "start": 13992, + "end": 13993, "loc": { "start": { - "line": 396, + "line": 402, "column": 35 }, "end": { - "line": 396, + "line": 402, "column": 36 } } @@ -96306,15 +98331,15 @@ "binop": null }, "value": "length", - "start": 13779, - "end": 13785, + "start": 13993, + "end": 13999, "loc": { "start": { - "line": 396, + "line": 402, "column": 36 }, "end": { - "line": 396, + "line": 402, "column": 42 } } @@ -96332,15 +98357,15 @@ "binop": null, "updateContext": null }, - "start": 13785, - "end": 13786, + "start": 13999, + "end": 14000, "loc": { "start": { - "line": 396, + "line": 402, "column": 42 }, "end": { - "line": 396, + "line": 402, "column": 43 } } @@ -96358,15 +98383,15 @@ "binop": null }, "value": "i", - "start": 13787, - "end": 13788, + "start": 14001, + "end": 14002, "loc": { "start": { - "line": 396, + "line": 402, "column": 44 }, "end": { - "line": 396, + "line": 402, "column": 45 } } @@ -96385,15 +98410,15 @@ "updateContext": null }, "value": "<", - "start": 13789, - "end": 13790, + "start": 14003, + "end": 14004, "loc": { "start": { - "line": 396, + "line": 402, "column": 46 }, "end": { - "line": 396, + "line": 402, "column": 47 } } @@ -96411,15 +98436,15 @@ "binop": null }, "value": "len", - "start": 13791, - "end": 13794, + "start": 14005, + "end": 14008, "loc": { "start": { - "line": 396, + "line": 402, "column": 48 }, "end": { - "line": 396, + "line": 402, "column": 51 } } @@ -96437,15 +98462,15 @@ "binop": null, "updateContext": null }, - "start": 13794, - "end": 13795, + "start": 14008, + "end": 14009, "loc": { "start": { - "line": 396, + "line": 402, "column": 51 }, "end": { - "line": 396, + "line": 402, "column": 52 } } @@ -96463,15 +98488,15 @@ "binop": null }, "value": "i", - "start": 13796, - "end": 13797, + "start": 14010, + "end": 14011, "loc": { "start": { - "line": 396, + "line": 402, "column": 53 }, "end": { - "line": 396, + "line": 402, "column": 54 } } @@ -96489,15 +98514,15 @@ "binop": null }, "value": "++", - "start": 13797, - "end": 13799, + "start": 14011, + "end": 14013, "loc": { "start": { - "line": 396, + "line": 402, "column": 54 }, "end": { - "line": 396, + "line": 402, "column": 56 } } @@ -96514,15 +98539,15 @@ "postfix": false, "binop": null }, - "start": 13799, - "end": 13800, + "start": 14013, + "end": 14014, "loc": { "start": { - "line": 396, + "line": 402, "column": 56 }, "end": { - "line": 396, + "line": 402, "column": 57 } } @@ -96539,15 +98564,15 @@ "postfix": false, "binop": null }, - "start": 13801, - "end": 13802, + "start": 14015, + "end": 14016, "loc": { "start": { - "line": 396, + "line": 402, "column": 58 }, "end": { - "line": 396, + "line": 402, "column": 59 } } @@ -96567,15 +98592,15 @@ "updateContext": null }, "value": "const", - "start": 13815, - "end": 13820, + "start": 14029, + "end": 14034, "loc": { "start": { - "line": 397, + "line": 403, "column": 12 }, "end": { - "line": 397, + "line": 403, "column": 17 } } @@ -96593,15 +98618,15 @@ "binop": null }, "value": "node", - "start": 13821, - "end": 13825, + "start": 14035, + "end": 14039, "loc": { "start": { - "line": 397, + "line": 403, "column": 18 }, "end": { - "line": 397, + "line": 403, "column": 22 } } @@ -96620,15 +98645,15 @@ "updateContext": null }, "value": "=", - "start": 13826, - "end": 13827, + "start": 14040, + "end": 14041, "loc": { "start": { - "line": 397, + "line": 403, "column": 23 }, "end": { - "line": 397, + "line": 403, "column": 24 } } @@ -96646,15 +98671,15 @@ "binop": null }, "value": "nodes", - "start": 13828, - "end": 13833, + "start": 14042, + "end": 14047, "loc": { "start": { - "line": 397, + "line": 403, "column": 25 }, "end": { - "line": 397, + "line": 403, "column": 30 } } @@ -96672,15 +98697,15 @@ "binop": null, "updateContext": null }, - "start": 13833, - "end": 13834, + "start": 14047, + "end": 14048, "loc": { "start": { - "line": 397, + "line": 403, "column": 30 }, "end": { - "line": 397, + "line": 403, "column": 31 } } @@ -96698,15 +98723,15 @@ "binop": null }, "value": "i", - "start": 13834, - "end": 13835, + "start": 14048, + "end": 14049, "loc": { "start": { - "line": 397, + "line": 403, "column": 31 }, "end": { - "line": 397, + "line": 403, "column": 32 } } @@ -96724,15 +98749,15 @@ "binop": null, "updateContext": null }, - "start": 13835, - "end": 13836, + "start": 14049, + "end": 14050, "loc": { "start": { - "line": 397, + "line": 403, "column": 32 }, "end": { - "line": 397, + "line": 403, "column": 33 } } @@ -96750,15 +98775,15 @@ "binop": null, "updateContext": null }, - "start": 13836, - "end": 13837, + "start": 14050, + "end": 14051, "loc": { "start": { - "line": 397, + "line": 403, "column": 33 }, "end": { - "line": 397, + "line": 403, "column": 34 } } @@ -96775,17 +98800,17 @@ "postfix": false, "binop": null }, - "value": "parseNodesWithoutNames", - "start": 13850, - "end": 13872, + "value": "parseNodesWithNames", + "start": 14064, + "end": 14083, "loc": { "start": { - "line": 398, + "line": 404, "column": 12 }, "end": { - "line": 398, - "column": 34 + "line": 404, + "column": 31 } } }, @@ -96801,16 +98826,16 @@ "postfix": false, "binop": null }, - "start": 13872, - "end": 13873, + "start": 14083, + "end": 14084, "loc": { "start": { - "line": 398, - "column": 34 + "line": 404, + "column": 31 }, "end": { - "line": 398, - "column": 35 + "line": 404, + "column": 32 } } }, @@ -96827,16 +98852,16 @@ "binop": null }, "value": "ctx", - "start": 13873, - "end": 13876, + "start": 14084, + "end": 14087, "loc": { "start": { - "line": 398, - "column": 35 + "line": 404, + "column": 32 }, "end": { - "line": 398, - "column": 38 + "line": 404, + "column": 35 } } }, @@ -96853,16 +98878,16 @@ "binop": null, "updateContext": null }, - "start": 13876, - "end": 13877, + "start": 14087, + "end": 14088, "loc": { "start": { - "line": 398, - "column": 38 + "line": 404, + "column": 35 }, "end": { - "line": 398, - "column": 39 + "line": 404, + "column": 36 } } }, @@ -96879,16 +98904,16 @@ "binop": null }, "value": "node", - "start": 13878, - "end": 13882, + "start": 14089, + "end": 14093, "loc": { "start": { - "line": 398, - "column": 40 + "line": 404, + "column": 37 }, "end": { - "line": 398, - "column": 44 + "line": 404, + "column": 41 } } }, @@ -96905,16 +98930,16 @@ "binop": null, "updateContext": null }, - "start": 13882, - "end": 13883, + "start": 14093, + "end": 14094, "loc": { "start": { - "line": 398, - "column": 44 + "line": 404, + "column": 41 }, "end": { - "line": 398, - "column": 45 + "line": 404, + "column": 42 } } }, @@ -96932,16 +98957,16 @@ "updateContext": null }, "value": 0, - "start": 13884, - "end": 13885, + "start": 14095, + "end": 14096, "loc": { "start": { - "line": 398, - "column": 46 + "line": 404, + "column": 43 }, "end": { - "line": 398, - "column": 47 + "line": 404, + "column": 44 } } }, @@ -96958,16 +98983,16 @@ "binop": null, "updateContext": null }, - "start": 13885, - "end": 13886, + "start": 14096, + "end": 14097, "loc": { "start": { - "line": 398, - "column": 47 + "line": 404, + "column": 44 }, "end": { - "line": 398, - "column": 48 + "line": 404, + "column": 45 } } }, @@ -96986,16 +99011,16 @@ "updateContext": null }, "value": "null", - "start": 13887, - "end": 13891, + "start": 14098, + "end": 14102, "loc": { "start": { - "line": 398, - "column": 49 + "line": 404, + "column": 46 }, "end": { - "line": 398, - "column": 53 + "line": 404, + "column": 50 } } }, @@ -97006,29 +99031,365 @@ "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14102, + "end": 14103, + "loc": { + "start": { + "line": 404, + "column": 50 + }, + "end": { + "line": 404, + "column": 51 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 14103, + "end": 14104, + "loc": { + "start": { + "line": 404, + "column": 51 + }, + "end": { + "line": 404, + "column": 52 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14113, + "end": 14114, + "loc": { + "start": { + "line": 405, + "column": 8 + }, + "end": { + "line": 405, + "column": 9 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14119, + "end": 14120, + "loc": { + "start": { + "line": 406, + "column": 4 + }, + "end": { + "line": 406, + "column": 5 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14121, + "end": 14122, + "loc": { + "start": { + "line": 407, + "column": 0 + }, + "end": { + "line": 407, + "column": 1 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "function", + "start": 14124, + "end": 14132, + "loc": { + "start": { + "line": 409, + "column": 0 + }, + "end": { + "line": 409, + "column": 8 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "countMeshUsage", + "start": 14133, + "end": 14147, + "loc": { + "start": { + "line": 409, + "column": 9 + }, + "end": { + "line": 409, + "column": 23 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14147, + "end": 14148, + "loc": { + "start": { + "line": 409, + "column": 23 + }, + "end": { + "line": 409, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "ctx", + "start": 14148, + "end": 14151, + "loc": { + "start": { + "line": 409, + "column": 24 + }, + "end": { + "line": 409, + "column": 27 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 14151, + "end": 14152, + "loc": { + "start": { + "line": 409, + "column": 27 + }, + "end": { + "line": 409, + "column": 28 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "node", + "start": 14153, + "end": 14157, + "loc": { + "start": { + "line": 409, + "column": 29 + }, + "end": { + "line": 409, + "column": 33 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 14157, + "end": 14158, + "loc": { + "start": { + "line": 409, + "column": 33 + }, + "end": { + "line": 409, + "column": 34 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "level", + "start": 14159, + "end": 14164, + "loc": { + "start": { + "line": 409, + "column": 35 + }, + "end": { + "line": 409, + "column": 40 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 13891, - "end": 13892, + "value": "=", + "start": 14165, + "end": 14166, "loc": { "start": { - "line": 398, - "column": 53 + "line": 409, + "column": 41 }, "end": { - "line": 398, - "column": 54 + "line": 409, + "column": 42 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -97037,22 +99398,23 @@ "binop": null, "updateContext": null }, - "start": 13892, - "end": 13893, + "value": 0, + "start": 14167, + "end": 14168, "loc": { "start": { - "line": 398, - "column": 54 + "line": 409, + "column": 43 }, "end": { - "line": 398, - "column": 55 + "line": 409, + "column": 44 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -97062,24 +99424,24 @@ "postfix": false, "binop": null }, - "start": 13902, - "end": 13903, + "start": 14168, + "end": 14169, "loc": { "start": { - "line": 399, - "column": 8 + "line": 409, + "column": 44 }, "end": { - "line": 399, - "column": 9 + "line": 409, + "column": 45 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -97087,24 +99449,24 @@ "postfix": false, "binop": null }, - "start": 13908, - "end": 13909, + "start": 14170, + "end": 14171, "loc": { "start": { - "line": 400, - "column": 4 + "line": 409, + "column": 46 }, "end": { - "line": 400, - "column": 5 + "line": 409, + "column": 47 } } }, { "type": { - "label": "else", - "keyword": "else", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -97114,23 +99476,23 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 13910, - "end": 13914, + "value": "if", + "start": 14176, + "end": 14178, "loc": { "start": { - "line": 400, - "column": 6 + "line": 410, + "column": 4 }, "end": { - "line": 400, - "column": 10 + "line": 410, + "column": 6 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -97140,51 +99502,50 @@ "postfix": false, "binop": null }, - "start": 13915, - "end": 13916, + "start": 14179, + "end": 14180, "loc": { "start": { - "line": 400, - "column": 11 + "line": 410, + "column": 7 }, "end": { - "line": 400, - "column": 12 + "line": 410, + "column": 8 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 13925, - "end": 13928, + "value": "!", + "start": 14180, + "end": 14181, "loc": { "start": { - "line": 401, + "line": 410, "column": 8 }, "end": { - "line": 401, - "column": 11 + "line": 410, + "column": 9 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -97193,23 +99554,23 @@ "postfix": false, "binop": null }, - "start": 13929, - "end": 13930, + "value": "node", + "start": 14181, + "end": 14185, "loc": { "start": { - "line": 401, - "column": 12 + "line": 410, + "column": 9 }, "end": { - "line": 401, + "line": 410, "column": 13 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -97217,27 +99578,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 13930, - "end": 13933, + "start": 14185, + "end": 14186, "loc": { "start": { - "line": 401, + "line": 410, "column": 13 }, "end": { - "line": 401, - "column": 16 + "line": 410, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -97246,77 +99605,50 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 13934, - "end": 13935, + "start": 14187, + "end": 14188, "loc": { "start": { - "line": 401, - "column": 17 + "line": 410, + "column": 15 }, "end": { - "line": 401, - "column": 18 + "line": 410, + "column": 16 } } }, { "type": { - "label": "=", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 13936, - "end": 13937, - "loc": { - "start": { - "line": 401, - "column": 19 - }, - "end": { - "line": 401, - "column": 20 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 0, - "start": 13938, - "end": 13939, + "value": "return", + "start": 14197, + "end": 14203, "loc": { "start": { - "line": 401, - "column": 21 + "line": 411, + "column": 8 }, "end": { - "line": 401, - "column": 22 + "line": 411, + "column": 14 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -97327,24 +99659,24 @@ "binop": null, "updateContext": null }, - "start": 13939, - "end": 13940, + "start": 14203, + "end": 14204, "loc": { "start": { - "line": 401, - "column": 22 + "line": 411, + "column": 14 }, "end": { - "line": 401, - "column": 23 + "line": 411, + "column": 15 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -97352,44 +99684,44 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 13941, - "end": 13944, + "start": 14209, + "end": 14210, "loc": { "start": { - "line": 401, - "column": 24 + "line": 412, + "column": 4 }, "end": { - "line": 401, - "column": 27 + "line": 412, + "column": 5 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 13945, - "end": 13946, + "value": "const", + "start": 14215, + "end": 14220, "loc": { "start": { - "line": 401, - "column": 28 + "line": 413, + "column": 4 }, "end": { - "line": 401, - "column": 29 + "line": 413, + "column": 9 } } }, @@ -97405,43 +99737,44 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 13947, - "end": 13952, + "value": "mesh", + "start": 14221, + "end": 14225, "loc": { "start": { - "line": 401, - "column": 30 + "line": 413, + "column": 10 }, "end": { - "line": 401, - "column": 35 + "line": 413, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 13952, - "end": 13953, + "value": "=", + "start": 14226, + "end": 14227, "loc": { "start": { - "line": 401, - "column": 35 + "line": 413, + "column": 15 }, "end": { - "line": 401, - "column": 36 + "line": 413, + "column": 16 } } }, @@ -97457,24 +99790,24 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 13953, - "end": 13959, + "value": "node", + "start": 14228, + "end": 14232, "loc": { "start": { - "line": 401, - "column": 36 + "line": 413, + "column": 17 }, "end": { - "line": 401, - "column": 42 + "line": 413, + "column": 21 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -97484,16 +99817,16 @@ "binop": null, "updateContext": null }, - "start": 13959, - "end": 13960, + "start": 14232, + "end": 14233, "loc": { "start": { - "line": 401, - "column": 42 + "line": 413, + "column": 21 }, "end": { - "line": 401, - "column": 43 + "line": 413, + "column": 22 } } }, @@ -97509,23 +99842,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 13961, - "end": 13962, + "value": "mesh", + "start": 14233, + "end": 14237, "loc": { "start": { - "line": 401, - "column": 44 + "line": 413, + "column": 22 }, "end": { - "line": 401, - "column": 45 + "line": 413, + "column": 26 } } }, { "type": { - "label": "", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -97533,72 +99866,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 13963, - "end": 13964, + "start": 14237, + "end": 14238, "loc": { "start": { - "line": 401, - "column": 46 + "line": 413, + "column": 26 }, "end": { - "line": 401, - "column": 47 + "line": 413, + "column": 27 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "len", - "start": 13965, - "end": 13968, + "value": "if", + "start": 14243, + "end": 14245, "loc": { "start": { - "line": 401, - "column": 48 + "line": 414, + "column": 4 }, "end": { - "line": 401, - "column": 51 + "line": 414, + "column": 6 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 13968, - "end": 13969, + "start": 14246, + "end": 14247, "loc": { "start": { - "line": 401, - "column": 51 + "line": 414, + "column": 7 }, "end": { - "line": 401, - "column": 52 + "line": 414, + "column": 8 } } }, @@ -97614,51 +99947,50 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 13970, - "end": 13971, + "value": "mesh", + "start": 14247, + "end": 14251, "loc": { "start": { - "line": 401, - "column": 53 + "line": 414, + "column": 8 }, "end": { - "line": 401, - "column": 54 + "line": 414, + "column": 12 } } }, { "type": { - "label": "++/--", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 13971, - "end": 13973, + "start": 14251, + "end": 14252, "loc": { "start": { - "line": 401, - "column": 54 + "line": 414, + "column": 12 }, "end": { - "line": 401, - "column": 56 + "line": 414, + "column": 13 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -97666,23 +99998,23 @@ "postfix": false, "binop": null }, - "start": 13973, - "end": 13974, + "start": 14253, + "end": 14254, "loc": { "start": { - "line": 401, - "column": 56 + "line": 414, + "column": 14 }, "end": { - "line": 401, - "column": 57 + "line": 414, + "column": 15 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -97691,23 +100023,23 @@ "postfix": false, "binop": null }, - "start": 13975, - "end": 13976, + "value": "mesh", + "start": 14263, + "end": 14267, "loc": { "start": { - "line": 401, - "column": 58 + "line": 415, + "column": 8 }, "end": { - "line": 401, - "column": 59 + "line": 415, + "column": 12 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -97718,17 +100050,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 13989, - "end": 13994, + "start": 14267, + "end": 14268, "loc": { "start": { - "line": 402, + "line": 415, "column": 12 }, "end": { - "line": 402, - "column": 17 + "line": 415, + "column": 13 } } }, @@ -97744,16 +100075,16 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 13995, - "end": 13999, + "value": "instances", + "start": 14268, + "end": 14277, "loc": { "start": { - "line": 402, - "column": 18 + "line": 415, + "column": 13 }, "end": { - "line": 402, + "line": 415, "column": 22 } } @@ -97772,15 +100103,15 @@ "updateContext": null }, "value": "=", - "start": 14000, - "end": 14001, + "start": 14278, + "end": 14279, "loc": { "start": { - "line": 402, + "line": 415, "column": 23 }, "end": { - "line": 402, + "line": 415, "column": 24 } } @@ -97797,25 +100128,25 @@ "postfix": false, "binop": null }, - "value": "nodes", - "start": 14002, - "end": 14007, + "value": "mesh", + "start": 14280, + "end": 14284, "loc": { "start": { - "line": 402, + "line": 415, "column": 25 }, "end": { - "line": 402, - "column": 30 + "line": 415, + "column": 29 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -97824,16 +100155,16 @@ "binop": null, "updateContext": null }, - "start": 14007, - "end": 14008, + "start": 14284, + "end": 14285, "loc": { "start": { - "line": 402, - "column": 30 + "line": 415, + "column": 29 }, "end": { - "line": 402, - "column": 31 + "line": 415, + "column": 30 } } }, @@ -97849,49 +100180,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14008, - "end": 14009, - "loc": { - "start": { - "line": 402, - "column": 31 - }, - "end": { - "line": 402, - "column": 32 - } - } - }, - { - "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14009, - "end": 14010, + "value": "instances", + "start": 14285, + "end": 14294, "loc": { "start": { - "line": 402, - "column": 32 + "line": 415, + "column": 30 }, "end": { - "line": 402, - "column": 33 + "line": 415, + "column": 39 } } }, { "type": { - "label": ";", + "label": "?", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -97902,16 +100207,16 @@ "binop": null, "updateContext": null }, - "start": 14010, - "end": 14011, + "start": 14295, + "end": 14296, "loc": { "start": { - "line": 402, - "column": 33 + "line": 415, + "column": 40 }, "end": { - "line": 402, - "column": 34 + "line": 415, + "column": 41 } } }, @@ -97927,42 +100232,43 @@ "postfix": false, "binop": null }, - "value": "parseNodesWithNames", - "start": 14024, - "end": 14043, + "value": "mesh", + "start": 14297, + "end": 14301, "loc": { "start": { - "line": 403, - "column": 12 + "line": 415, + "column": 42 }, "end": { - "line": 403, - "column": 31 + "line": 415, + "column": 46 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14043, - "end": 14044, + "start": 14301, + "end": 14302, "loc": { "start": { - "line": 403, - "column": 31 + "line": 415, + "column": 46 }, "end": { - "line": 403, - "column": 32 + "line": 415, + "column": 47 } } }, @@ -97978,49 +100284,50 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 14044, - "end": 14047, + "value": "instances", + "start": 14302, + "end": 14311, "loc": { "start": { - "line": 403, - "column": 32 + "line": 415, + "column": 47 }, "end": { - "line": 403, - "column": 35 + "line": 415, + "column": 56 } } }, { "type": { - "label": ",", + "label": "+/-", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 14047, - "end": 14048, + "value": "+", + "start": 14312, + "end": 14313, "loc": { "start": { - "line": 403, - "column": 35 + "line": 415, + "column": 57 }, "end": { - "line": 403, - "column": 36 + "line": 415, + "column": 58 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -98028,25 +100335,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 14049, - "end": 14053, + "value": 1, + "start": 14314, + "end": 14315, "loc": { "start": { - "line": 403, - "column": 37 + "line": 415, + "column": 59 }, "end": { - "line": 403, - "column": 41 + "line": 415, + "column": 60 } } }, { "type": { - "label": ",", + "label": ":", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -98057,16 +100365,16 @@ "binop": null, "updateContext": null }, - "start": 14053, - "end": 14054, + "start": 14316, + "end": 14317, "loc": { "start": { - "line": 403, - "column": 41 + "line": 415, + "column": 61 }, "end": { - "line": 403, - "column": 42 + "line": 415, + "column": 62 } } }, @@ -98083,23 +100391,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 14055, - "end": 14056, + "value": 1, + "start": 14318, + "end": 14319, "loc": { "start": { - "line": 403, - "column": 43 + "line": 415, + "column": 63 }, "end": { - "line": 403, - "column": 44 + "line": 415, + "column": 64 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -98110,50 +100418,48 @@ "binop": null, "updateContext": null }, - "start": 14056, - "end": 14057, + "start": 14319, + "end": 14320, "loc": { "start": { - "line": 403, - "column": 44 + "line": 415, + "column": 64 }, "end": { - "line": 403, - "column": 45 + "line": 415, + "column": 65 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 14058, - "end": 14062, + "start": 14325, + "end": 14326, "loc": { "start": { - "line": 403, - "column": 46 + "line": 416, + "column": 4 }, "end": { - "line": 403, - "column": 50 + "line": 416, + "column": 5 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -98161,52 +100467,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14062, - "end": 14063, + "value": "if", + "start": 14331, + "end": 14333, "loc": { "start": { - "line": 403, - "column": 50 + "line": 417, + "column": 4 }, "end": { - "line": 403, - "column": 51 + "line": 417, + "column": 6 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14063, - "end": 14064, + "start": 14334, + "end": 14335, "loc": { "start": { - "line": 403, - "column": 51 + "line": 417, + "column": 7 }, "end": { - "line": 403, - "column": 52 + "line": 417, + "column": 8 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -98214,22 +100521,23 @@ "postfix": false, "binop": null }, - "start": 14073, - "end": 14074, + "value": "node", + "start": 14335, + "end": 14339, "loc": { "start": { - "line": 404, + "line": 417, "column": 8 }, "end": { - "line": 404, - "column": 9 + "line": 417, + "column": 12 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -98237,26 +100545,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14079, - "end": 14080, + "start": 14339, + "end": 14340, "loc": { "start": { - "line": 405, - "column": 4 + "line": 417, + "column": 12 }, "end": { - "line": 405, - "column": 5 + "line": 417, + "column": 13 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -98264,25 +100573,25 @@ "postfix": false, "binop": null }, - "start": 14081, - "end": 14082, + "value": "children", + "start": 14340, + "end": 14348, "loc": { "start": { - "line": 406, - "column": 0 + "line": 417, + "column": 13 }, "end": { - "line": 406, - "column": 1 + "line": 417, + "column": 21 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -98290,24 +100599,23 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 14084, - "end": 14092, + "start": 14348, + "end": 14349, "loc": { "start": { - "line": 408, - "column": 0 + "line": 417, + "column": 21 }, "end": { - "line": 408, - "column": 8 + "line": 417, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -98316,42 +100624,44 @@ "postfix": false, "binop": null }, - "value": "countMeshUsage", - "start": 14093, - "end": 14107, + "start": 14350, + "end": 14351, "loc": { "start": { - "line": 408, - "column": 9 + "line": 417, + "column": 23 }, "end": { - "line": 408, - "column": 23 + "line": 417, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14107, - "end": 14108, + "value": "const", + "start": 14360, + "end": 14365, "loc": { "start": { - "line": 408, - "column": 23 + "line": 418, + "column": 8 }, "end": { - "line": 408, - "column": 24 + "line": 418, + "column": 13 } } }, @@ -98367,43 +100677,44 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 14108, - "end": 14111, + "value": "children", + "start": 14366, + "end": 14374, "loc": { "start": { - "line": 408, - "column": 24 + "line": 418, + "column": 14 }, "end": { - "line": 408, - "column": 27 + "line": 418, + "column": 22 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14111, - "end": 14112, + "value": "=", + "start": 14375, + "end": 14376, "loc": { "start": { - "line": 408, - "column": 27 + "line": 418, + "column": 23 }, "end": { - "line": 408, - "column": 28 + "line": 418, + "column": 24 } } }, @@ -98420,23 +100731,23 @@ "binop": null }, "value": "node", - "start": 14113, - "end": 14117, + "start": 14377, + "end": 14381, "loc": { "start": { - "line": 408, - "column": 29 + "line": 418, + "column": 25 }, "end": { - "line": 408, - "column": 33 + "line": 418, + "column": 29 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -98446,16 +100757,16 @@ "binop": null, "updateContext": null }, - "start": 14117, - "end": 14118, + "start": 14381, + "end": 14382, "loc": { "start": { - "line": 408, - "column": 33 + "line": 418, + "column": 29 }, "end": { - "line": 408, - "column": 34 + "line": 418, + "column": 30 } } }, @@ -98471,77 +100782,103 @@ "postfix": false, "binop": null }, - "value": "level", - "start": 14119, - "end": 14124, + "value": "children", + "start": 14382, + "end": 14390, "loc": { "start": { - "line": 408, - "column": 35 + "line": 418, + "column": 30 }, "end": { - "line": 408, - "column": 40 + "line": 418, + "column": 38 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14124, - "end": 14125, + "start": 14390, + "end": 14391, "loc": { "start": { - "line": 408, - "column": 40 + "line": 418, + "column": 38 }, "end": { - "line": 408, - "column": 41 + "line": 418, + "column": 39 } } }, { "type": { - "label": "num", + "label": "for", + "keyword": "for", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 0, - "start": 14125, - "end": 14126, + "value": "for", + "start": 14400, + "end": 14403, "loc": { "start": { - "line": 408, - "column": 41 + "line": 419, + "column": 8 }, "end": { - "line": 408, - "column": 42 + "line": 419, + "column": 11 } } }, { "type": { - "label": ")", + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14404, + "end": 14405, + "loc": { + "start": { + "line": 419, + "column": 12 + }, + "end": { + "line": 419, + "column": 13 + } + } + }, + { + "type": { + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -98549,25 +100886,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14126, - "end": 14127, + "value": "let", + "start": 14405, + "end": 14408, "loc": { "start": { - "line": 408, - "column": 42 + "line": 419, + "column": 13 }, "end": { - "line": 408, - "column": 43 + "line": 419, + "column": 16 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -98576,96 +100915,97 @@ "postfix": false, "binop": null }, - "start": 14128, - "end": 14129, + "value": "i", + "start": 14409, + "end": 14410, "loc": { "start": { - "line": 408, - "column": 44 + "line": 419, + "column": 17 }, "end": { - "line": 408, - "column": 45 + "line": 419, + "column": 18 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 14134, - "end": 14136, + "value": "=", + "start": 14411, + "end": 14412, "loc": { "start": { - "line": 409, - "column": 4 + "line": 419, + "column": 19 }, "end": { - "line": 409, - "column": 6 + "line": 419, + "column": 20 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14137, - "end": 14138, + "value": 0, + "start": 14413, + "end": 14414, "loc": { "start": { - "line": 409, - "column": 7 + "line": 419, + "column": 21 }, "end": { - "line": 409, - "column": 8 + "line": 419, + "column": 22 } } }, { "type": { - "label": "prefix", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 14138, - "end": 14139, + "start": 14414, + "end": 14415, "loc": { "start": { - "line": 409, - "column": 8 + "line": 419, + "column": 22 }, "end": { - "line": 409, - "column": 9 + "line": 419, + "column": 23 } } }, @@ -98681,49 +101021,51 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 14139, - "end": 14143, + "value": "len", + "start": 14416, + "end": 14419, "loc": { "start": { - "line": 409, - "column": 9 + "line": 419, + "column": 24 }, "end": { - "line": 409, - "column": 13 + "line": 419, + "column": 27 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14143, - "end": 14144, + "value": "=", + "start": 14420, + "end": 14421, "loc": { "start": { - "line": 409, - "column": 13 + "line": 419, + "column": 28 }, "end": { - "line": 409, - "column": 14 + "line": 419, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -98732,24 +101074,24 @@ "postfix": false, "binop": null }, - "start": 14145, - "end": 14146, + "value": "children", + "start": 14422, + "end": 14430, "loc": { "start": { - "line": 409, - "column": 15 + "line": 419, + "column": 30 }, "end": { - "line": 409, - "column": 16 + "line": 419, + "column": 38 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -98759,17 +101101,42 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 14155, - "end": 14161, + "start": 14430, + "end": 14431, "loc": { "start": { - "line": 410, - "column": 8 + "line": 419, + "column": 38 }, "end": { - "line": 410, - "column": 14 + "line": 419, + "column": 39 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "length", + "start": 14431, + "end": 14437, + "loc": { + "start": { + "line": 419, + "column": 39 + }, + "end": { + "line": 419, + "column": 45 } } }, @@ -98786,24 +101153,24 @@ "binop": null, "updateContext": null }, - "start": 14161, - "end": 14162, + "start": 14437, + "end": 14438, "loc": { "start": { - "line": 410, - "column": 14 + "line": 419, + "column": 45 }, "end": { - "line": 410, - "column": 15 + "line": 419, + "column": 46 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -98811,44 +101178,44 @@ "postfix": false, "binop": null }, - "start": 14167, - "end": 14168, + "value": "i", + "start": 14439, + "end": 14440, "loc": { "start": { - "line": 411, - "column": 4 + "line": 419, + "column": 47 }, "end": { - "line": 411, - "column": 5 + "line": 419, + "column": 48 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": "", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "value": "const", - "start": 14173, - "end": 14178, + "value": "<", + "start": 14441, + "end": 14442, "loc": { - "start": { - "line": 412, - "column": 4 + "start": { + "line": 419, + "column": 49 }, "end": { - "line": 412, - "column": 9 + "line": 419, + "column": 50 } } }, @@ -98864,44 +101231,43 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14179, - "end": 14183, + "value": "len", + "start": 14443, + "end": 14446, "loc": { "start": { - "line": 412, - "column": 10 + "line": 419, + "column": 51 }, "end": { - "line": 412, - "column": 14 + "line": 419, + "column": 54 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14184, - "end": 14185, + "start": 14446, + "end": 14447, "loc": { "start": { - "line": 412, - "column": 15 + "line": 419, + "column": 54 }, "end": { - "line": 412, - "column": 16 + "line": 419, + "column": 55 } } }, @@ -98917,51 +101283,51 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 14186, - "end": 14190, + "value": "i", + "start": 14448, + "end": 14449, "loc": { "start": { - "line": 412, - "column": 17 + "line": 419, + "column": 56 }, "end": { - "line": 412, - "column": 21 + "line": 419, + "column": 57 } } }, { "type": { - "label": ".", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "start": 14190, - "end": 14191, + "value": "++", + "start": 14449, + "end": 14451, "loc": { "start": { - "line": 412, - "column": 21 + "line": 419, + "column": 57 }, "end": { - "line": 412, - "column": 22 + "line": 419, + "column": 59 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -98969,50 +101335,48 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14191, - "end": 14195, + "start": 14451, + "end": 14452, "loc": { "start": { - "line": 412, - "column": 22 + "line": 419, + "column": 59 }, "end": { - "line": 412, - "column": 26 + "line": 419, + "column": 60 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14195, - "end": 14196, + "start": 14453, + "end": 14454, "loc": { "start": { - "line": 412, - "column": 26 + "line": 419, + "column": 61 }, "end": { - "line": 412, - "column": 27 + "line": 419, + "column": 62 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -99023,24 +101387,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14201, - "end": 14203, + "value": "const", + "start": 14467, + "end": 14472, "loc": { "start": { - "line": 413, - "column": 4 + "line": 420, + "column": 12 }, "end": { - "line": 413, - "column": 6 + "line": 420, + "column": 17 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -99049,50 +101413,52 @@ "postfix": false, "binop": null }, - "start": 14204, - "end": 14205, + "value": "childNode", + "start": 14473, + "end": 14482, "loc": { "start": { - "line": 413, - "column": 7 + "line": 420, + "column": 18 }, "end": { - "line": 413, - "column": 8 + "line": 420, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "mesh", - "start": 14205, - "end": 14209, + "value": "=", + "start": 14483, + "end": 14484, "loc": { "start": { - "line": 413, - "column": 8 + "line": 420, + "column": 28 }, "end": { - "line": 413, - "column": 12 + "line": 420, + "column": 29 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -99100,22 +101466,23 @@ "postfix": false, "binop": null }, - "start": 14209, - "end": 14210, + "value": "children", + "start": 14485, + "end": 14493, "loc": { "start": { - "line": 413, - "column": 12 + "line": 420, + "column": 30 }, "end": { - "line": 413, - "column": 13 + "line": 420, + "column": 38 } } }, { "type": { - "label": "{", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -99123,18 +101490,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14211, - "end": 14212, + "start": 14493, + "end": 14494, "loc": { "start": { - "line": 413, - "column": 14 + "line": 420, + "column": 38 }, "end": { - "line": 413, - "column": 15 + "line": 420, + "column": 39 } } }, @@ -99150,23 +101518,23 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14221, - "end": 14225, + "value": "i", + "start": 14494, + "end": 14495, "loc": { "start": { - "line": 414, - "column": 8 + "line": 420, + "column": 39 }, "end": { - "line": 414, - "column": 12 + "line": 420, + "column": 40 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -99177,76 +101545,77 @@ "binop": null, "updateContext": null }, - "start": 14225, - "end": 14226, + "start": 14495, + "end": 14496, "loc": { "start": { - "line": 414, - "column": 12 + "line": 420, + "column": 40 }, "end": { - "line": 414, - "column": 13 + "line": 420, + "column": 41 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "instances", - "start": 14226, - "end": 14235, + "start": 14496, + "end": 14497, "loc": { "start": { - "line": 414, - "column": 13 + "line": 420, + "column": 41 }, "end": { - "line": 414, - "column": 22 + "line": 420, + "column": 42 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14236, - "end": 14237, + "value": "if", + "start": 14510, + "end": 14512, "loc": { "start": { - "line": 414, - "column": 23 + "line": 421, + "column": 12 }, "end": { - "line": 414, - "column": 24 + "line": 421, + "column": 14 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -99255,43 +101624,43 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14238, - "end": 14242, + "start": 14513, + "end": 14514, "loc": { "start": { - "line": 414, - "column": 25 + "line": 421, + "column": 15 }, "end": { - "line": 414, - "column": 29 + "line": 421, + "column": 16 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 14242, - "end": 14243, + "value": "!", + "start": 14514, + "end": 14515, "loc": { "start": { - "line": 414, - "column": 29 + "line": 421, + "column": 16 }, "end": { - "line": 414, - "column": 30 + "line": 421, + "column": 17 } } }, @@ -99307,50 +101676,49 @@ "postfix": false, "binop": null }, - "value": "instances", - "start": 14243, - "end": 14252, + "value": "childNode", + "start": 14515, + "end": 14524, "loc": { "start": { - "line": 414, - "column": 30 + "line": 421, + "column": 17 }, "end": { - "line": 414, - "column": 39 + "line": 421, + "column": 26 } } }, { "type": { - "label": "?", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14253, - "end": 14254, + "start": 14524, + "end": 14525, "loc": { "start": { - "line": 414, - "column": 40 + "line": 421, + "column": 26 }, "end": { - "line": 414, - "column": 41 + "line": 421, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -99359,131 +101727,127 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 14255, - "end": 14259, + "start": 14526, + "end": 14527, "loc": { "start": { - "line": 414, - "column": 42 + "line": 421, + "column": 28 }, "end": { - "line": 414, - "column": 46 + "line": 421, + "column": 29 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14259, - "end": 14260, + "value": "ctx", + "start": 14544, + "end": 14547, "loc": { "start": { - "line": 414, - "column": 46 + "line": 422, + "column": 16 }, "end": { - "line": 414, - "column": 47 + "line": 422, + "column": 19 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "instances", - "start": 14260, - "end": 14269, + "start": 14547, + "end": 14548, "loc": { "start": { - "line": 414, - "column": 47 + "line": 422, + "column": 19 }, "end": { - "line": 414, - "column": 56 + "line": 422, + "column": 20 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "+", - "start": 14270, - "end": 14271, + "value": "error", + "start": 14548, + "end": 14553, "loc": { "start": { - "line": 414, - "column": 57 + "line": 422, + "column": 20 }, "end": { - "line": 414, - "column": 58 + "line": 422, + "column": 25 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 14272, - "end": 14273, + "start": 14553, + "end": 14554, "loc": { "start": { - "line": 414, - "column": 59 + "line": 422, + "column": 25 }, "end": { - "line": 414, - "column": 60 + "line": 422, + "column": 26 } } }, { "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -99492,75 +101856,76 @@ "binop": null, "updateContext": null }, - "start": 14274, - "end": 14275, + "value": "Node not found: ", + "start": 14554, + "end": 14572, "loc": { "start": { - "line": 414, - "column": 61 + "line": 422, + "column": 26 }, "end": { - "line": 414, - "column": 62 + "line": 422, + "column": 44 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "+/-", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "value": 1, - "start": 14276, - "end": 14277, + "value": "+", + "start": 14573, + "end": 14574, "loc": { "start": { - "line": 414, - "column": 63 + "line": 422, + "column": 45 }, "end": { - "line": 414, - "column": 64 + "line": 422, + "column": 46 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14277, - "end": 14278, + "value": "i", + "start": 14575, + "end": 14576, "loc": { "start": { - "line": 414, - "column": 64 + "line": 422, + "column": 47 }, "end": { - "line": 414, - "column": 65 + "line": 422, + "column": 48 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -99570,24 +101935,23 @@ "postfix": false, "binop": null }, - "start": 14283, - "end": 14284, + "start": 14576, + "end": 14577, "loc": { "start": { - "line": 415, - "column": 4 + "line": 422, + "column": 48 }, "end": { - "line": 415, - "column": 5 + "line": 422, + "column": 49 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -99597,74 +101961,76 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14289, - "end": 14291, + "start": 14577, + "end": 14578, "loc": { "start": { - "line": 416, - "column": 4 + "line": 422, + "column": 49 }, "end": { - "line": 416, - "column": 6 + "line": 422, + "column": 50 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "continue", + "keyword": "continue", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14292, - "end": 14293, + "value": "continue", + "start": 14595, + "end": 14603, "loc": { "start": { - "line": 416, - "column": 7 + "line": 423, + "column": 16 }, "end": { - "line": 416, - "column": 8 + "line": 423, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 14293, - "end": 14297, + "start": 14603, + "end": 14604, "loc": { "start": { - "line": 416, - "column": 8 + "line": 423, + "column": 24 }, "end": { - "line": 416, - "column": 12 + "line": 423, + "column": 25 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -99672,18 +102038,17 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14297, - "end": 14298, + "start": 14617, + "end": 14618, "loc": { "start": { - "line": 416, + "line": 424, "column": 12 }, "end": { - "line": 416, + "line": 424, "column": 13 } } @@ -99700,25 +102065,25 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14298, - "end": 14306, + "value": "countMeshUsage", + "start": 14631, + "end": 14645, "loc": { "start": { - "line": 416, - "column": 13 + "line": 425, + "column": 12 }, "end": { - "line": 416, - "column": 21 + "line": 425, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -99726,23 +102091,23 @@ "postfix": false, "binop": null }, - "start": 14306, - "end": 14307, + "start": 14645, + "end": 14646, "loc": { "start": { - "line": 416, - "column": 21 + "line": 425, + "column": 26 }, "end": { - "line": 416, - "column": 22 + "line": 425, + "column": 27 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -99751,24 +102116,24 @@ "postfix": false, "binop": null }, - "start": 14308, - "end": 14309, + "value": "ctx", + "start": 14646, + "end": 14649, "loc": { "start": { - "line": 416, - "column": 23 + "line": 425, + "column": 27 }, "end": { - "line": 416, - "column": 24 + "line": 425, + "column": 30 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -99778,17 +102143,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 14318, - "end": 14323, + "start": 14649, + "end": 14650, "loc": { "start": { - "line": 417, - "column": 8 + "line": 425, + "column": 30 }, "end": { - "line": 417, - "column": 13 + "line": 425, + "column": 31 } } }, @@ -99804,44 +102168,43 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14324, - "end": 14332, + "value": "childNode", + "start": 14651, + "end": 14660, "loc": { "start": { - "line": 417, - "column": 14 + "line": 425, + "column": 32 }, "end": { - "line": 417, - "column": 22 + "line": 425, + "column": 41 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14333, - "end": 14334, + "start": 14660, + "end": 14661, "loc": { "start": { - "line": 417, - "column": 23 + "line": 425, + "column": 41 }, "end": { - "line": 417, - "column": 24 + "line": 425, + "column": 42 } } }, @@ -99857,49 +102220,50 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 14335, - "end": 14339, + "value": "level", + "start": 14662, + "end": 14667, "loc": { "start": { - "line": 417, - "column": 25 + "line": 425, + "column": 43 }, "end": { - "line": 417, - "column": 29 + "line": 425, + "column": 48 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 14339, - "end": 14340, + "value": "+", + "start": 14668, + "end": 14669, "loc": { "start": { - "line": 417, - "column": 29 + "line": 425, + "column": 49 }, "end": { - "line": 417, - "column": 30 + "line": 425, + "column": 50 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -99907,81 +102271,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 14340, - "end": 14348, + "value": 1, + "start": 14670, + "end": 14671, "loc": { "start": { - "line": 417, - "column": 30 + "line": 425, + "column": 51 }, "end": { - "line": 417, - "column": 38 + "line": 425, + "column": 52 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14348, - "end": 14349, + "start": 14671, + "end": 14672, "loc": { "start": { - "line": 417, - "column": 38 + "line": 425, + "column": 52 }, "end": { - "line": 417, - "column": 39 + "line": 425, + "column": 53 } } }, { "type": { - "label": "for", - "keyword": "for", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 14358, - "end": 14361, + "start": 14672, + "end": 14673, "loc": { "start": { - "line": 418, - "column": 8 + "line": 425, + "column": 53 }, "end": { - "line": 418, - "column": 11 + "line": 425, + "column": 54 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -99989,23 +102351,22 @@ "postfix": false, "binop": null }, - "start": 14362, - "end": 14363, + "start": 14682, + "end": 14683, "loc": { "start": { - "line": 418, - "column": 12 + "line": 426, + "column": 8 }, "end": { - "line": 418, - "column": 13 + "line": 426, + "column": 9 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -100013,28 +102374,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 14363, - "end": 14366, + "start": 14688, + "end": 14689, "loc": { "start": { - "line": 418, - "column": 13 + "line": 427, + "column": 4 }, "end": { - "line": 418, - "column": 16 + "line": 427, + "column": 5 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100042,50 +102401,49 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14367, - "end": 14368, + "start": 14690, + "end": 14691, "loc": { "start": { - "line": 418, - "column": 17 + "line": 428, + "column": 0 }, "end": { - "line": 418, - "column": 18 + "line": 428, + "column": 1 } } }, { "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 14369, - "end": 14370, + "value": "function", + "start": 14693, + "end": 14701, "loc": { "start": { - "line": 418, - "column": 19 + "line": 430, + "column": 0 }, "end": { - "line": 418, - "column": 20 + "line": 430, + "column": 8 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -100093,46 +102451,44 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 14371, - "end": 14372, + "value": "testIfNodesHaveNames", + "start": 14702, + "end": 14722, "loc": { "start": { - "line": 418, - "column": 21 + "line": 430, + "column": 9 }, "end": { - "line": 418, - "column": 22 + "line": 430, + "column": 29 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14372, - "end": 14373, + "start": 14722, + "end": 14723, "loc": { "start": { - "line": 418, - "column": 22 + "line": 430, + "column": 29 }, "end": { - "line": 418, - "column": 23 + "line": 430, + "column": 30 } } }, @@ -100148,44 +102504,43 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 14374, - "end": 14377, + "value": "node", + "start": 14723, + "end": 14727, "loc": { "start": { - "line": 418, - "column": 24 + "line": 430, + "column": 30 }, "end": { - "line": 418, - "column": 27 + "line": 430, + "column": 34 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14378, - "end": 14379, + "start": 14727, + "end": 14728, "loc": { "start": { - "line": 418, - "column": 28 + "line": 430, + "column": 34 }, "end": { - "line": 418, - "column": 29 + "line": 430, + "column": 35 } } }, @@ -100201,49 +102556,50 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14380, - "end": 14388, + "value": "level", + "start": 14729, + "end": 14734, "loc": { "start": { - "line": 418, - "column": 30 + "line": 430, + "column": 36 }, "end": { - "line": 418, - "column": 38 + "line": 430, + "column": 41 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14388, - "end": 14389, + "value": "=", + "start": 14735, + "end": 14736, "loc": { "start": { - "line": 418, - "column": 38 + "line": 430, + "column": 42 }, "end": { - "line": 418, - "column": 39 + "line": 430, + "column": 43 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -100251,52 +102607,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "length", - "start": 14389, - "end": 14395, + "value": 0, + "start": 14737, + "end": 14738, "loc": { "start": { - "line": 418, - "column": 39 + "line": 430, + "column": 44 }, "end": { - "line": 418, + "line": 430, "column": 45 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14395, - "end": 14396, + "start": 14738, + "end": 14739, "loc": { "start": { - "line": 418, + "line": 430, "column": 45 }, "end": { - "line": 418, + "line": 430, "column": 46 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -100305,51 +102661,51 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14397, - "end": 14398, + "start": 14740, + "end": 14741, "loc": { "start": { - "line": 418, + "line": 430, "column": 47 }, "end": { - "line": 418, + "line": 430, "column": 48 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 14399, - "end": 14400, + "value": "if", + "start": 14746, + "end": 14748, "loc": { "start": { - "line": 418, - "column": 49 + "line": 431, + "column": 4 }, "end": { - "line": 418, - "column": 50 + "line": 431, + "column": 6 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -100358,43 +102714,43 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 14401, - "end": 14404, + "start": 14749, + "end": 14750, "loc": { "start": { - "line": 418, - "column": 51 + "line": 431, + "column": 7 }, "end": { - "line": 418, - "column": 54 + "line": 431, + "column": 8 } } }, { "type": { - "label": ";", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 14404, - "end": 14405, + "value": "!", + "start": 14750, + "end": 14751, "loc": { "start": { - "line": 418, - "column": 54 + "line": 431, + "column": 8 }, "end": { - "line": 418, - "column": 55 + "line": 431, + "column": 9 } } }, @@ -100410,51 +102766,50 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14406, - "end": 14407, + "value": "node", + "start": 14751, + "end": 14755, "loc": { "start": { - "line": 418, - "column": 56 + "line": 431, + "column": 9 }, "end": { - "line": 418, - "column": 57 + "line": 431, + "column": 13 } } }, { "type": { - "label": "++/--", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 14407, - "end": 14409, + "start": 14755, + "end": 14756, "loc": { "start": { - "line": 418, - "column": 57 + "line": 431, + "column": 13 }, "end": { - "line": 418, - "column": 59 + "line": 431, + "column": 14 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100462,49 +102817,51 @@ "postfix": false, "binop": null }, - "start": 14409, - "end": 14410, + "start": 14757, + "end": 14758, "loc": { "start": { - "line": 418, - "column": 59 + "line": 431, + "column": 15 }, "end": { - "line": 418, - "column": 60 + "line": 431, + "column": 16 } } }, { "type": { - "label": "{", + "label": "return", + "keyword": "return", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14411, - "end": 14412, + "value": "return", + "start": 14767, + "end": 14773, "loc": { "start": { - "line": 418, - "column": 61 + "line": 432, + "column": 8 }, "end": { - "line": 418, - "column": 62 + "line": 432, + "column": 14 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -100514,25 +102871,24 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 14425, - "end": 14430, + "start": 14773, + "end": 14774, "loc": { "start": { - "line": 419, - "column": 12 + "line": 432, + "column": 14 }, "end": { - "line": 419, - "column": 17 + "line": 432, + "column": 15 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100540,44 +102896,69 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 14431, - "end": 14440, + "start": 14779, + "end": 14780, "loc": { "start": { - "line": 419, - "column": 18 + "line": 433, + "column": 4 }, "end": { - "line": 419, - "column": 27 + "line": 433, + "column": 5 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14441, - "end": 14442, + "value": "if", + "start": 14785, + "end": 14787, + "loc": { + "start": { + "line": 434, + "column": 4 + }, + "end": { + "line": 434, + "column": 6 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 14788, + "end": 14789, "loc": { "start": { - "line": 419, - "column": 28 + "line": 434, + "column": 7 }, "end": { - "line": 419, - "column": 29 + "line": 434, + "column": 8 } } }, @@ -100593,25 +102974,25 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14443, - "end": 14451, + "value": "node", + "start": 14789, + "end": 14793, "loc": { "start": { - "line": 419, - "column": 30 + "line": 434, + "column": 8 }, "end": { - "line": 419, - "column": 38 + "line": 434, + "column": 12 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100620,16 +103001,16 @@ "binop": null, "updateContext": null }, - "start": 14451, - "end": 14452, + "start": 14793, + "end": 14794, "loc": { "start": { - "line": 419, - "column": 38 + "line": 434, + "column": 12 }, "end": { - "line": 419, - "column": 39 + "line": 434, + "column": 13 } } }, @@ -100645,23 +103026,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14452, - "end": 14453, + "value": "name", + "start": 14794, + "end": 14798, "loc": { "start": { - "line": 419, - "column": 39 + "line": 434, + "column": 13 }, "end": { - "line": 419, - "column": 40 + "line": 434, + "column": 17 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -100669,53 +103050,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14453, - "end": 14454, + "start": 14798, + "end": 14799, "loc": { "start": { - "line": 419, - "column": 40 + "line": 434, + "column": 17 }, "end": { - "line": 419, - "column": 41 + "line": 434, + "column": 18 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14454, - "end": 14455, + "start": 14800, + "end": 14801, "loc": { "start": { - "line": 419, - "column": 41 + "line": 434, + "column": 19 }, "end": { - "line": 419, - "column": 42 + "line": 434, + "column": 20 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -100725,77 +103104,79 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14468, - "end": 14470, + "value": "return", + "start": 14810, + "end": 14816, "loc": { "start": { - "line": 420, - "column": 12 + "line": 435, + "column": 8 }, "end": { - "line": 420, + "line": 435, "column": 14 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "true", + "keyword": "true", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14471, - "end": 14472, + "value": "true", + "start": 14817, + "end": 14821, "loc": { "start": { - "line": 420, + "line": 435, "column": 15 }, "end": { - "line": 420, - "column": 16 + "line": 435, + "column": 19 } } }, { "type": { - "label": "prefix", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 14472, - "end": 14473, + "start": 14821, + "end": 14822, "loc": { "start": { - "line": 420, - "column": 16 + "line": 435, + "column": 19 }, "end": { - "line": 420, - "column": 17 + "line": 435, + "column": 20 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100803,23 +103184,23 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 14473, - "end": 14482, + "start": 14827, + "end": 14828, "loc": { "start": { - "line": 420, - "column": 17 + "line": 436, + "column": 4 }, "end": { - "line": 420, - "column": 26 + "line": 436, + "column": 5 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -100827,24 +103208,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14482, - "end": 14483, + "value": "if", + "start": 14833, + "end": 14835, "loc": { "start": { - "line": 420, - "column": 26 + "line": 437, + "column": 4 }, "end": { - "line": 420, - "column": 27 + "line": 437, + "column": 6 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -100854,16 +103237,16 @@ "postfix": false, "binop": null }, - "start": 14484, - "end": 14485, + "start": 14836, + "end": 14837, "loc": { "start": { - "line": 420, - "column": 28 + "line": 437, + "column": 7 }, "end": { - "line": 420, - "column": 29 + "line": 437, + "column": 8 } } }, @@ -100879,17 +103262,17 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 14502, - "end": 14505, + "value": "node", + "start": 14837, + "end": 14841, "loc": { "start": { - "line": 421, - "column": 16 + "line": 437, + "column": 8 }, "end": { - "line": 421, - "column": 19 + "line": 437, + "column": 12 } } }, @@ -100906,16 +103289,16 @@ "binop": null, "updateContext": null }, - "start": 14505, - "end": 14506, + "start": 14841, + "end": 14842, "loc": { "start": { - "line": 421, - "column": 19 + "line": 437, + "column": 12 }, "end": { - "line": 421, - "column": 20 + "line": 437, + "column": 13 } } }, @@ -100931,25 +103314,25 @@ "postfix": false, "binop": null }, - "value": "error", - "start": 14506, - "end": 14511, + "value": "children", + "start": 14842, + "end": 14850, "loc": { "start": { - "line": 421, - "column": 20 + "line": 437, + "column": 13 }, "end": { - "line": 421, - "column": 25 + "line": 437, + "column": 21 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -100957,70 +103340,69 @@ "postfix": false, "binop": null }, - "start": 14511, - "end": 14512, + "start": 14850, + "end": 14851, "loc": { "start": { - "line": 421, - "column": 25 + "line": 437, + "column": 21 }, "end": { - "line": 421, - "column": 26 + "line": 437, + "column": 22 } } }, { "type": { - "label": "string", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "Node not found: ", - "start": 14512, - "end": 14530, + "start": 14852, + "end": 14853, "loc": { "start": { - "line": 421, - "column": 26 + "line": 437, + "column": 23 }, "end": { - "line": 421, - "column": 44 + "line": 437, + "column": 24 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 14531, - "end": 14532, + "value": "const", + "start": 14862, + "end": 14867, "loc": { "start": { - "line": 421, - "column": 45 + "line": 438, + "column": 8 }, "end": { - "line": 421, - "column": 46 + "line": 438, + "column": 13 } } }, @@ -101036,49 +103418,77 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14533, - "end": 14534, + "value": "children", + "start": 14868, + "end": 14876, "loc": { "start": { - "line": 421, - "column": 47 + "line": 438, + "column": 14 }, "end": { - "line": 421, - "column": 48 + "line": 438, + "column": 22 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 14877, + "end": 14878, + "loc": { + "start": { + "line": 438, + "column": 23 + }, + "end": { + "line": 438, + "column": 24 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, - "start": 14534, - "end": 14535, + "value": "node", + "start": 14879, + "end": 14883, "loc": { "start": { - "line": 421, - "column": 48 + "line": 438, + "column": 25 }, "end": { - "line": 421, - "column": 49 + "line": 438, + "column": 29 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -101088,44 +103498,42 @@ "binop": null, "updateContext": null }, - "start": 14535, - "end": 14536, + "start": 14883, + "end": 14884, "loc": { "start": { - "line": 421, - "column": 49 + "line": 438, + "column": 29 }, "end": { - "line": 421, - "column": 50 + "line": 438, + "column": 30 } } }, { "type": { - "label": "continue", - "keyword": "continue", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "continue", - "start": 14553, - "end": 14561, + "value": "children", + "start": 14884, + "end": 14892, "loc": { "start": { - "line": 422, - "column": 16 + "line": 438, + "column": 30 }, "end": { - "line": 422, - "column": 24 + "line": 438, + "column": 38 } } }, @@ -101142,48 +103550,51 @@ "binop": null, "updateContext": null }, - "start": 14561, - "end": 14562, + "start": 14892, + "end": 14893, "loc": { "start": { - "line": 422, - "column": 24 + "line": 438, + "column": 38 }, "end": { - "line": 422, - "column": 25 + "line": 438, + "column": 39 } } }, { "type": { - "label": "}", + "label": "for", + "keyword": "for", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14575, - "end": 14576, + "value": "for", + "start": 14902, + "end": 14905, "loc": { "start": { - "line": 423, - "column": 12 + "line": 439, + "column": 8 }, "end": { - "line": 423, - "column": 13 + "line": 439, + "column": 11 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -101192,42 +103603,44 @@ "postfix": false, "binop": null }, - "value": "countMeshUsage", - "start": 14589, - "end": 14603, + "start": 14906, + "end": 14907, "loc": { "start": { - "line": 424, + "line": 439, "column": 12 }, "end": { - "line": 424, - "column": 26 + "line": 439, + "column": 13 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "let", + "keyword": "let", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14603, - "end": 14604, + "value": "let", + "start": 14907, + "end": 14910, "loc": { "start": { - "line": 424, - "column": 26 + "line": 439, + "column": 13 }, "end": { - "line": 424, - "column": 27 + "line": 439, + "column": 16 } } }, @@ -101243,49 +103656,50 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 14604, - "end": 14607, + "value": "i", + "start": 14911, + "end": 14912, "loc": { "start": { - "line": 424, - "column": 27 + "line": 439, + "column": 17 }, "end": { - "line": 424, - "column": 30 + "line": 439, + "column": 18 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 14607, - "end": 14608, + "value": "=", + "start": 14913, + "end": 14914, "loc": { "start": { - "line": 424, - "column": 30 + "line": 439, + "column": 19 }, "end": { - "line": 424, - "column": 31 + "line": 439, + "column": 20 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -101293,19 +103707,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "childNode", - "start": 14609, - "end": 14618, + "value": 0, + "start": 14915, + "end": 14916, "loc": { "start": { - "line": 424, - "column": 32 + "line": 439, + "column": 21 }, "end": { - "line": 424, - "column": 41 + "line": 439, + "column": 22 } } }, @@ -101322,16 +103737,16 @@ "binop": null, "updateContext": null }, - "start": 14618, - "end": 14619, + "start": 14916, + "end": 14917, "loc": { "start": { - "line": 424, - "column": 41 + "line": 439, + "column": 22 }, "end": { - "line": 424, - "column": 42 + "line": 439, + "column": 23 } } }, @@ -101347,50 +103762,50 @@ "postfix": false, "binop": null }, - "value": "level", - "start": 14620, - "end": 14625, + "value": "len", + "start": 14918, + "end": 14921, "loc": { "start": { - "line": 424, - "column": 43 + "line": 439, + "column": 24 }, "end": { - "line": 424, - "column": 48 + "line": 439, + "column": 27 } } }, { "type": { - "label": "+/-", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": true, + "isAssign": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 14625, - "end": 14626, + "value": "=", + "start": 14922, + "end": 14923, "loc": { "start": { - "line": 424, - "column": 48 + "line": 439, + "column": 28 }, "end": { - "line": 424, - "column": 49 + "line": 439, + "column": 29 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -101398,26 +103813,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 14626, - "end": 14627, + "value": "children", + "start": 14924, + "end": 14932, "loc": { "start": { - "line": 424, - "column": 49 + "line": 439, + "column": 30 }, "end": { - "line": 424, - "column": 50 + "line": 439, + "column": 38 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -101425,77 +103839,79 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14627, - "end": 14628, + "start": 14932, + "end": 14933, "loc": { "start": { - "line": 424, - "column": 50 + "line": 439, + "column": 38 }, "end": { - "line": 424, - "column": 51 + "line": 439, + "column": 39 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14628, - "end": 14629, + "value": "length", + "start": 14933, + "end": 14939, "loc": { "start": { - "line": 424, - "column": 51 + "line": 439, + "column": 39 }, - "end": { - "line": 424, - "column": 52 + "end": { + "line": 439, + "column": 45 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14638, - "end": 14639, + "start": 14939, + "end": 14940, "loc": { "start": { - "line": 425, - "column": 8 + "line": 439, + "column": 45 }, "end": { - "line": 425, - "column": 9 + "line": 439, + "column": 46 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -101503,48 +103919,50 @@ "postfix": false, "binop": null }, - "start": 14644, - "end": 14645, + "value": "i", + "start": 14941, + "end": 14942, "loc": { "start": { - "line": 426, - "column": 4 + "line": 439, + "column": 47 }, "end": { - "line": 426, - "column": 5 + "line": 439, + "column": 48 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 7, + "updateContext": null }, - "start": 14646, - "end": 14647, + "value": "<", + "start": 14943, + "end": 14944, "loc": { "start": { - "line": 427, - "column": 0 + "line": 439, + "column": 49 }, "end": { - "line": 427, - "column": 1 + "line": 439, + "column": 50 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -101554,50 +103972,50 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 14649, - "end": 14657, + "value": "len", + "start": 14945, + "end": 14948, "loc": { "start": { - "line": 429, - "column": 0 + "line": 439, + "column": 51 }, "end": { - "line": 429, - "column": 8 + "line": 439, + "column": 54 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "testIfNodesHaveNames", - "start": 14658, - "end": 14678, + "start": 14948, + "end": 14949, "loc": { "start": { - "line": 429, - "column": 9 + "line": 439, + "column": 54 }, "end": { - "line": 429, - "column": 29 + "line": 439, + "column": 55 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -101606,75 +104024,75 @@ "postfix": false, "binop": null }, - "start": 14678, - "end": 14679, + "value": "i", + "start": 14950, + "end": 14951, "loc": { "start": { - "line": 429, - "column": 29 + "line": 439, + "column": 56 }, "end": { - "line": 429, - "column": 30 + "line": 439, + "column": 57 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "node", - "start": 14679, - "end": 14683, + "value": "++", + "start": 14951, + "end": 14953, "loc": { "start": { - "line": 429, - "column": 30 + "line": 439, + "column": 57 }, "end": { - "line": 429, - "column": 34 + "line": 439, + "column": 59 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14683, - "end": 14684, + "start": 14953, + "end": 14954, "loc": { "start": { - "line": 429, - "column": 34 + "line": 439, + "column": 59 }, "end": { - "line": 429, - "column": 35 + "line": 439, + "column": 60 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -101683,50 +104101,50 @@ "postfix": false, "binop": null }, - "value": "level", - "start": 14685, - "end": 14690, + "start": 14955, + "end": 14956, "loc": { "start": { - "line": 429, - "column": 36 + "line": 439, + "column": 61 }, "end": { - "line": 429, - "column": 41 + "line": 439, + "column": 62 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14690, - "end": 14691, + "value": "const", + "start": 14969, + "end": 14974, "loc": { "start": { - "line": 429, - "column": 41 + "line": 440, + "column": 12 }, "end": { - "line": 429, - "column": 42 + "line": 440, + "column": 17 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -101734,52 +104152,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 14691, - "end": 14692, + "value": "childNode", + "start": 14975, + "end": 14984, "loc": { "start": { - "line": 429, - "column": 42 + "line": 440, + "column": 18 }, "end": { - "line": 429, - "column": 43 + "line": 440, + "column": 27 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14692, - "end": 14693, + "value": "=", + "start": 14985, + "end": 14986, "loc": { "start": { - "line": 429, - "column": 43 + "line": 440, + "column": 28 }, "end": { - "line": 429, - "column": 44 + "line": 440, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -101788,25 +104207,25 @@ "postfix": false, "binop": null }, - "start": 14694, - "end": 14695, + "value": "children", + "start": 14987, + "end": 14995, "loc": { "start": { - "line": 429, - "column": 45 + "line": 440, + "column": 30 }, "end": { - "line": 429, - "column": 46 + "line": 440, + "column": 38 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -101815,24 +104234,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14700, - "end": 14702, + "start": 14995, + "end": 14996, "loc": { "start": { - "line": 430, - "column": 4 + "line": 440, + "column": 38 }, "end": { - "line": 430, - "column": 6 + "line": 440, + "column": 39 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -101841,75 +104259,76 @@ "postfix": false, "binop": null }, - "start": 14703, - "end": 14704, + "value": "i", + "start": 14996, + "end": 14997, "loc": { "start": { - "line": 430, - "column": 7 + "line": 440, + "column": 39 }, "end": { - "line": 430, - "column": 8 + "line": 440, + "column": 40 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": "]", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 14704, - "end": 14705, + "start": 14997, + "end": 14998, "loc": { "start": { - "line": 430, - "column": 8 + "line": 440, + "column": 40 }, "end": { - "line": 430, - "column": 9 + "line": 440, + "column": 41 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 14705, - "end": 14709, + "start": 14998, + "end": 14999, "loc": { "start": { - "line": 430, - "column": 9 + "line": 440, + "column": 41 }, "end": { - "line": 430, - "column": 13 + "line": 440, + "column": 42 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -101917,24 +104336,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14709, - "end": 14710, + "value": "if", + "start": 15012, + "end": 15014, "loc": { "start": { - "line": 430, - "column": 13 + "line": 441, + "column": 12 }, "end": { - "line": 430, + "line": 441, "column": 14 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -101944,78 +104365,75 @@ "postfix": false, "binop": null }, - "start": 14711, - "end": 14712, + "start": 15015, + "end": 15016, "loc": { "start": { - "line": 430, + "line": 441, "column": 15 }, "end": { - "line": 430, + "line": 441, "column": 16 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 14721, - "end": 14727, + "value": "testIfNodesHaveNames", + "start": 15016, + "end": 15036, "loc": { "start": { - "line": 431, - "column": 8 + "line": 441, + "column": 16 }, "end": { - "line": 431, - "column": 14 + "line": 441, + "column": 36 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14727, - "end": 14728, + "start": 15036, + "end": 15037, "loc": { "start": { - "line": 431, - "column": 14 + "line": 441, + "column": 36 }, "end": { - "line": 431, - "column": 15 + "line": 441, + "column": 37 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -102023,24 +104441,24 @@ "postfix": false, "binop": null }, - "start": 14733, - "end": 14734, + "value": "childNode", + "start": 15037, + "end": 15046, "loc": { "start": { - "line": 432, - "column": 4 + "line": 441, + "column": 37 }, "end": { - "line": 432, - "column": 5 + "line": 441, + "column": 46 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -102050,24 +104468,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14739, - "end": 14741, + "start": 15046, + "end": 15047, "loc": { "start": { - "line": 433, - "column": 4 + "line": 441, + "column": 46 }, "end": { - "line": 433, - "column": 6 + "line": 441, + "column": 47 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -102076,50 +104493,52 @@ "postfix": false, "binop": null }, - "start": 14742, - "end": 14743, + "value": "level", + "start": 15048, + "end": 15053, "loc": { "start": { - "line": 433, - "column": 7 + "line": 441, + "column": 48 }, "end": { - "line": 433, - "column": 8 + "line": 441, + "column": 53 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "+/-", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "value": "node", - "start": 14743, - "end": 14747, + "value": "+", + "start": 15054, + "end": 15055, "loc": { "start": { - "line": 433, - "column": 8 + "line": 441, + "column": 54 }, "end": { - "line": 433, - "column": 12 + "line": 441, + "column": 55 } } }, { "type": { - "label": ".", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -102128,24 +104547,25 @@ "binop": null, "updateContext": null }, - "start": 14747, - "end": 14748, + "value": 1, + "start": 15056, + "end": 15057, "loc": { "start": { - "line": 433, - "column": 12 + "line": 441, + "column": 56 }, "end": { - "line": 433, - "column": 13 + "line": 441, + "column": 57 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -102153,17 +104573,16 @@ "postfix": false, "binop": null }, - "value": "name", - "start": 14748, - "end": 14752, + "start": 15057, + "end": 15058, "loc": { "start": { - "line": 433, - "column": 13 + "line": 441, + "column": 57 }, "end": { - "line": 433, - "column": 17 + "line": 441, + "column": 58 } } }, @@ -102179,16 +104598,16 @@ "postfix": false, "binop": null }, - "start": 14752, - "end": 14753, + "start": 15058, + "end": 15059, "loc": { "start": { - "line": 433, - "column": 17 + "line": 441, + "column": 58 }, "end": { - "line": 433, - "column": 18 + "line": 441, + "column": 59 } } }, @@ -102204,16 +104623,16 @@ "postfix": false, "binop": null }, - "start": 14754, - "end": 14755, + "start": 15060, + "end": 15061, "loc": { "start": { - "line": 433, - "column": 19 + "line": 441, + "column": 60 }, "end": { - "line": 433, - "column": 20 + "line": 441, + "column": 61 } } }, @@ -102232,16 +104651,16 @@ "updateContext": null }, "value": "return", - "start": 14764, - "end": 14770, + "start": 15078, + "end": 15084, "loc": { "start": { - "line": 434, - "column": 8 + "line": 442, + "column": 16 }, "end": { - "line": 434, - "column": 14 + "line": 442, + "column": 22 } } }, @@ -102260,16 +104679,16 @@ "updateContext": null }, "value": "true", - "start": 14771, - "end": 14775, + "start": 15085, + "end": 15089, "loc": { "start": { - "line": 434, - "column": 15 + "line": 442, + "column": 23 }, "end": { - "line": 434, - "column": 19 + "line": 442, + "column": 27 } } }, @@ -102286,16 +104705,16 @@ "binop": null, "updateContext": null }, - "start": 14775, - "end": 14776, + "start": 15089, + "end": 15090, "loc": { "start": { - "line": 434, - "column": 19 + "line": 442, + "column": 27 }, "end": { - "line": 434, - "column": 20 + "line": 442, + "column": 28 } } }, @@ -102311,23 +104730,22 @@ "postfix": false, "binop": null }, - "start": 14781, - "end": 14782, + "start": 15103, + "end": 15104, "loc": { "start": { - "line": 435, - "column": 4 + "line": 443, + "column": 12 }, "end": { - "line": 435, - "column": 5 + "line": 443, + "column": 13 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -102335,53 +104753,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "if", - "start": 14787, - "end": 14789, - "loc": { - "start": { - "line": 436, - "column": 4 - }, - "end": { - "line": 436, - "column": 6 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 14790, - "end": 14791, + "start": 15113, + "end": 15114, "loc": { "start": { - "line": 436, - "column": 7 + "line": 444, + "column": 8 }, "end": { - "line": 436, - "column": 8 + "line": 444, + "column": 9 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -102389,24 +104780,24 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 14791, - "end": 14795, + "start": 15119, + "end": 15120, "loc": { "start": { - "line": 436, - "column": 8 + "line": 445, + "column": 4 }, "end": { - "line": 436, - "column": 12 + "line": 445, + "column": 5 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -102416,22 +104807,24 @@ "binop": null, "updateContext": null }, - "start": 14795, - "end": 14796, + "value": "return", + "start": 15125, + "end": 15131, "loc": { "start": { - "line": 436, - "column": 12 + "line": 446, + "column": 4 }, "end": { - "line": 436, - "column": 13 + "line": 446, + "column": 10 } } }, { "type": { - "label": "name", + "label": "false", + "keyword": "false", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -102439,52 +104832,54 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 14796, - "end": 14804, + "value": "false", + "start": 15132, + "end": 15137, "loc": { "start": { - "line": 436, - "column": 13 + "line": 446, + "column": 11 }, "end": { - "line": 436, - "column": 21 + "line": 446, + "column": 16 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14804, - "end": 14805, + "start": 15137, + "end": 15138, "loc": { "start": { - "line": 436, - "column": 21 + "line": 446, + "column": 16 }, "end": { - "line": 436, - "column": 22 + "line": 446, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -102492,16 +104887,32 @@ "postfix": false, "binop": null }, - "start": 14806, - "end": 14807, + "start": 15139, + "end": 15140, "loc": { "start": { - "line": 436, - "column": 23 + "line": 447, + "column": 0 }, "end": { - "line": 436, - "column": 24 + "line": 447, + "column": 1 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", + "start": 15142, + "end": 15311, + "loc": { + "start": { + "line": 449, + "column": 0 + }, + "end": { + "line": 452, + "column": 3 } } }, @@ -102520,16 +104931,16 @@ "updateContext": null }, "value": "const", - "start": 14816, - "end": 14821, + "start": 15312, + "end": 15317, "loc": { "start": { - "line": 437, - "column": 8 + "line": 453, + "column": 0 }, "end": { - "line": 437, - "column": 13 + "line": 453, + "column": 5 } } }, @@ -102545,17 +104956,17 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14822, - "end": 14830, + "value": "parseNodesWithoutNames", + "start": 15318, + "end": 15340, "loc": { "start": { - "line": 437, - "column": 14 + "line": 453, + "column": 6 }, "end": { - "line": 437, - "column": 22 + "line": 453, + "column": 28 } } }, @@ -102573,23 +104984,23 @@ "updateContext": null }, "value": "=", - "start": 14831, - "end": 14832, + "start": 15341, + "end": 15342, "loc": { "start": { - "line": 437, - "column": 23 + "line": 453, + "column": 29 }, "end": { - "line": 437, - "column": 24 + "line": 453, + "column": 30 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -102598,49 +105009,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 14833, - "end": 14837, - "loc": { - "start": { - "line": 437, - "column": 25 - }, - "end": { - "line": 437, - "column": 29 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14837, - "end": 14838, + "start": 15343, + "end": 15344, "loc": { "start": { - "line": 437, - "column": 29 + "line": 453, + "column": 31 }, "end": { - "line": 437, - "column": 30 + "line": 453, + "column": 32 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -102650,77 +105035,73 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14838, - "end": 14846, + "value": "function", + "start": 15344, + "end": 15352, "loc": { "start": { - "line": 437, - "column": 30 + "line": 453, + "column": 32 }, "end": { - "line": 437, - "column": 38 + "line": 453, + "column": 40 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14846, - "end": 14847, + "start": 15353, + "end": 15354, "loc": { "start": { - "line": 437, - "column": 38 + "line": 453, + "column": 41 }, "end": { - "line": 437, - "column": 39 + "line": 453, + "column": 42 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "for", - "start": 14856, - "end": 14859, + "start": 15354, + "end": 15355, "loc": { "start": { - "line": 438, - "column": 8 + "line": 453, + "column": 42 }, "end": { - "line": 438, - "column": 11 + "line": 453, + "column": 43 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -102730,23 +105111,23 @@ "postfix": false, "binop": null }, - "start": 14860, - "end": 14861, + "start": 15356, + "end": 15357, "loc": { "start": { - "line": 438, - "column": 12 + "line": 453, + "column": 44 }, "end": { - "line": 438, - "column": 13 + "line": 453, + "column": 45 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -102757,17 +105138,17 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 14861, - "end": 14864, + "value": "const", + "start": 15363, + "end": 15368, "loc": { "start": { - "line": 438, - "column": 13 + "line": 455, + "column": 4 }, "end": { - "line": 438, - "column": 16 + "line": 455, + "column": 9 } } }, @@ -102783,17 +105164,17 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14865, - "end": 14866, + "value": "meshIds", + "start": 15369, + "end": 15376, "loc": { "start": { - "line": 438, - "column": 17 + "line": 455, + "column": 10 }, "end": { - "line": 438, - "column": 18 + "line": 455, + "column": 17 } } }, @@ -102811,23 +105192,23 @@ "updateContext": null }, "value": "=", - "start": 14867, - "end": 14868, + "start": 15377, + "end": 15378, "loc": { "start": { - "line": 438, - "column": 19 + "line": 455, + "column": 18 }, "end": { - "line": 438, - "column": 20 + "line": 455, + "column": 19 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -102837,24 +105218,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 14869, - "end": 14870, + "start": 15379, + "end": 15380, "loc": { "start": { - "line": 438, - "column": 21 + "line": 455, + "column": 20 }, "end": { - "line": 438, - "column": 22 + "line": 455, + "column": 21 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "]", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -102864,75 +105244,77 @@ "binop": null, "updateContext": null }, - "start": 14870, - "end": 14871, + "start": 15380, + "end": 15381, "loc": { "start": { - "line": 438, - "column": 22 + "line": 455, + "column": 21 }, "end": { - "line": 438, - "column": 23 + "line": 455, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "len", - "start": 14872, - "end": 14875, + "start": 15381, + "end": 15382, "loc": { "start": { - "line": 438, - "column": 24 + "line": 455, + "column": 22 }, "end": { - "line": 438, - "column": 27 + "line": 455, + "column": 23 } } }, { "type": { - "label": "=", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14876, - "end": 14877, + "value": "return", + "start": 15388, + "end": 15394, "loc": { "start": { - "line": 438, - "column": 28 + "line": 457, + "column": 4 }, "end": { - "line": 438, - "column": 29 + "line": 457, + "column": 10 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -102942,43 +105324,42 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14878, - "end": 14886, + "value": "function", + "start": 15395, + "end": 15403, "loc": { "start": { - "line": 438, - "column": 30 + "line": 457, + "column": 11 }, "end": { - "line": 438, - "column": 38 + "line": 457, + "column": 19 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14886, - "end": 14887, + "start": 15404, + "end": 15405, "loc": { "start": { - "line": 438, - "column": 38 + "line": 457, + "column": 20 }, "end": { - "line": 438, - "column": 39 + "line": 457, + "column": 21 } } }, @@ -102994,23 +105375,23 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 14887, - "end": 14893, + "value": "ctx", + "start": 15405, + "end": 15408, "loc": { "start": { - "line": 438, - "column": 39 + "line": 457, + "column": 21 }, "end": { - "line": 438, - "column": 45 + "line": 457, + "column": 24 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -103021,16 +105402,16 @@ "binop": null, "updateContext": null }, - "start": 14893, - "end": 14894, + "start": 15408, + "end": 15409, "loc": { "start": { - "line": 438, - "column": 45 + "line": 457, + "column": 24 }, "end": { - "line": 438, - "column": 46 + "line": 457, + "column": 25 } } }, @@ -103046,23 +105427,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14895, - "end": 14896, + "value": "node", + "start": 15410, + "end": 15414, "loc": { "start": { - "line": 438, - "column": 47 + "line": 457, + "column": 26 }, "end": { - "line": 438, - "column": 48 + "line": 457, + "column": 30 } } }, { "type": { - "label": "", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -103070,20 +105451,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 14897, - "end": 14898, + "start": 15414, + "end": 15415, "loc": { "start": { - "line": 438, - "column": 49 + "line": 457, + "column": 30 }, "end": { - "line": 438, - "column": 50 + "line": 457, + "column": 31 } } }, @@ -103099,23 +105479,23 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 14899, - "end": 14902, + "value": "depth", + "start": 15416, + "end": 15421, "loc": { "start": { - "line": 438, - "column": 51 + "line": 457, + "column": 32 }, "end": { - "line": 438, - "column": 54 + "line": 457, + "column": 37 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -103126,16 +105506,16 @@ "binop": null, "updateContext": null }, - "start": 14902, - "end": 14903, + "start": 15421, + "end": 15422, "loc": { "start": { - "line": 438, - "column": 54 + "line": 457, + "column": 37 }, "end": { - "line": 438, - "column": 55 + "line": 457, + "column": 38 } } }, @@ -103151,43 +105531,17 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14904, - "end": 14905, - "loc": { - "start": { - "line": 438, - "column": 56 - }, - "end": { - "line": 438, - "column": 57 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 14905, - "end": 14907, + "value": "matrix", + "start": 15423, + "end": 15429, "loc": { "start": { - "line": 438, - "column": 57 + "line": 457, + "column": 39 }, "end": { - "line": 438, - "column": 59 + "line": 457, + "column": 45 } } }, @@ -103203,16 +105557,16 @@ "postfix": false, "binop": null }, - "start": 14907, - "end": 14908, + "start": 15429, + "end": 15430, "loc": { "start": { - "line": 438, - "column": 59 + "line": 457, + "column": 45 }, "end": { - "line": 438, - "column": 60 + "line": 457, + "column": 46 } } }, @@ -103228,23 +105582,23 @@ "postfix": false, "binop": null }, - "start": 14909, - "end": 14910, + "start": 15431, + "end": 15432, "loc": { "start": { - "line": 438, - "column": 61 + "line": 457, + "column": 47 }, "end": { - "line": 438, - "column": 62 + "line": 457, + "column": 48 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -103255,24 +105609,24 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 14923, - "end": 14928, + "value": "if", + "start": 15441, + "end": 15443, "loc": { "start": { - "line": 439, - "column": 12 + "line": 458, + "column": 8 }, "end": { - "line": 439, - "column": 17 + "line": 458, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -103281,44 +105635,43 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 14929, - "end": 14938, + "start": 15444, + "end": 15445, "loc": { "start": { - "line": 439, - "column": 18 + "line": 458, + "column": 11 }, "end": { - "line": 439, - "column": 27 + "line": 458, + "column": 12 } } }, { "type": { - "label": "=", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, - "prefix": false, + "isAssign": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 14939, - "end": 14940, + "value": "!", + "start": 15445, + "end": 15446, "loc": { "start": { - "line": 439, - "column": 28 + "line": 458, + "column": 12 }, "end": { - "line": 439, - "column": 29 + "line": 458, + "column": 13 } } }, @@ -103334,51 +105687,25 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 14941, - "end": 14949, - "loc": { - "start": { - "line": 439, - "column": 30 - }, - "end": { - "line": 439, - "column": 38 - } - } - }, - { - "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 14949, - "end": 14950, + "value": "node", + "start": 15446, + "end": 15450, "loc": { "start": { - "line": 439, - "column": 38 + "line": 458, + "column": 13 }, "end": { - "line": 439, - "column": 39 + "line": 458, + "column": 17 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -103386,49 +105713,48 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 14950, - "end": 14951, + "start": 15450, + "end": 15451, "loc": { "start": { - "line": 439, - "column": 39 + "line": 458, + "column": 17 }, "end": { - "line": 439, - "column": 40 + "line": 458, + "column": 18 } } }, { "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 14951, - "end": 14952, + "start": 15452, + "end": 15453, "loc": { "start": { - "line": 439, - "column": 40 + "line": 458, + "column": 19 }, "end": { - "line": 439, - "column": 41 + "line": 458, + "column": 20 } } }, { "type": { - "label": ";", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -103439,24 +105765,24 @@ "binop": null, "updateContext": null }, - "start": 14952, - "end": 14953, + "value": "return", + "start": 15466, + "end": 15472, "loc": { "start": { - "line": 439, - "column": 41 + "line": 459, + "column": 12 }, "end": { - "line": 439, - "column": 42 + "line": 459, + "column": 18 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -103466,25 +105792,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 14966, - "end": 14968, + "start": 15472, + "end": 15473, "loc": { "start": { - "line": 440, - "column": 12 + "line": 459, + "column": 18 }, "end": { - "line": 440, - "column": 14 + "line": 459, + "column": 19 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -103492,16 +105817,16 @@ "postfix": false, "binop": null }, - "start": 14969, - "end": 14970, + "start": 15482, + "end": 15483, "loc": { "start": { - "line": 440, - "column": 15 + "line": 460, + "column": 8 }, "end": { - "line": 440, - "column": 16 + "line": 460, + "column": 9 } } }, @@ -103517,42 +105842,44 @@ "postfix": false, "binop": null }, - "value": "testIfNodesHaveNames", - "start": 14970, - "end": 14990, + "value": "matrix", + "start": 15492, + "end": 15498, "loc": { "start": { - "line": 440, - "column": 16 + "line": 461, + "column": 8 }, "end": { - "line": 440, - "column": 36 + "line": 461, + "column": 14 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 14990, - "end": 14991, + "value": "=", + "start": 15499, + "end": 15500, "loc": { "start": { - "line": 440, - "column": 36 + "line": 461, + "column": 15 }, "end": { - "line": 440, - "column": 37 + "line": 461, + "column": 16 } } }, @@ -103568,43 +105895,42 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 14991, - "end": 15000, + "value": "parseNodeMatrix", + "start": 15501, + "end": 15516, "loc": { "start": { - "line": 440, - "column": 37 + "line": 461, + "column": 17 }, "end": { - "line": 440, - "column": 46 + "line": 461, + "column": 32 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15000, - "end": 15001, + "start": 15516, + "end": 15517, "loc": { "start": { - "line": 440, - "column": 46 + "line": 461, + "column": 32 }, "end": { - "line": 440, - "column": 47 + "line": 461, + "column": 33 } } }, @@ -103620,52 +105946,25 @@ "postfix": false, "binop": null }, - "value": "level", - "start": 15002, - "end": 15007, + "value": "node", + "start": 15517, + "end": 15521, "loc": { "start": { - "line": 440, - "column": 48 + "line": 461, + "column": 33 }, "end": { - "line": 440, - "column": 53 + "line": 461, + "column": 37 } } }, { "type": { - "label": "+/-", + "label": ",", "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": false, - "binop": 9, - "updateContext": null - }, - "value": "+", - "start": 15007, - "end": 15008, - "loc": { - "start": { - "line": 440, - "column": 53 - }, - "end": { - "line": 440, - "column": 54 - } - } - }, - { - "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -103674,25 +105973,24 @@ "binop": null, "updateContext": null }, - "value": 1, - "start": 15008, - "end": 15009, + "start": 15521, + "end": 15522, "loc": { "start": { - "line": 440, - "column": 54 + "line": 461, + "column": 37 }, "end": { - "line": 440, - "column": 55 + "line": 461, + "column": 38 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -103700,16 +105998,17 @@ "postfix": false, "binop": null }, - "start": 15009, - "end": 15010, + "value": "matrix", + "start": 15523, + "end": 15529, "loc": { "start": { - "line": 440, - "column": 55 + "line": 461, + "column": 39 }, "end": { - "line": 440, - "column": 56 + "line": 461, + "column": 45 } } }, @@ -103725,49 +106024,50 @@ "postfix": false, "binop": null }, - "start": 15010, - "end": 15011, + "start": 15529, + "end": 15530, "loc": { "start": { - "line": 440, - "column": 56 + "line": 461, + "column": 45 }, "end": { - "line": 440, - "column": 57 + "line": 461, + "column": 46 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15012, - "end": 15013, + "start": 15530, + "end": 15531, "loc": { "start": { - "line": 440, - "column": 58 + "line": 461, + "column": 46 }, "end": { - "line": 440, - "column": 59 + "line": 461, + "column": 47 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -103777,77 +106077,74 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 15030, - "end": 15036, + "value": "if", + "start": 15540, + "end": 15542, "loc": { "start": { - "line": 441, - "column": 16 + "line": 462, + "column": 8 }, "end": { - "line": 441, - "column": 22 + "line": 462, + "column": 10 } } }, { "type": { - "label": "true", - "keyword": "true", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "true", - "start": 15037, - "end": 15041, + "start": 15543, + "end": 15544, "loc": { "start": { - "line": 441, - "column": 23 + "line": 462, + "column": 11 }, "end": { - "line": 441, - "column": 27 + "line": 462, + "column": 12 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15041, - "end": 15042, + "value": "node", + "start": 15544, + "end": 15548, "loc": { "start": { - "line": 441, - "column": 27 + "line": 462, + "column": 12 }, "end": { - "line": 441, - "column": 28 + "line": 462, + "column": 16 } } }, { "type": { - "label": "}", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -103855,26 +106152,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15055, - "end": 15056, + "start": 15548, + "end": 15549, "loc": { "start": { - "line": 442, - "column": 12 + "line": 462, + "column": 16 }, "end": { - "line": 442, - "column": 13 + "line": 462, + "column": 17 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -103882,22 +106180,23 @@ "postfix": false, "binop": null }, - "start": 15065, - "end": 15066, + "value": "mesh", + "start": 15549, + "end": 15553, "loc": { "start": { - "line": 443, - "column": 8 + "line": 462, + "column": 17 }, "end": { - "line": 443, - "column": 9 + "line": 462, + "column": 21 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -103907,51 +106206,47 @@ "postfix": false, "binop": null }, - "start": 15071, - "end": 15072, + "start": 15553, + "end": 15554, "loc": { "start": { - "line": 444, - "column": 4 + "line": 462, + "column": 21 }, "end": { - "line": 444, - "column": 5 + "line": 462, + "column": 22 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 15077, - "end": 15083, + "start": 15555, + "end": 15556, "loc": { "start": { - "line": 445, - "column": 4 + "line": 462, + "column": 23 }, "end": { - "line": 445, - "column": 10 + "line": 462, + "column": 24 } } }, { "type": { - "label": "false", - "keyword": "false", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -103959,54 +106254,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "false", - "start": 15084, - "end": 15089, + "value": "parseNodeMesh", + "start": 15569, + "end": 15582, "loc": { "start": { - "line": 445, - "column": 11 + "line": 463, + "column": 12 }, "end": { - "line": 445, - "column": 16 + "line": 463, + "column": 25 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15089, - "end": 15090, + "start": 15582, + "end": 15583, "loc": { "start": { - "line": 445, - "column": 16 + "line": 463, + "column": 25 }, "end": { - "line": 445, - "column": 17 + "line": 463, + "column": 26 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -104014,40 +106307,24 @@ "postfix": false, "binop": null }, - "start": 15091, - "end": 15092, - "loc": { - "start": { - "line": 446, - "column": 0 - }, - "end": { - "line": 446, - "column": 1 - } - } - }, - { - "type": "CommentBlock", - "value": "*\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n ", - "start": 15094, - "end": 15263, + "value": "node", + "start": 15583, + "end": 15587, "loc": { "start": { - "line": 448, - "column": 0 + "line": 463, + "column": 26 }, "end": { - "line": 451, - "column": 3 + "line": 463, + "column": 30 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -104057,17 +106334,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 15264, - "end": 15269, + "start": 15587, + "end": 15588, "loc": { "start": { - "line": 452, - "column": 0 + "line": 463, + "column": 30 }, "end": { - "line": 452, - "column": 5 + "line": 463, + "column": 31 } } }, @@ -104083,51 +106359,50 @@ "postfix": false, "binop": null }, - "value": "parseNodesWithoutNames", - "start": 15270, - "end": 15292, + "value": "ctx", + "start": 15589, + "end": 15592, "loc": { "start": { - "line": 452, - "column": 6 + "line": 463, + "column": 32 }, "end": { - "line": 452, - "column": 28 + "line": 463, + "column": 35 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15293, - "end": 15294, + "start": 15592, + "end": 15593, "loc": { "start": { - "line": 452, - "column": 29 + "line": 463, + "column": 35 }, "end": { - "line": 452, - "column": 30 + "line": 463, + "column": 36 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104136,50 +106411,50 @@ "postfix": false, "binop": null }, - "start": 15295, - "end": 15296, + "value": "matrix", + "start": 15594, + "end": 15600, "loc": { "start": { - "line": 452, - "column": 31 + "line": 463, + "column": 37 }, "end": { - "line": 452, - "column": 32 + "line": 463, + "column": 43 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, - "startsExpr": true, + "label": ",", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 15296, - "end": 15304, + "start": 15600, + "end": 15601, "loc": { "start": { - "line": 452, - "column": 32 + "line": 463, + "column": 43 }, "end": { - "line": 452, - "column": 40 + "line": 463, + "column": 44 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104188,16 +106463,17 @@ "postfix": false, "binop": null }, - "start": 15305, - "end": 15306, + "value": "meshIds", + "start": 15602, + "end": 15609, "loc": { "start": { - "line": 452, - "column": 41 + "line": 463, + "column": 45 }, "end": { - "line": 452, - "column": 42 + "line": 463, + "column": 52 } } }, @@ -104213,48 +106489,48 @@ "postfix": false, "binop": null }, - "start": 15306, - "end": 15307, + "start": 15609, + "end": 15610, "loc": { "start": { - "line": 452, - "column": 42 + "line": 463, + "column": 52 }, "end": { - "line": 452, - "column": 43 + "line": 463, + "column": 53 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15308, - "end": 15309, + "start": 15610, + "end": 15611, "loc": { "start": { - "line": 452, - "column": 44 + "line": 463, + "column": 53 }, "end": { - "line": 452, - "column": 45 + "line": 463, + "column": 54 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -104262,105 +106538,103 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 15315, - "end": 15320, + "start": 15620, + "end": 15621, "loc": { "start": { - "line": 454, - "column": 4 + "line": 464, + "column": 8 }, "end": { - "line": 454, + "line": 464, "column": 9 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIds", - "start": 15321, - "end": 15328, + "value": "if", + "start": 15630, + "end": 15632, "loc": { "start": { - "line": 454, - "column": 10 + "line": 465, + "column": 8 }, "end": { - "line": 454, - "column": 17 + "line": 465, + "column": 10 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "postfix": false, + "binop": null }, - "value": "=", - "start": 15329, - "end": 15330, + "start": 15633, + "end": 15634, "loc": { "start": { - "line": 454, - "column": 18 + "line": 465, + "column": 11 }, "end": { - "line": 454, - "column": 19 + "line": 465, + "column": 12 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15331, - "end": 15332, + "value": "node", + "start": 15634, + "end": 15638, "loc": { "start": { - "line": 454, - "column": 20 + "line": 465, + "column": 12 }, "end": { - "line": 454, - "column": 21 + "line": 465, + "column": 16 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -104371,78 +106645,74 @@ "binop": null, "updateContext": null }, - "start": 15332, - "end": 15333, + "start": 15638, + "end": 15639, "loc": { "start": { - "line": 454, - "column": 21 + "line": 465, + "column": 16 }, "end": { - "line": 454, - "column": 22 + "line": 465, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15333, - "end": 15334, + "value": "children", + "start": 15639, + "end": 15647, "loc": { "start": { - "line": 454, - "column": 22 + "line": 465, + "column": 17 }, "end": { - "line": 454, - "column": 23 + "line": 465, + "column": 25 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 15340, - "end": 15346, + "start": 15647, + "end": 15648, "loc": { "start": { - "line": 456, - "column": 4 + "line": 465, + "column": 25 }, "end": { - "line": 456, - "column": 10 + "line": 465, + "column": 26 } } }, { "type": { - "label": "function", - "keyword": "function", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104451,42 +106721,44 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 15347, - "end": 15355, + "start": 15649, + "end": 15650, "loc": { "start": { - "line": 456, - "column": 11 + "line": 465, + "column": 27 }, "end": { - "line": 456, - "column": 19 + "line": 465, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15356, - "end": 15357, + "value": "const", + "start": 15663, + "end": 15668, "loc": { "start": { - "line": 456, - "column": 20 + "line": 466, + "column": 12 }, "end": { - "line": 456, - "column": 21 + "line": 466, + "column": 17 } } }, @@ -104502,43 +106774,44 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 15357, - "end": 15360, + "value": "children", + "start": 15669, + "end": 15677, "loc": { "start": { - "line": 456, - "column": 21 + "line": 466, + "column": 18 }, "end": { - "line": 456, - "column": 24 + "line": 466, + "column": 26 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 15360, - "end": 15361, + "value": "=", + "start": 15678, + "end": 15679, "loc": { "start": { - "line": 456, - "column": 24 + "line": 466, + "column": 27 }, "end": { - "line": 456, - "column": 25 + "line": 466, + "column": 28 } } }, @@ -104555,23 +106828,23 @@ "binop": null }, "value": "node", - "start": 15362, - "end": 15366, + "start": 15680, + "end": 15684, "loc": { "start": { - "line": 456, - "column": 26 + "line": 466, + "column": 29 }, "end": { - "line": 456, - "column": 30 + "line": 466, + "column": 33 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -104581,16 +106854,16 @@ "binop": null, "updateContext": null }, - "start": 15366, - "end": 15367, + "start": 15684, + "end": 15685, "loc": { "start": { - "line": 456, - "column": 30 + "line": 466, + "column": 33 }, "end": { - "line": 456, - "column": 31 + "line": 466, + "column": 34 } } }, @@ -104606,23 +106879,23 @@ "postfix": false, "binop": null }, - "value": "depth", - "start": 15368, - "end": 15373, + "value": "children", + "start": 15685, + "end": 15693, "loc": { "start": { - "line": 456, - "column": 32 + "line": 466, + "column": 34 }, "end": { - "line": 456, - "column": 37 + "line": 466, + "column": 42 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -104633,23 +106906,51 @@ "binop": null, "updateContext": null }, - "start": 15373, - "end": 15374, + "start": 15693, + "end": 15694, "loc": { "start": { - "line": 456, - "column": 37 + "line": 466, + "column": 42 }, "end": { - "line": 456, - "column": 38 + "line": 466, + "column": 43 } } }, { "type": { - "label": "name", + "label": "for", + "keyword": "for", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": true, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "for", + "start": 15707, + "end": 15710, + "loc": { + "start": { + "line": 467, + "column": 12 + }, + "end": { + "line": 467, + "column": 15 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104658,23 +106959,23 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 15375, - "end": 15381, + "start": 15711, + "end": 15712, "loc": { "start": { - "line": 456, - "column": 39 + "line": 467, + "column": 16 }, "end": { - "line": 456, - "column": 45 + "line": 467, + "column": 17 } } }, { "type": { - "label": ")", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -104682,25 +106983,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15381, - "end": 15382, + "value": "let", + "start": 15712, + "end": 15715, "loc": { "start": { - "line": 456, - "column": 45 + "line": 467, + "column": 17 }, "end": { - "line": 456, - "column": 46 + "line": 467, + "column": 20 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104709,96 +107012,97 @@ "postfix": false, "binop": null }, - "start": 15383, - "end": 15384, + "value": "i", + "start": 15716, + "end": 15717, "loc": { "start": { - "line": 456, - "column": 47 + "line": 467, + "column": 21 }, "end": { - "line": 456, - "column": 48 + "line": 467, + "column": 22 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "if", - "start": 15393, - "end": 15395, + "value": "=", + "start": 15718, + "end": 15719, "loc": { "start": { - "line": 457, - "column": 8 + "line": 467, + "column": 23 }, "end": { - "line": 457, - "column": 10 + "line": 467, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "num", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15396, - "end": 15397, + "value": 0, + "start": 15720, + "end": 15721, "loc": { "start": { - "line": 457, - "column": 11 + "line": 467, + "column": 25 }, "end": { - "line": 457, - "column": 12 + "line": 467, + "column": 26 } } }, { "type": { - "label": "prefix", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 15397, - "end": 15398, + "start": 15721, + "end": 15722, "loc": { "start": { - "line": 457, - "column": 12 + "line": 467, + "column": 26 }, "end": { - "line": 457, - "column": 13 + "line": 467, + "column": 27 } } }, @@ -104814,49 +107118,51 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15398, - "end": 15402, + "value": "len", + "start": 15723, + "end": 15726, "loc": { "start": { - "line": 457, - "column": 13 + "line": 467, + "column": 28 }, "end": { - "line": 457, - "column": 17 + "line": 467, + "column": 31 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15402, - "end": 15403, + "value": "=", + "start": 15727, + "end": 15728, "loc": { "start": { - "line": 457, - "column": 17 + "line": 467, + "column": 32 }, "end": { - "line": 457, - "column": 18 + "line": 467, + "column": 33 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -104865,24 +107171,24 @@ "postfix": false, "binop": null }, - "start": 15404, - "end": 15405, + "value": "children", + "start": 15729, + "end": 15737, "loc": { "start": { - "line": 457, - "column": 19 + "line": 467, + "column": 34 }, "end": { - "line": 457, - "column": 20 + "line": 467, + "column": 42 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -104892,68 +107198,68 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 15418, - "end": 15424, + "start": 15737, + "end": 15738, "loc": { "start": { - "line": 458, - "column": 12 + "line": 467, + "column": 42 }, "end": { - "line": 458, - "column": 18 + "line": 467, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15424, - "end": 15425, + "value": "length", + "start": 15738, + "end": 15744, "loc": { "start": { - "line": 458, - "column": 18 + "line": 467, + "column": 43 }, "end": { - "line": 458, - "column": 19 + "line": 467, + "column": 49 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15434, - "end": 15435, + "start": 15744, + "end": 15745, "loc": { "start": { - "line": 459, - "column": 8 + "line": 467, + "column": 49 }, "end": { - "line": 459, - "column": 9 + "line": 467, + "column": 50 } } }, @@ -104969,44 +107275,44 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 15444, - "end": 15450, + "value": "i", + "start": 15746, + "end": 15747, "loc": { "start": { - "line": 460, - "column": 8 + "line": 467, + "column": 51 }, "end": { - "line": 460, - "column": 14 + "line": 467, + "column": 52 } } }, { "type": { - "label": "=", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "value": "=", - "start": 15451, - "end": 15452, + "value": "<", + "start": 15748, + "end": 15749, "loc": { "start": { - "line": 460, - "column": 15 + "line": 467, + "column": 53 }, "end": { - "line": 460, - "column": 16 + "line": 467, + "column": 54 } } }, @@ -105022,42 +107328,43 @@ "postfix": false, "binop": null }, - "value": "parseNodeMatrix", - "start": 15453, - "end": 15468, + "value": "len", + "start": 15750, + "end": 15753, "loc": { "start": { - "line": 460, - "column": 17 + "line": 467, + "column": 55 }, "end": { - "line": 460, - "column": 32 + "line": 467, + "column": 58 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15468, - "end": 15469, + "start": 15753, + "end": 15754, "loc": { "start": { - "line": 460, - "column": 32 + "line": 467, + "column": 58 }, "end": { - "line": 460, - "column": 33 + "line": 467, + "column": 59 } } }, @@ -105073,51 +107380,51 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15469, - "end": 15473, + "value": "i", + "start": 15755, + "end": 15756, "loc": { "start": { - "line": 460, - "column": 33 + "line": 467, + "column": 60 }, "end": { - "line": 460, - "column": 37 + "line": 467, + "column": 61 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "++/--", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null + "prefix": true, + "postfix": true, + "binop": null }, - "start": 15473, - "end": 15474, + "value": "++", + "start": 15756, + "end": 15758, "loc": { "start": { - "line": 460, - "column": 37 + "line": 467, + "column": 61 }, "end": { - "line": 460, - "column": 38 + "line": 467, + "column": 63 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105125,25 +107432,24 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 15475, - "end": 15481, + "start": 15758, + "end": 15759, "loc": { "start": { - "line": 460, - "column": 39 + "line": 467, + "column": 63 }, "end": { - "line": 460, - "column": 45 + "line": 467, + "column": 64 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105151,23 +107457,24 @@ "postfix": false, "binop": null }, - "start": 15481, - "end": 15482, + "start": 15760, + "end": 15761, "loc": { "start": { - "line": 460, - "column": 45 + "line": 467, + "column": 65 }, "end": { - "line": 460, - "column": 46 + "line": 467, + "column": 66 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -105177,69 +107484,70 @@ "binop": null, "updateContext": null }, - "start": 15482, - "end": 15483, + "value": "const", + "start": 15778, + "end": 15783, "loc": { "start": { - "line": 460, - "column": 46 + "line": 468, + "column": 16 }, "end": { - "line": 460, - "column": 47 + "line": 468, + "column": 21 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 15492, - "end": 15494, + "value": "childNode", + "start": 15784, + "end": 15793, "loc": { "start": { - "line": 461, - "column": 8 + "line": 468, + "column": 22 }, "end": { - "line": 461, - "column": 10 + "line": 468, + "column": 31 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15495, - "end": 15496, + "value": "=", + "start": 15794, + "end": 15795, "loc": { "start": { - "line": 461, - "column": 11 + "line": 468, + "column": 32 }, "end": { - "line": 461, - "column": 12 + "line": 468, + "column": 33 } } }, @@ -105255,25 +107563,25 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15496, - "end": 15500, + "value": "children", + "start": 15796, + "end": 15804, "loc": { "start": { - "line": 461, - "column": 12 + "line": 468, + "column": 34 }, "end": { - "line": 461, - "column": 16 + "line": 468, + "column": 42 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "[", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105282,16 +107590,16 @@ "binop": null, "updateContext": null }, - "start": 15500, - "end": 15501, + "start": 15804, + "end": 15805, "loc": { "start": { - "line": 461, - "column": 16 + "line": 468, + "column": 42 }, "end": { - "line": 461, - "column": 17 + "line": 468, + "column": 43 } } }, @@ -105307,23 +107615,23 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 15501, - "end": 15505, + "value": "i", + "start": 15805, + "end": 15806, "loc": { "start": { - "line": 461, - "column": 17 + "line": 468, + "column": 43 }, "end": { - "line": 461, - "column": 21 + "line": 468, + "column": 44 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -105331,43 +107639,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15505, - "end": 15506, + "start": 15806, + "end": 15807, "loc": { "start": { - "line": 461, - "column": 21 + "line": 468, + "column": 44 }, "end": { - "line": 461, - "column": 22 + "line": 468, + "column": 45 } } }, { "type": { - "label": "{", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15507, - "end": 15508, + "start": 15807, + "end": 15808, "loc": { "start": { - "line": 461, - "column": 23 + "line": 468, + "column": 45 }, "end": { - "line": 461, - "column": 24 + "line": 468, + "column": 46 } } }, @@ -105383,17 +107693,17 @@ "postfix": false, "binop": null }, - "value": "parseNodeMesh", - "start": 15521, - "end": 15534, + "value": "parseNodesWithoutNames", + "start": 15825, + "end": 15847, "loc": { "start": { - "line": 462, - "column": 12 + "line": 469, + "column": 16 }, "end": { - "line": 462, - "column": 25 + "line": 469, + "column": 38 } } }, @@ -105409,16 +107719,16 @@ "postfix": false, "binop": null }, - "start": 15534, - "end": 15535, + "start": 15847, + "end": 15848, "loc": { "start": { - "line": 462, - "column": 25 + "line": 469, + "column": 38 }, "end": { - "line": 462, - "column": 26 + "line": 469, + "column": 39 } } }, @@ -105434,17 +107744,17 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15535, - "end": 15539, + "value": "ctx", + "start": 15848, + "end": 15851, "loc": { "start": { - "line": 462, - "column": 26 + "line": 469, + "column": 39 }, "end": { - "line": 462, - "column": 30 + "line": 469, + "column": 42 } } }, @@ -105461,16 +107771,16 @@ "binop": null, "updateContext": null }, - "start": 15539, - "end": 15540, + "start": 15851, + "end": 15852, "loc": { "start": { - "line": 462, - "column": 30 + "line": 469, + "column": 42 }, "end": { - "line": 462, - "column": 31 + "line": 469, + "column": 43 } } }, @@ -105486,17 +107796,17 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 15541, - "end": 15544, + "value": "childNode", + "start": 15853, + "end": 15862, "loc": { "start": { - "line": 462, - "column": 32 + "line": 469, + "column": 44 }, "end": { - "line": 462, - "column": 35 + "line": 469, + "column": 53 } } }, @@ -105513,16 +107823,16 @@ "binop": null, "updateContext": null }, - "start": 15544, - "end": 15545, + "start": 15862, + "end": 15863, "loc": { "start": { - "line": 462, - "column": 35 + "line": 469, + "column": 53 }, "end": { - "line": 462, - "column": 36 + "line": 469, + "column": 54 } } }, @@ -105538,49 +107848,50 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 15546, - "end": 15552, + "value": "depth", + "start": 15864, + "end": 15869, "loc": { "start": { - "line": 462, - "column": 37 + "line": 469, + "column": 55 }, "end": { - "line": 462, - "column": 43 + "line": 469, + "column": 60 } } }, { "type": { - "label": ",", + "label": "+/-", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 15552, - "end": 15553, + "value": "+", + "start": 15870, + "end": 15871, "loc": { "start": { - "line": 462, - "column": 43 + "line": 469, + "column": 61 }, "end": { - "line": 462, - "column": 44 + "line": 469, + "column": 62 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -105588,76 +107899,78 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIds", - "start": 15554, - "end": 15561, + "value": 1, + "start": 15872, + "end": 15873, "loc": { "start": { - "line": 462, - "column": 45 + "line": 469, + "column": 63 }, "end": { - "line": 462, - "column": 52 + "line": 469, + "column": 64 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15561, - "end": 15562, + "start": 15873, + "end": 15874, "loc": { "start": { - "line": 462, - "column": 52 + "line": 469, + "column": 64 }, "end": { - "line": 462, - "column": 53 + "line": 469, + "column": 65 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15562, - "end": 15563, + "value": "matrix", + "start": 15875, + "end": 15881, "loc": { "start": { - "line": 462, - "column": 53 + "line": 469, + "column": 66 }, "end": { - "line": 462, - "column": 54 + "line": 469, + "column": 72 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -105667,24 +107980,23 @@ "postfix": false, "binop": null }, - "start": 15572, - "end": 15573, + "start": 15881, + "end": 15882, "loc": { "start": { - "line": 463, - "column": 8 + "line": 469, + "column": 72 }, "end": { - "line": 463, - "column": 9 + "line": 469, + "column": 73 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -105694,25 +108006,24 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 15582, - "end": 15584, + "start": 15882, + "end": 15883, "loc": { "start": { - "line": 464, - "column": 8 + "line": 469, + "column": 73 }, "end": { - "line": 464, - "column": 10 + "line": 469, + "column": 74 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105720,24 +108031,24 @@ "postfix": false, "binop": null }, - "start": 15585, - "end": 15586, + "start": 15896, + "end": 15897, "loc": { "start": { - "line": 464, - "column": 11 + "line": 470, + "column": 12 }, "end": { - "line": 464, - "column": 12 + "line": 470, + "column": 13 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105745,23 +108056,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15586, - "end": 15590, + "start": 15906, + "end": 15907, "loc": { "start": { - "line": 464, - "column": 12 + "line": 471, + "column": 8 }, "end": { - "line": 464, - "column": 16 + "line": 471, + "column": 9 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -105772,23 +108083,24 @@ "binop": null, "updateContext": null }, - "start": 15590, - "end": 15591, + "value": "if", + "start": 15916, + "end": 15918, "loc": { "start": { - "line": 464, - "column": 16 + "line": 472, + "column": 8 }, "end": { - "line": 464, - "column": 17 + "line": 472, + "column": 10 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -105797,25 +108109,24 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 15591, - "end": 15599, + "start": 15919, + "end": 15920, "loc": { "start": { - "line": 464, - "column": 17 + "line": 472, + "column": 11 }, "end": { - "line": 464, - "column": 25 + "line": 472, + "column": 12 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105823,50 +108134,52 @@ "postfix": false, "binop": null }, - "start": 15599, - "end": 15600, + "value": "depth", + "start": 15920, + "end": 15925, "loc": { "start": { - "line": 464, - "column": 25 + "line": 472, + "column": 12 }, "end": { - "line": 464, - "column": 26 + "line": 472, + "column": 17 } } }, { "type": { - "label": "{", + "label": "==/!=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "start": 15601, - "end": 15602, + "value": "===", + "start": 15926, + "end": 15929, "loc": { "start": { - "line": 464, - "column": 27 + "line": 472, + "column": 18 }, "end": { - "line": 464, - "column": 28 + "line": 472, + "column": 21 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105875,25 +108188,25 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 15615, - "end": 15620, + "value": 0, + "start": 15930, + "end": 15931, "loc": { "start": { - "line": 465, - "column": 12 + "line": 472, + "column": 22 }, "end": { - "line": 465, - "column": 17 + "line": 472, + "column": 23 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -105901,51 +108214,23 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 15621, - "end": 15629, + "start": 15931, + "end": 15932, "loc": { "start": { - "line": 465, - "column": 18 + "line": 472, + "column": 23 }, "end": { - "line": 465, - "column": 26 + "line": 472, + "column": 24 } } }, { "type": { - "label": "=", + "label": "{", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "=", - "start": 15630, - "end": 15631, - "loc": { - "start": { - "line": 465, - "column": 27 - }, - "end": { - "line": 465, - "column": 28 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -105954,23 +108239,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 15632, - "end": 15636, + "start": 15933, + "end": 15934, "loc": { "start": { - "line": 465, - "column": 29 + "line": 472, + "column": 25 }, "end": { - "line": 465, - "column": 33 + "line": 472, + "column": 26 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -105981,16 +108266,17 @@ "binop": null, "updateContext": null }, - "start": 15636, - "end": 15637, + "value": "let", + "start": 15947, + "end": 15950, "loc": { "start": { - "line": 465, - "column": 33 + "line": 473, + "column": 12 }, "end": { - "line": 465, - "column": 34 + "line": 473, + "column": 15 } } }, @@ -106006,124 +108292,98 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 15637, - "end": 15645, + "value": "entityId", + "start": 15951, + "end": 15959, "loc": { "start": { - "line": 465, - "column": 34 + "line": 473, + "column": 16 }, "end": { - "line": 465, - "column": 42 + "line": 473, + "column": 24 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 15645, - "end": 15646, + "value": "=", + "start": 15960, + "end": 15961, "loc": { "start": { - "line": 465, - "column": 42 + "line": 473, + "column": 25 }, "end": { - "line": 465, - "column": 43 + "line": 473, + "column": 26 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "string", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 15659, - "end": 15662, + "value": "entity-", + "start": 15962, + "end": 15971, "loc": { "start": { - "line": 466, - "column": 12 + "line": 473, + "column": 27 }, "end": { - "line": 466, - "column": 15 + "line": 473, + "column": 36 } } }, { "type": { - "label": "(", + "label": "+/-", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 15663, - "end": 15664, - "loc": { - "start": { - "line": 466, - "column": 16 - }, - "end": { - "line": 466, - "column": 17 - } - } - }, - { - "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "value": "let", - "start": 15664, - "end": 15667, + "value": "+", + "start": 15972, + "end": 15973, "loc": { "start": { - "line": 466, - "column": 17 + "line": 473, + "column": 37 }, "end": { - "line": 466, - "column": 20 + "line": 473, + "column": 38 } } }, @@ -106134,57 +108394,30 @@ "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "i", - "start": 15668, - "end": 15669, - "loc": { - "start": { - "line": 466, - "column": 21 - }, - "end": { - "line": 466, - "column": 22 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 15670, - "end": 15671, + "value": "ctx", + "start": 15974, + "end": 15977, "loc": { "start": { - "line": 466, - "column": 23 + "line": 473, + "column": 39 }, "end": { - "line": 466, - "column": 24 + "line": 473, + "column": 42 } } }, { "type": { - "label": "num", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -106193,148 +108426,147 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 15672, - "end": 15673, + "start": 15977, + "end": 15978, "loc": { "start": { - "line": 466, - "column": 25 + "line": 473, + "column": 42 }, "end": { - "line": 466, - "column": 26 + "line": 473, + "column": 43 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15673, - "end": 15674, + "value": "nextId", + "start": 15978, + "end": 15984, "loc": { "start": { - "line": 466, - "column": 26 + "line": 473, + "column": 43 }, "end": { - "line": 466, - "column": 27 + "line": 473, + "column": 49 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "len", - "start": 15675, - "end": 15678, + "value": "++", + "start": 15984, + "end": 15986, "loc": { "start": { - "line": 466, - "column": 28 + "line": 473, + "column": 49 }, "end": { - "line": 466, - "column": 31 + "line": 473, + "column": 51 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15679, - "end": 15680, + "start": 15986, + "end": 15987, "loc": { "start": { - "line": 466, - "column": 32 + "line": 473, + "column": 51 }, "end": { - "line": 466, - "column": 33 + "line": 473, + "column": 52 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 15681, - "end": 15689, + "value": "if", + "start": 16000, + "end": 16002, "loc": { "start": { - "line": 466, - "column": 34 + "line": 474, + "column": 12 }, "end": { - "line": 466, - "column": 42 + "line": 474, + "column": 14 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15689, - "end": 15690, + "start": 16003, + "end": 16004, "loc": { "start": { - "line": 466, - "column": 42 + "line": 474, + "column": 15 }, "end": { - "line": 466, - "column": 43 + "line": 474, + "column": 16 } } }, @@ -106350,23 +108582,23 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 15690, - "end": 15696, + "value": "meshIds", + "start": 16004, + "end": 16011, "loc": { "start": { - "line": 466, - "column": 43 + "line": 474, + "column": 16 }, "end": { - "line": 466, - "column": 49 + "line": 474, + "column": 23 } } }, { "type": { - "label": ";", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -106374,19 +108606,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 15696, - "end": 15697, + "value": "&&", + "start": 16012, + "end": 16014, "loc": { "start": { - "line": 466, - "column": 49 + "line": 474, + "column": 24 }, "end": { - "line": 466, - "column": 50 + "line": 474, + "column": 26 } } }, @@ -106402,44 +108635,43 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 15698, - "end": 15699, + "value": "meshIds", + "start": 16015, + "end": 16022, "loc": { "start": { - "line": 466, - "column": 51 + "line": 474, + "column": 27 }, "end": { - "line": 466, - "column": 52 + "line": 474, + "column": 34 } } }, { "type": { - "label": "", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 15700, - "end": 15701, + "start": 16022, + "end": 16023, "loc": { "start": { - "line": 466, - "column": 53 + "line": 474, + "column": 34 }, "end": { - "line": 466, - "column": 54 + "line": 474, + "column": 35 } } }, @@ -106455,23 +108687,23 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 15702, - "end": 15705, + "value": "length", + "start": 16023, + "end": 16029, "loc": { "start": { - "line": 466, - "column": 55 + "line": 474, + "column": 35 }, "end": { - "line": 466, - "column": 58 + "line": 474, + "column": 41 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -106479,25 +108711,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 15705, - "end": 15706, + "value": ">", + "start": 16030, + "end": 16031, "loc": { "start": { - "line": 466, - "column": 58 + "line": 474, + "column": 42 }, "end": { - "line": 466, - "column": 59 + "line": 474, + "column": 43 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -106505,53 +108738,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 15707, - "end": 15708, + "value": 0, + "start": 16032, + "end": 16033, "loc": { "start": { - "line": 466, - "column": 60 + "line": 474, + "column": 44 }, "end": { - "line": 466, - "column": 61 + "line": 474, + "column": 45 } } }, { "type": { - "label": "++/--", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 15708, - "end": 15710, + "start": 16033, + "end": 16034, "loc": { "start": { - "line": 466, - "column": 61 + "line": 474, + "column": 45 }, "end": { - "line": 466, - "column": 63 + "line": 474, + "column": 46 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -106559,23 +108792,23 @@ "postfix": false, "binop": null }, - "start": 15710, - "end": 15711, + "start": 16035, + "end": 16036, "loc": { "start": { - "line": 466, - "column": 63 + "line": 474, + "column": 47 }, "end": { - "line": 466, - "column": 64 + "line": 474, + "column": 48 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -106584,23 +108817,23 @@ "postfix": false, "binop": null }, - "start": 15712, - "end": 15713, + "value": "ctx", + "start": 16053, + "end": 16056, "loc": { "start": { - "line": 466, - "column": 65 + "line": 475, + "column": 16 }, "end": { - "line": 466, - "column": 66 + "line": 475, + "column": 19 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -106611,17 +108844,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 15730, - "end": 15735, + "start": 16056, + "end": 16057, "loc": { "start": { - "line": 467, - "column": 16 + "line": 475, + "column": 19 }, "end": { - "line": 467, - "column": 21 + "line": 475, + "column": 20 } } }, @@ -106637,50 +108869,48 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 15736, - "end": 15745, + "value": "log", + "start": 16057, + "end": 16060, "loc": { "start": { - "line": 467, - "column": 22 + "line": 475, + "column": 20 }, "end": { - "line": 467, - "column": 31 + "line": 475, + "column": 23 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 15746, - "end": 15747, + "start": 16060, + "end": 16061, "loc": { "start": { - "line": 467, - "column": 32 + "line": 475, + "column": 23 }, "end": { - "line": 467, - "column": 33 + "line": 475, + "column": 24 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -106688,45 +108918,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 15748, - "end": 15756, + "value": "Creating XKTEntity with default ID: ", + "start": 16061, + "end": 16099, "loc": { "start": { - "line": 467, - "column": 34 + "line": 475, + "column": 24 }, "end": { - "line": 467, - "column": 42 + "line": 475, + "column": 62 } } }, { "type": { - "label": "[", + "label": "+/-", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 15756, - "end": 15757, + "value": "+", + "start": 16100, + "end": 16101, "loc": { "start": { - "line": 467, - "column": 42 + "line": 475, + "column": 63 }, "end": { - "line": 467, - "column": 43 + "line": 475, + "column": 64 } } }, @@ -106742,23 +108974,23 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 15757, - "end": 15758, + "value": "entityId", + "start": 16102, + "end": 16110, "loc": { "start": { - "line": 467, - "column": 43 + "line": 475, + "column": 65 }, "end": { - "line": 467, - "column": 44 + "line": 475, + "column": 73 } } }, { "type": { - "label": "]", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -106766,19 +108998,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15758, - "end": 15759, + "start": 16110, + "end": 16111, "loc": { "start": { - "line": 467, - "column": 44 + "line": 475, + "column": 73 }, "end": { - "line": 467, - "column": 45 + "line": 475, + "column": 74 } } }, @@ -106795,16 +109026,16 @@ "binop": null, "updateContext": null }, - "start": 15759, - "end": 15760, + "start": 16111, + "end": 16112, "loc": { "start": { - "line": 467, - "column": 45 + "line": 475, + "column": 74 }, "end": { - "line": 467, - "column": 46 + "line": 475, + "column": 75 } } }, @@ -106820,42 +109051,43 @@ "postfix": false, "binop": null }, - "value": "parseNodesWithoutNames", - "start": 15777, - "end": 15799, + "value": "ctx", + "start": 16129, + "end": 16132, "loc": { "start": { - "line": 468, + "line": 476, "column": 16 }, "end": { - "line": 468, - "column": 38 + "line": 476, + "column": 19 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15799, - "end": 15800, + "start": 16132, + "end": 16133, "loc": { "start": { - "line": 468, - "column": 38 + "line": 476, + "column": 19 }, "end": { - "line": 468, - "column": 39 + "line": 476, + "column": 20 } } }, @@ -106871,24 +109103,24 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 15800, - "end": 15803, + "value": "xktModel", + "start": 16133, + "end": 16141, "loc": { "start": { - "line": 468, - "column": 39 + "line": 476, + "column": 20 }, "end": { - "line": 468, - "column": 42 + "line": 476, + "column": 28 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -106898,16 +109130,16 @@ "binop": null, "updateContext": null }, - "start": 15803, - "end": 15804, + "start": 16141, + "end": 16142, "loc": { "start": { - "line": 468, - "column": 42 + "line": 476, + "column": 28 }, "end": { - "line": 468, - "column": 43 + "line": 476, + "column": 29 } } }, @@ -106923,50 +109155,24 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 15805, - "end": 15814, + "value": "createEntity", + "start": 16142, + "end": 16154, "loc": { "start": { - "line": 468, - "column": 44 + "line": 476, + "column": 29 }, "end": { - "line": 468, - "column": 53 + "line": 476, + "column": 41 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 15814, - "end": 15815, - "loc": { - "start": { - "line": 468, - "column": 53 - }, - "end": { - "line": 468, - "column": 54 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -106975,50 +109181,47 @@ "postfix": false, "binop": null }, - "value": "depth", - "start": 15816, - "end": 15821, + "start": 16154, + "end": 16155, "loc": { "start": { - "line": 468, - "column": 55 + "line": 476, + "column": 41 }, "end": { - "line": 468, - "column": 60 + "line": 476, + "column": 42 } } }, { "type": { - "label": "+/-", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "+", - "start": 15822, - "end": 15823, + "start": 16155, + "end": 16156, "loc": { "start": { - "line": 468, - "column": 61 + "line": 476, + "column": 42 }, "end": { - "line": 468, - "column": 62 + "line": 476, + "column": 43 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -107026,20 +109229,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 15824, - "end": 15825, + "value": "entityId", + "start": 16177, + "end": 16185, "loc": { "start": { - "line": 468, - "column": 63 + "line": 477, + "column": 20 }, "end": { - "line": 468, - "column": 64 + "line": 477, + "column": 28 } } }, @@ -107056,16 +109258,16 @@ "binop": null, "updateContext": null }, - "start": 15825, - "end": 15826, + "start": 16185, + "end": 16186, "loc": { "start": { - "line": 468, - "column": 64 + "line": 477, + "column": 28 }, "end": { - "line": 468, - "column": 65 + "line": 477, + "column": 29 } } }, @@ -107081,23 +109283,23 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 15827, - "end": 15833, + "value": "meshIds", + "start": 16207, + "end": 16214, "loc": { "start": { - "line": 468, - "column": 66 + "line": 478, + "column": 20 }, "end": { - "line": 468, - "column": 72 + "line": 478, + "column": 27 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -107107,75 +109309,75 @@ "postfix": false, "binop": null }, - "start": 15833, - "end": 15834, + "start": 16231, + "end": 16232, "loc": { "start": { - "line": 468, - "column": 72 + "line": 479, + "column": 16 }, "end": { - "line": 468, - "column": 73 + "line": 479, + "column": 17 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15834, - "end": 15835, + "start": 16232, + "end": 16233, "loc": { "start": { - "line": 468, - "column": 73 + "line": 479, + "column": 17 }, "end": { - "line": 468, - "column": 74 + "line": 479, + "column": 18 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 15848, - "end": 15849, + "start": 16233, + "end": 16234, "loc": { "start": { - "line": 469, - "column": 12 + "line": 479, + "column": 18 }, "end": { - "line": 469, - "column": 13 + "line": 479, + "column": 19 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -107183,23 +109385,23 @@ "postfix": false, "binop": null }, - "start": 15858, - "end": 15859, + "value": "meshIds", + "start": 16251, + "end": 16258, "loc": { "start": { - "line": 470, - "column": 8 + "line": 480, + "column": 16 }, "end": { - "line": 470, - "column": 9 + "line": 480, + "column": 23 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -107210,24 +109412,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 15868, - "end": 15870, + "start": 16258, + "end": 16259, "loc": { "start": { - "line": 471, - "column": 8 + "line": 480, + "column": 23 }, "end": { - "line": 471, - "column": 10 + "line": 480, + "column": 24 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -107236,77 +109437,79 @@ "postfix": false, "binop": null }, - "start": 15871, - "end": 15872, + "value": "length", + "start": 16259, + "end": 16265, "loc": { "start": { - "line": 471, - "column": 11 + "line": 480, + "column": 24 }, "end": { - "line": 471, - "column": 12 + "line": 480, + "column": 30 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "depth", - "start": 15872, - "end": 15877, + "value": "=", + "start": 16266, + "end": 16267, "loc": { "start": { - "line": 471, - "column": 12 + "line": 480, + "column": 31 }, "end": { - "line": 471, - "column": 17 + "line": 480, + "column": 32 } } }, { "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": null, "updateContext": null }, - "value": "===", - "start": 15878, - "end": 15881, + "value": 0, + "start": 16268, + "end": 16269, "loc": { "start": { - "line": 471, - "column": 18 + "line": 480, + "column": 33 }, "end": { - "line": 471, - "column": 21 + "line": 480, + "column": 34 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -107315,23 +109518,22 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 15882, - "end": 15883, + "start": 16269, + "end": 16270, "loc": { "start": { - "line": 471, - "column": 22 + "line": 480, + "column": 34 }, "end": { - "line": 471, - "column": 23 + "line": 480, + "column": 35 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -107341,23 +109543,23 @@ "postfix": false, "binop": null }, - "start": 15883, - "end": 15884, + "start": 16283, + "end": 16284, "loc": { "start": { - "line": 471, - "column": 23 + "line": 481, + "column": 12 }, "end": { - "line": 471, - "column": 24 + "line": 481, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -107366,23 +109568,23 @@ "postfix": false, "binop": null }, - "start": 15885, - "end": 15886, + "value": "ctx", + "start": 16297, + "end": 16300, "loc": { "start": { - "line": 471, - "column": 25 + "line": 482, + "column": 12 }, "end": { - "line": 471, - "column": 26 + "line": 482, + "column": 15 } } }, { "type": { - "label": "let", - "keyword": "let", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -107393,17 +109595,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 15899, - "end": 15902, + "start": 16300, + "end": 16301, "loc": { "start": { - "line": 472, - "column": 12 + "line": 482, + "column": 15 }, "end": { - "line": 472, - "column": 15 + "line": 482, + "column": 16 } } }, @@ -107419,50 +109620,49 @@ "postfix": false, "binop": null }, - "value": "entityId", - "start": 15903, - "end": 15911, + "value": "stats", + "start": 16301, + "end": 16306, "loc": { "start": { - "line": 472, + "line": 482, "column": 16 }, "end": { - "line": 472, - "column": 24 + "line": 482, + "column": 21 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 15912, - "end": 15913, + "start": 16306, + "end": 16307, "loc": { "start": { - "line": 472, - "column": 25 + "line": 482, + "column": 21 }, "end": { - "line": 472, - "column": 26 + "line": 482, + "column": 22 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -107470,79 +109670,77 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "entity-", - "start": 15914, - "end": 15923, + "value": "numObjects", + "start": 16307, + "end": 16317, "loc": { "start": { - "line": 472, - "column": 27 + "line": 482, + "column": 22 }, "end": { - "line": 472, - "column": 36 + "line": 482, + "column": 32 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": true, - "postfix": false, - "binop": 9, - "updateContext": null + "postfix": true, + "binop": null }, - "value": "+", - "start": 15924, - "end": 15925, + "value": "++", + "start": 16317, + "end": 16319, "loc": { "start": { - "line": 472, - "column": 37 + "line": 482, + "column": 32 }, "end": { - "line": 472, - "column": 38 + "line": 482, + "column": 34 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 15926, - "end": 15929, + "start": 16319, + "end": 16320, "loc": { "start": { - "line": 472, - "column": 39 + "line": 482, + "column": 34 }, "end": { - "line": 472, - "column": 42 + "line": 482, + "column": 35 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -107550,27 +109748,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15929, - "end": 15930, + "start": 16329, + "end": 16330, "loc": { "start": { - "line": 472, - "column": 42 + "line": 483, + "column": 8 }, "end": { - "line": 472, - "column": 43 + "line": 483, + "column": 9 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -107578,105 +109775,99 @@ "postfix": false, "binop": null }, - "value": "nextId", - "start": 15930, - "end": 15936, + "start": 16335, + "end": 16336, "loc": { "start": { - "line": 472, - "column": 43 + "line": 484, + "column": 4 }, "end": { - "line": 472, - "column": 49 + "line": 484, + "column": 5 } } }, { "type": { - "label": "++/--", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 15936, - "end": 15938, + "start": 16337, + "end": 16338, "loc": { "start": { - "line": 472, - "column": 49 + "line": 485, + "column": 0 }, "end": { - "line": 472, - "column": 51 + "line": 485, + "column": 1 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 15938, - "end": 15939, + "start": 16338, + "end": 16339, "loc": { "start": { - "line": 472, - "column": 51 + "line": 485, + "column": 1 }, "end": { - "line": 472, - "column": 52 + "line": 485, + "column": 2 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 15952, - "end": 15954, + "start": 16339, + "end": 16340, "loc": { "start": { - "line": 473, - "column": 12 + "line": 485, + "column": 2 }, "end": { - "line": 473, - "column": 14 + "line": 485, + "column": 3 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -107684,69 +109875,86 @@ "postfix": false, "binop": null }, - "start": 15955, - "end": 15956, + "start": 16340, + "end": 16341, "loc": { "start": { - "line": 473, - "column": 15 + "line": 485, + "column": 3 }, "end": { - "line": 473, - "column": 16 + "line": 485, + "column": 4 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIds", - "start": 15956, - "end": 15963, + "start": 16341, + "end": 16342, "loc": { "start": { - "line": 473, - "column": 16 + "line": 485, + "column": 4 }, "end": { - "line": 473, - "column": 23 + "line": 485, + "column": 5 + } + } + }, + { + "type": "CommentBlock", + "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", + "start": 16345, + "end": 16697, + "loc": { + "start": { + "line": 488, + "column": 0 + }, + "end": { + "line": 495, + "column": 3 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 15964, - "end": 15966, + "value": "const", + "start": 16698, + "end": 16703, "loc": { "start": { - "line": 473, - "column": 24 + "line": 496, + "column": 0 }, "end": { - "line": 473, - "column": 26 + "line": 496, + "column": 5 } } }, @@ -107762,50 +109970,51 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 15967, - "end": 15974, + "value": "parseNodesWithNames", + "start": 16704, + "end": 16723, "loc": { "start": { - "line": 473, - "column": 27 + "line": 496, + "column": 6 }, "end": { - "line": 473, - "column": 34 + "line": 496, + "column": 25 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 15974, - "end": 15975, + "value": "=", + "start": 16724, + "end": 16725, "loc": { "start": { - "line": 473, - "column": 34 + "line": 496, + "column": 26 }, "end": { - "line": 473, - "column": 35 + "line": 496, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -107814,71 +110023,68 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 15975, - "end": 15981, + "start": 16726, + "end": 16727, "loc": { "start": { - "line": 473, - "column": 35 + "line": 496, + "column": 28 }, "end": { - "line": 473, - "column": 41 + "line": 496, + "column": 29 } } }, { "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, - "updateContext": null + "binop": null }, - "value": ">", - "start": 15982, - "end": 15983, + "value": "function", + "start": 16727, + "end": 16735, "loc": { "start": { - "line": 473, - "column": 42 + "line": 496, + "column": 29 }, "end": { - "line": 473, - "column": 43 + "line": 496, + "column": 37 } } }, { "type": { - "label": "num", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 15984, - "end": 15985, + "start": 16736, + "end": 16737, "loc": { "start": { - "line": 473, - "column": 44 + "line": 496, + "column": 38 }, "end": { - "line": 473, - "column": 45 + "line": 496, + "column": 39 } } }, @@ -107894,16 +110100,16 @@ "postfix": false, "binop": null }, - "start": 15985, - "end": 15986, + "start": 16737, + "end": 16738, "loc": { "start": { - "line": 473, - "column": 45 + "line": 496, + "column": 39 }, "end": { - "line": 473, - "column": 46 + "line": 496, + "column": 40 } } }, @@ -107919,100 +110125,103 @@ "postfix": false, "binop": null }, - "start": 15987, - "end": 15988, + "start": 16739, + "end": 16740, "loc": { "start": { - "line": 473, - "column": 47 + "line": 496, + "column": 41 }, "end": { - "line": 473, - "column": 48 + "line": 496, + "column": 42 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 16005, - "end": 16008, + "value": "const", + "start": 16746, + "end": 16751, "loc": { "start": { - "line": 474, - "column": 16 + "line": 498, + "column": 4 }, "end": { - "line": 474, - "column": 19 + "line": 498, + "column": 9 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16008, - "end": 16009, + "value": "objectIdStack", + "start": 16752, + "end": 16765, "loc": { "start": { - "line": 474, - "column": 19 + "line": 498, + "column": 10 }, "end": { - "line": 474, - "column": 20 + "line": 498, + "column": 23 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "log", - "start": 16009, - "end": 16012, + "value": "=", + "start": 16766, + "end": 16767, "loc": { "start": { - "line": 474, - "column": 20 + "line": 498, + "column": 24 }, "end": { - "line": 474, - "column": 23 + "line": 498, + "column": 25 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -108020,26 +110229,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16012, - "end": 16013, + "start": 16768, + "end": 16769, "loc": { "start": { - "line": 474, - "column": 23 + "line": 498, + "column": 26 }, "end": { - "line": 474, - "column": 24 + "line": 498, + "column": 27 } } }, { "type": { - "label": "string", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108048,78 +110258,78 @@ "binop": null, "updateContext": null }, - "value": "Creating XKTEntity with default ID: ", - "start": 16013, - "end": 16051, + "start": 16769, + "end": 16770, "loc": { "start": { - "line": 474, - "column": 24 + "line": 498, + "column": 27 }, "end": { - "line": 474, - "column": 62 + "line": 498, + "column": 28 } } }, { "type": { - "label": "+/-", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 16052, - "end": 16053, + "start": 16770, + "end": 16771, "loc": { "start": { - "line": 474, - "column": 63 + "line": 498, + "column": 28 }, "end": { - "line": 474, - "column": 64 + "line": 498, + "column": 29 } } }, { "type": { - "label": "name", + "label": "const", + "keyword": "const", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "entityId", - "start": 16054, - "end": 16062, + "value": "const", + "start": 16776, + "end": 16781, "loc": { "start": { - "line": 474, - "column": 65 + "line": 499, + "column": 4 }, "end": { - "line": 474, - "column": 73 + "line": 499, + "column": 9 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108127,74 +110337,76 @@ "postfix": false, "binop": null }, - "start": 16062, - "end": 16063, + "value": "meshIdsStack", + "start": 16782, + "end": 16794, "loc": { "start": { - "line": 474, - "column": 73 + "line": 499, + "column": 10 }, "end": { - "line": 474, - "column": 74 + "line": 499, + "column": 22 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 16063, - "end": 16064, + "value": "=", + "start": 16795, + "end": 16796, "loc": { "start": { - "line": 474, - "column": 74 + "line": 499, + "column": 23 }, "end": { - "line": 474, - "column": 75 + "line": 499, + "column": 24 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 16081, - "end": 16084, + "start": 16797, + "end": 16798, "loc": { "start": { - "line": 475, - "column": 16 + "line": 499, + "column": 25 }, "end": { - "line": 475, - "column": 19 + "line": 499, + "column": 26 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -108205,48 +110417,49 @@ "binop": null, "updateContext": null }, - "start": 16084, - "end": 16085, + "start": 16798, + "end": 16799, "loc": { "start": { - "line": 475, - "column": 19 + "line": 499, + "column": 26 }, "end": { - "line": 475, - "column": 20 + "line": 499, + "column": 27 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktModel", - "start": 16085, - "end": 16093, + "start": 16799, + "end": 16800, "loc": { "start": { - "line": 475, - "column": 20 + "line": 499, + "column": 27 }, "end": { - "line": 475, + "line": 499, "column": 28 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -108257,16 +110470,17 @@ "binop": null, "updateContext": null }, - "start": 16093, - "end": 16094, + "value": "let", + "start": 16805, + "end": 16808, "loc": { "start": { - "line": 475, - "column": 28 + "line": 500, + "column": 4 }, "end": { - "line": 475, - "column": 29 + "line": 500, + "column": 7 } } }, @@ -108282,99 +110496,105 @@ "postfix": false, "binop": null }, - "value": "createEntity", - "start": 16094, - "end": 16106, + "value": "meshIds", + "start": 16809, + "end": 16816, "loc": { "start": { - "line": 475, - "column": 29 + "line": 500, + "column": 8 }, "end": { - "line": 475, - "column": 41 + "line": 500, + "column": 15 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16106, - "end": 16107, + "value": "=", + "start": 16817, + "end": 16818, "loc": { "start": { - "line": 475, - "column": 41 + "line": 500, + "column": 16 }, "end": { - "line": 475, - "column": 42 + "line": 500, + "column": 17 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "null", + "keyword": "null", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16107, - "end": 16108, + "value": "null", + "start": 16819, + "end": 16823, "loc": { "start": { - "line": 475, - "column": 42 + "line": 500, + "column": 18 }, "end": { - "line": 475, - "column": 43 + "line": 500, + "column": 22 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "entityId", - "start": 16129, - "end": 16137, + "start": 16823, + "end": 16824, "loc": { "start": { - "line": 476, - "column": 20 + "line": 500, + "column": 22 }, "end": { - "line": 476, - "column": 28 + "line": 500, + "column": 23 } } }, { "type": { - "label": ",", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -108385,22 +110605,24 @@ "binop": null, "updateContext": null }, - "start": 16137, - "end": 16138, + "value": "return", + "start": 16830, + "end": 16836, "loc": { "start": { - "line": 476, - "column": 28 + "line": 502, + "column": 4 }, "end": { - "line": 476, - "column": 29 + "line": 502, + "column": 10 } } }, { "type": { - "label": "name", + "label": "function", + "keyword": "function", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -108410,25 +110632,25 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 16159, - "end": 16166, + "value": "function", + "start": 16837, + "end": 16845, "loc": { "start": { - "line": 477, - "column": 20 + "line": 502, + "column": 11 }, "end": { - "line": 477, - "column": 27 + "line": 502, + "column": 19 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108436,24 +110658,24 @@ "postfix": false, "binop": null }, - "start": 16183, - "end": 16184, + "start": 16846, + "end": 16847, "loc": { "start": { - "line": 478, - "column": 16 + "line": 502, + "column": 20 }, "end": { - "line": 478, - "column": 17 + "line": 502, + "column": 21 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108461,22 +110683,23 @@ "postfix": false, "binop": null }, - "start": 16184, - "end": 16185, + "value": "ctx", + "start": 16847, + "end": 16850, "loc": { "start": { - "line": 478, - "column": 17 + "line": 502, + "column": 21 }, "end": { - "line": 478, - "column": 18 + "line": 502, + "column": 24 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -108487,16 +110710,16 @@ "binop": null, "updateContext": null }, - "start": 16185, - "end": 16186, + "start": 16850, + "end": 16851, "loc": { "start": { - "line": 478, - "column": 18 + "line": 502, + "column": 24 }, "end": { - "line": 478, - "column": 19 + "line": 502, + "column": 25 } } }, @@ -108512,24 +110735,24 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 16203, - "end": 16210, + "value": "node", + "start": 16852, + "end": 16856, "loc": { "start": { - "line": 479, - "column": 16 + "line": 502, + "column": 26 }, "end": { - "line": 479, - "column": 23 + "line": 502, + "column": 30 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -108539,16 +110762,16 @@ "binop": null, "updateContext": null }, - "start": 16210, - "end": 16211, + "start": 16856, + "end": 16857, "loc": { "start": { - "line": 479, - "column": 23 + "line": 502, + "column": 30 }, "end": { - "line": 479, - "column": 24 + "line": 502, + "column": 31 } } }, @@ -108564,50 +110787,49 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 16211, - "end": 16217, + "value": "depth", + "start": 16858, + "end": 16863, "loc": { "start": { - "line": 479, - "column": 24 + "line": 502, + "column": 32 }, "end": { - "line": 479, - "column": 30 + "line": 502, + "column": 37 } } }, { "type": { - "label": "=", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16218, - "end": 16219, + "start": 16863, + "end": 16864, "loc": { "start": { - "line": 479, - "column": 31 + "line": 502, + "column": 37 }, "end": { - "line": 479, - "column": 32 + "line": 502, + "column": 38 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -108615,54 +110837,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 16220, - "end": 16221, + "value": "matrix", + "start": 16865, + "end": 16871, "loc": { "start": { - "line": 479, - "column": 33 + "line": 502, + "column": 39 }, "end": { - "line": 479, - "column": 34 + "line": 502, + "column": 45 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16221, - "end": 16222, + "start": 16871, + "end": 16872, "loc": { "start": { - "line": 479, - "column": 34 + "line": 502, + "column": 45 }, "end": { - "line": 479, - "column": 35 + "line": 502, + "column": 46 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108670,23 +110890,51 @@ "postfix": false, "binop": null }, - "start": 16235, - "end": 16236, + "start": 16873, + "end": 16874, "loc": { "start": { - "line": 480, - "column": 12 + "line": 502, + "column": 47 }, "end": { - "line": 480, - "column": 13 + "line": 502, + "column": 48 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "if", + "start": 16883, + "end": 16885, + "loc": { + "start": { + "line": 503, + "column": 8 + }, + "end": { + "line": 503, + "column": 10 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -108695,43 +110943,43 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 16249, - "end": 16252, + "start": 16886, + "end": 16887, "loc": { "start": { - "line": 481, - "column": 12 + "line": 503, + "column": 11 }, "end": { - "line": 481, - "column": 15 + "line": 503, + "column": 12 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 16252, - "end": 16253, + "value": "!", + "start": 16887, + "end": 16888, "loc": { "start": { - "line": 481, - "column": 15 + "line": 503, + "column": 12 }, "end": { - "line": 481, - "column": 16 + "line": 503, + "column": 13 } } }, @@ -108747,23 +110995,23 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 16253, - "end": 16258, + "value": "node", + "start": 16888, + "end": 16892, "loc": { "start": { - "line": 481, - "column": 16 + "line": 503, + "column": 13 }, "end": { - "line": 481, - "column": 21 + "line": 503, + "column": 17 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -108771,26 +111019,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16258, - "end": 16259, + "start": 16892, + "end": 16893, "loc": { "start": { - "line": 481, - "column": 21 + "line": 503, + "column": 17 }, "end": { - "line": 481, - "column": 22 + "line": 503, + "column": 18 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -108799,43 +111046,44 @@ "postfix": false, "binop": null }, - "value": "numObjects", - "start": 16259, - "end": 16269, + "start": 16894, + "end": 16895, "loc": { "start": { - "line": 481, - "column": 22 + "line": 503, + "column": 19 }, "end": { - "line": 481, - "column": 32 + "line": 503, + "column": 20 } } }, { "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "++", - "start": 16269, - "end": 16271, + "value": "return", + "start": 16908, + "end": 16914, "loc": { "start": { - "line": 481, - "column": 32 + "line": 504, + "column": 12 }, "end": { - "line": 481, - "column": 34 + "line": 504, + "column": 18 } } }, @@ -108852,16 +111100,16 @@ "binop": null, "updateContext": null }, - "start": 16271, - "end": 16272, + "start": 16914, + "end": 16915, "loc": { "start": { - "line": 481, - "column": 34 + "line": 504, + "column": 18 }, "end": { - "line": 481, - "column": 35 + "line": 504, + "column": 19 } } }, @@ -108877,24 +111125,24 @@ "postfix": false, "binop": null }, - "start": 16281, - "end": 16282, + "start": 16924, + "end": 16925, "loc": { "start": { - "line": 482, + "line": 505, "column": 8 }, "end": { - "line": 482, + "line": 505, "column": 9 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108902,49 +111150,52 @@ "postfix": false, "binop": null }, - "start": 16287, - "end": 16288, + "value": "matrix", + "start": 16934, + "end": 16940, "loc": { "start": { - "line": 483, - "column": 4 + "line": 506, + "column": 8 }, "end": { - "line": 483, - "column": 5 + "line": 506, + "column": 14 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16289, - "end": 16290, + "value": "=", + "start": 16941, + "end": 16942, "loc": { "start": { - "line": 484, - "column": 0 + "line": 506, + "column": 15 }, "end": { - "line": 484, - "column": 1 + "line": 506, + "column": 16 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -108952,16 +111203,17 @@ "postfix": false, "binop": null }, - "start": 16290, - "end": 16291, + "value": "parseNodeMatrix", + "start": 16943, + "end": 16958, "loc": { "start": { - "line": 484, - "column": 1 + "line": 506, + "column": 17 }, "end": { - "line": 484, - "column": 2 + "line": 506, + "column": 32 } } }, @@ -108977,24 +111229,24 @@ "postfix": false, "binop": null }, - "start": 16291, - "end": 16292, + "start": 16958, + "end": 16959, "loc": { "start": { - "line": 484, - "column": 2 + "line": 506, + "column": 32 }, "end": { - "line": 484, - "column": 3 + "line": 506, + "column": 33 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -109002,22 +111254,23 @@ "postfix": false, "binop": null }, - "start": 16292, - "end": 16293, + "value": "node", + "start": 16959, + "end": 16963, "loc": { "start": { - "line": 484, - "column": 3 + "line": 506, + "column": 33 }, "end": { - "line": 484, - "column": 4 + "line": 506, + "column": 37 } } }, { "type": { - "label": ";", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -109028,39 +111281,48 @@ "binop": null, "updateContext": null }, - "start": 16293, - "end": 16294, + "start": 16963, + "end": 16964, "loc": { "start": { - "line": 484, - "column": 4 + "line": 506, + "column": 37 }, "end": { - "line": 484, - "column": 5 + "line": 506, + "column": 38 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n ", - "start": 16297, - "end": 16649, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "matrix", + "start": 16965, + "end": 16971, "loc": { "start": { - "line": 487, - "column": 0 + "line": 506, + "column": 39 }, "end": { - "line": 494, - "column": 3 + "line": 506, + "column": 45 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -109068,73 +111330,72 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 16650, - "end": 16655, + "start": 16971, + "end": 16972, "loc": { "start": { - "line": 495, - "column": 0 + "line": 506, + "column": 45 }, "end": { - "line": 495, - "column": 5 + "line": 506, + "column": 46 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseNodesWithNames", - "start": 16656, - "end": 16675, + "start": 16972, + "end": 16973, "loc": { "start": { - "line": 495, - "column": 6 + "line": 506, + "column": 46 }, "end": { - "line": 495, - "column": 25 + "line": 506, + "column": 47 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "if", + "keyword": "if", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16676, - "end": 16677, + "value": "if", + "start": 16982, + "end": 16984, "loc": { "start": { - "line": 495, - "column": 26 + "line": 507, + "column": 8 }, "end": { - "line": 495, - "column": 27 + "line": 507, + "column": 10 } } }, @@ -109150,23 +111411,22 @@ "postfix": false, "binop": null }, - "start": 16678, - "end": 16679, + "start": 16985, + "end": 16986, "loc": { "start": { - "line": 495, - "column": 28 + "line": 507, + "column": 11 }, "end": { - "line": 495, - "column": 29 + "line": 507, + "column": 12 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -109176,50 +111436,51 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 16679, - "end": 16687, + "value": "node", + "start": 16986, + "end": 16990, "loc": { "start": { - "line": 495, - "column": 29 + "line": 507, + "column": 12 }, "end": { - "line": 495, - "column": 37 + "line": 507, + "column": 16 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16688, - "end": 16689, + "start": 16990, + "end": 16991, "loc": { "start": { - "line": 495, - "column": 38 + "line": 507, + "column": 16 }, "end": { - "line": 495, - "column": 39 + "line": 507, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -109227,24 +111488,25 @@ "postfix": false, "binop": null }, - "start": 16689, - "end": 16690, + "value": "name", + "start": 16991, + "end": 16995, "loc": { "start": { - "line": 495, - "column": 39 + "line": 507, + "column": 17 }, "end": { - "line": 495, - "column": 40 + "line": 507, + "column": 21 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -109252,44 +111514,41 @@ "postfix": false, "binop": null }, - "start": 16691, - "end": 16692, + "start": 16995, + "end": 16996, "loc": { "start": { - "line": 495, - "column": 41 + "line": 507, + "column": 21 }, "end": { - "line": 495, - "column": 42 + "line": 507, + "column": 22 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "const", - "start": 16698, - "end": 16703, + "start": 16997, + "end": 16998, "loc": { "start": { - "line": 497, - "column": 4 + "line": 507, + "column": 23 }, "end": { - "line": 497, - "column": 9 + "line": 507, + "column": 24 } } }, @@ -109305,17 +111564,17 @@ "postfix": false, "binop": null }, - "value": "objectIdStack", - "start": 16704, - "end": 16717, + "value": "meshIds", + "start": 17011, + "end": 17018, "loc": { "start": { - "line": 497, - "column": 10 + "line": 508, + "column": 12 }, "end": { - "line": 497, - "column": 23 + "line": 508, + "column": 19 } } }, @@ -109333,16 +111592,16 @@ "updateContext": null }, "value": "=", - "start": 16718, - "end": 16719, + "start": 17019, + "end": 17020, "loc": { "start": { - "line": 497, - "column": 24 + "line": 508, + "column": 20 }, "end": { - "line": 497, - "column": 25 + "line": 508, + "column": 21 } } }, @@ -109359,16 +111618,16 @@ "binop": null, "updateContext": null }, - "start": 16720, - "end": 16721, + "start": 17021, + "end": 17022, "loc": { "start": { - "line": 497, - "column": 26 + "line": 508, + "column": 22 }, "end": { - "line": 497, - "column": 27 + "line": 508, + "column": 23 } } }, @@ -109385,16 +111644,16 @@ "binop": null, "updateContext": null }, - "start": 16721, - "end": 16722, + "start": 17022, + "end": 17023, "loc": { "start": { - "line": 497, - "column": 27 + "line": 508, + "column": 23 }, "end": { - "line": 497, - "column": 28 + "line": 508, + "column": 24 } } }, @@ -109411,23 +111670,23 @@ "binop": null, "updateContext": null }, - "start": 16722, - "end": 16723, + "start": 17023, + "end": 17024, "loc": { "start": { - "line": 497, - "column": 28 + "line": 508, + "column": 24 }, "end": { - "line": 497, - "column": 29 + "line": 508, + "column": 25 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -109438,17 +111697,17 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 16728, - "end": 16733, + "value": "let", + "start": 17037, + "end": 17040, "loc": { "start": { - "line": 498, - "column": 4 + "line": 509, + "column": 12 }, "end": { - "line": 498, - "column": 9 + "line": 509, + "column": 15 } } }, @@ -109464,17 +111723,17 @@ "postfix": false, "binop": null }, - "value": "meshIdsStack", - "start": 16734, - "end": 16746, + "value": "xktEntityId", + "start": 17041, + "end": 17052, "loc": { "start": { - "line": 498, - "column": 10 + "line": 509, + "column": 16 }, "end": { - "line": 498, - "column": 22 + "line": 509, + "column": 27 } } }, @@ -109492,48 +111751,48 @@ "updateContext": null }, "value": "=", - "start": 16747, - "end": 16748, + "start": 17053, + "end": 17054, "loc": { "start": { - "line": 498, - "column": 23 + "line": 509, + "column": 28 }, "end": { - "line": 498, - "column": 24 + "line": 509, + "column": 29 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16749, - "end": 16750, + "value": "node", + "start": 17055, + "end": 17059, "loc": { "start": { - "line": 498, - "column": 25 + "line": 509, + "column": 30 }, "end": { - "line": 498, - "column": 26 + "line": 509, + "column": 34 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -109544,50 +111803,49 @@ "binop": null, "updateContext": null }, - "start": 16750, - "end": 16751, + "start": 17059, + "end": 17060, "loc": { "start": { - "line": 498, - "column": 26 + "line": 509, + "column": 34 }, "end": { - "line": 498, - "column": 27 + "line": 509, + "column": 35 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16751, - "end": 16752, + "value": "name", + "start": 17060, + "end": 17064, "loc": { "start": { - "line": 498, - "column": 27 + "line": 509, + "column": 35 }, "end": { - "line": 498, - "column": 28 + "line": 509, + "column": 39 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -109597,159 +111855,129 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 16757, - "end": 16760, + "start": 17064, + "end": 17065, "loc": { "start": { - "line": 499, - "column": 4 + "line": 509, + "column": 39 }, "end": { - "line": 499, - "column": 7 + "line": 509, + "column": 40 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "meshIds", - "start": 16761, - "end": 16768, - "loc": { - "start": { - "line": 499, - "column": 8 - }, - "end": { - "line": 499, - "column": 15 - } - } - }, - { - "type": { - "label": "=", - "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16769, - "end": 16770, + "value": "if", + "start": 17078, + "end": 17080, "loc": { "start": { - "line": 499, - "column": 16 + "line": 510, + "column": 12 }, "end": { - "line": 499, - "column": 17 + "line": 510, + "column": 14 } } }, { "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 16771, - "end": 16775, + "start": 17081, + "end": 17082, "loc": { "start": { - "line": 499, - "column": 18 + "line": 510, + "column": 15 }, "end": { - "line": 499, - "column": 22 + "line": 510, + "column": 16 } } }, { "type": { - "label": ";", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 16775, - "end": 16776, + "value": "!", + "start": 17082, + "end": 17083, "loc": { "start": { - "line": 499, - "column": 22 + "line": 510, + "column": 16 }, "end": { - "line": 499, - "column": 23 + "line": 510, + "column": 17 } } }, { "type": { - "label": "return", - "keyword": "return", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "return", - "start": 16782, - "end": 16788, + "value": "!", + "start": 17083, + "end": 17084, "loc": { "start": { - "line": 501, - "column": 4 + "line": 510, + "column": 17 }, "end": { - "line": 501, - "column": 10 + "line": 510, + "column": 18 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -109759,42 +111987,44 @@ "postfix": false, "binop": null }, - "value": "function", - "start": 16789, - "end": 16797, + "value": "xktEntityId", + "start": 17084, + "end": 17095, "loc": { "start": { - "line": 501, - "column": 11 + "line": 510, + "column": 18 }, "end": { - "line": 501, - "column": 19 + "line": 510, + "column": 29 } } }, { "type": { - "label": "(", + "label": "&&", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 2, + "updateContext": null }, - "start": 16798, - "end": 16799, + "value": "&&", + "start": 17096, + "end": 17098, "loc": { "start": { - "line": 501, - "column": 20 + "line": 510, + "column": 30 }, "end": { - "line": 501, - "column": 21 + "line": 510, + "column": 32 } } }, @@ -109811,23 +112041,23 @@ "binop": null }, "value": "ctx", - "start": 16799, - "end": 16802, + "start": 17099, + "end": 17102, "loc": { "start": { - "line": 501, - "column": 21 + "line": 510, + "column": 33 }, "end": { - "line": 501, - "column": 24 + "line": 510, + "column": 36 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -109837,16 +112067,16 @@ "binop": null, "updateContext": null }, - "start": 16802, - "end": 16803, + "start": 17102, + "end": 17103, "loc": { "start": { - "line": 501, - "column": 24 + "line": 510, + "column": 36 }, "end": { - "line": 501, - "column": 25 + "line": 510, + "column": 37 } } }, @@ -109862,24 +112092,24 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 16804, - "end": 16808, + "value": "xktModel", + "start": 17103, + "end": 17111, "loc": { "start": { - "line": 501, - "column": 26 + "line": 510, + "column": 37 }, "end": { - "line": 501, - "column": 30 + "line": 510, + "column": 45 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -109889,16 +112119,16 @@ "binop": null, "updateContext": null }, - "start": 16808, - "end": 16809, + "start": 17111, + "end": 17112, "loc": { "start": { - "line": 501, - "column": 30 + "line": 510, + "column": 45 }, "end": { - "line": 501, - "column": 31 + "line": 510, + "column": 46 } } }, @@ -109914,25 +112144,25 @@ "postfix": false, "binop": null }, - "value": "depth", - "start": 16810, - "end": 16815, + "value": "entities", + "start": 17112, + "end": 17120, "loc": { "start": { - "line": 501, - "column": 32 + "line": 510, + "column": 46 }, "end": { - "line": 501, - "column": 37 + "line": 510, + "column": 54 } } }, { "type": { - "label": ",", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -109941,16 +112171,16 @@ "binop": null, "updateContext": null }, - "start": 16815, - "end": 16816, + "start": 17120, + "end": 17121, "loc": { "start": { - "line": 501, - "column": 37 + "line": 510, + "column": 54 }, "end": { - "line": 501, - "column": 38 + "line": 510, + "column": 55 } } }, @@ -109966,23 +112196,23 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 16817, - "end": 16823, + "value": "xktEntityId", + "start": 17121, + "end": 17132, "loc": { "start": { - "line": 501, - "column": 39 + "line": 510, + "column": 55 }, "end": { - "line": 501, - "column": 45 + "line": 510, + "column": 66 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -109990,26 +112220,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16823, - "end": 16824, + "start": 17132, + "end": 17133, "loc": { "start": { - "line": 501, - "column": 45 + "line": 510, + "column": 66 }, "end": { - "line": 501, - "column": 46 + "line": 510, + "column": 67 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110017,51 +112248,48 @@ "postfix": false, "binop": null }, - "start": 16825, - "end": 16826, + "start": 17133, + "end": 17134, "loc": { "start": { - "line": 501, - "column": 47 + "line": 510, + "column": 67 }, "end": { - "line": 501, - "column": 48 + "line": 510, + "column": 68 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 16835, - "end": 16837, + "start": 17135, + "end": 17136, "loc": { "start": { - "line": 502, - "column": 8 + "line": 510, + "column": 69 }, "end": { - "line": 502, - "column": 10 + "line": 510, + "column": 70 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -110070,43 +112298,43 @@ "postfix": false, "binop": null }, - "start": 16838, - "end": 16839, + "value": "ctx", + "start": 17153, + "end": 17156, "loc": { "start": { - "line": 502, - "column": 11 + "line": 511, + "column": 16 }, "end": { - "line": 502, - "column": 12 + "line": 511, + "column": 19 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 16839, - "end": 16840, + "start": 17156, + "end": 17157, "loc": { "start": { - "line": 502, - "column": 12 + "line": 511, + "column": 19 }, "end": { - "line": 502, - "column": 13 + "line": 511, + "column": 20 } } }, @@ -110122,25 +112350,25 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 16840, - "end": 16844, + "value": "log", + "start": 17157, + "end": 17160, "loc": { "start": { - "line": 502, - "column": 13 + "line": 511, + "column": 20 }, "end": { - "line": 502, - "column": 17 + "line": 511, + "column": 23 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110148,23 +112376,23 @@ "postfix": false, "binop": null }, - "start": 16844, - "end": 16845, + "start": 17160, + "end": 17161, "loc": { "start": { - "line": 502, - "column": 17 + "line": 511, + "column": 23 }, "end": { - "line": 502, - "column": 18 + "line": 511, + "column": 24 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "`", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -110173,24 +112401,23 @@ "postfix": false, "binop": null }, - "start": 16846, - "end": 16847, + "start": 17161, + "end": 17162, "loc": { "start": { - "line": 502, - "column": 19 + "line": 511, + "column": 24 }, "end": { - "line": 502, - "column": 20 + "line": 511, + "column": 25 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -110200,51 +112427,50 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 16860, - "end": 16866, + "value": "Warning: Two or more glTF nodes found with same 'name' attribute: '", + "start": 17162, + "end": 17229, "loc": { "start": { - "line": 503, - "column": 12 + "line": 511, + "column": 25 }, "end": { - "line": 503, - "column": 18 + "line": 511, + "column": 92 } } }, { "type": { - "label": ";", + "label": "${", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16866, - "end": 16867, + "start": 17229, + "end": 17231, "loc": { "start": { - "line": 503, - "column": 18 + "line": 511, + "column": 92 }, "end": { - "line": 503, - "column": 19 + "line": 511, + "column": 94 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110252,24 +112478,25 @@ "postfix": false, "binop": null }, - "start": 16876, - "end": 16877, + "value": "xktEntityId", + "start": 17231, + "end": 17242, "loc": { "start": { - "line": 504, - "column": 8 + "line": 511, + "column": 94 }, "end": { - "line": 504, - "column": 9 + "line": 511, + "column": 105 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110277,50 +112504,49 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 16886, - "end": 16892, + "start": 17242, + "end": 17243, "loc": { "start": { - "line": 505, - "column": 8 + "line": 511, + "column": 105 }, "end": { - "line": 505, - "column": 14 + "line": 511, + "column": 106 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "template", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16893, - "end": 16894, + "value": " - will randomly-generating an object ID in XKT", + "start": 17243, + "end": 17290, "loc": { "start": { - "line": 505, - "column": 15 + "line": 511, + "column": 106 }, "end": { - "line": 505, - "column": 16 + "line": 511, + "column": 153 } } }, { "type": { - "label": "name", + "label": "`", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -110330,25 +112556,24 @@ "postfix": false, "binop": null }, - "value": "parseNodeMatrix", - "start": 16895, - "end": 16910, + "start": 17290, + "end": 17291, "loc": { "start": { - "line": 505, - "column": 17 + "line": 511, + "column": 153 }, "end": { - "line": 505, - "column": 32 + "line": 511, + "column": 154 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110356,102 +112581,103 @@ "postfix": false, "binop": null }, - "start": 16910, - "end": 16911, + "start": 17291, + "end": 17292, "loc": { "start": { - "line": 505, - "column": 32 + "line": 511, + "column": 154 }, "end": { - "line": 505, - "column": 33 + "line": 511, + "column": 155 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 16911, - "end": 16915, + "start": 17292, + "end": 17293, "loc": { "start": { - "line": 505, - "column": 33 + "line": 511, + "column": 155 }, "end": { - "line": 505, - "column": 37 + "line": 511, + "column": 156 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16915, - "end": 16916, + "start": 17306, + "end": 17307, "loc": { "start": { - "line": 505, - "column": 37 + "line": 512, + "column": 12 }, "end": { - "line": 505, - "column": 38 + "line": 512, + "column": 13 } } }, { "type": { - "label": "name", + "label": "while", + "keyword": "while", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matrix", - "start": 16917, - "end": 16923, + "value": "while", + "start": 17320, + "end": 17325, "loc": { "start": { - "line": 505, - "column": 39 + "line": 513, + "column": 12 }, "end": { - "line": 505, - "column": 45 + "line": 513, + "column": 17 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -110459,95 +112685,96 @@ "postfix": false, "binop": null }, - "start": 16923, - "end": 16924, + "start": 17326, + "end": 17327, "loc": { "start": { - "line": 505, - "column": 45 + "line": 513, + "column": 18 }, "end": { - "line": 505, - "column": 46 + "line": 513, + "column": 19 } } }, { "type": { - "label": ";", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 16924, - "end": 16925, + "value": "!", + "start": 17327, + "end": 17328, "loc": { "start": { - "line": 505, - "column": 46 + "line": 513, + "column": 19 }, "end": { - "line": 505, - "column": 47 + "line": 513, + "column": 20 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 16934, - "end": 16936, + "value": "xktEntityId", + "start": 17328, + "end": 17339, "loc": { "start": { - "line": 506, - "column": 8 + "line": 513, + "column": 20 }, "end": { - "line": 506, - "column": 10 + "line": 513, + "column": 31 } } }, { "type": { - "label": "(", + "label": "||", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 1, + "updateContext": null }, - "start": 16937, - "end": 16938, + "value": "||", + "start": 17340, + "end": 17342, "loc": { "start": { - "line": 506, - "column": 11 + "line": 513, + "column": 32 }, "end": { - "line": 506, - "column": 12 + "line": 513, + "column": 34 } } }, @@ -110563,17 +112790,17 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 16938, - "end": 16942, + "value": "ctx", + "start": 17343, + "end": 17346, "loc": { "start": { - "line": 506, - "column": 12 + "line": 513, + "column": 35 }, "end": { - "line": 506, - "column": 16 + "line": 513, + "column": 38 } } }, @@ -110590,16 +112817,16 @@ "binop": null, "updateContext": null }, - "start": 16942, - "end": 16943, + "start": 17346, + "end": 17347, "loc": { "start": { - "line": 506, - "column": 16 + "line": 513, + "column": 38 }, "end": { - "line": 506, - "column": 17 + "line": 513, + "column": 39 } } }, @@ -110615,23 +112842,23 @@ "postfix": false, "binop": null }, - "value": "name", - "start": 16943, - "end": 16947, + "value": "xktModel", + "start": 17347, + "end": 17355, "loc": { "start": { - "line": 506, - "column": 17 + "line": 513, + "column": 39 }, "end": { - "line": 506, - "column": 21 + "line": 513, + "column": 47 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -110639,43 +112866,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 16947, - "end": 16948, - "loc": { - "start": { - "line": 506, - "column": 21 - }, - "end": { - "line": 506, - "column": 22 - } - } - }, - { - "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 16949, - "end": 16950, + "start": 17355, + "end": 17356, "loc": { "start": { - "line": 506, - "column": 23 + "line": 513, + "column": 47 }, "end": { - "line": 506, - "column": 24 + "line": 513, + "column": 48 } } }, @@ -110691,70 +112894,69 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 16963, - "end": 16970, + "value": "entities", + "start": 17356, + "end": 17364, "loc": { "start": { - "line": 507, - "column": 12 + "line": 513, + "column": 48 }, "end": { - "line": 507, - "column": 19 + "line": 513, + "column": 56 } } }, { "type": { - "label": "=", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 16971, - "end": 16972, + "start": 17364, + "end": 17365, "loc": { "start": { - "line": 507, - "column": 20 + "line": 513, + "column": 56 }, "end": { - "line": 507, - "column": 21 + "line": 513, + "column": 57 } } }, { "type": { - "label": "[", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16973, - "end": 16974, + "value": "xktEntityId", + "start": 17365, + "end": 17376, "loc": { "start": { - "line": 507, - "column": 22 + "line": 513, + "column": 57 }, "end": { - "line": 507, - "column": 23 + "line": 513, + "column": 68 } } }, @@ -110771,70 +112973,66 @@ "binop": null, "updateContext": null }, - "start": 16974, - "end": 16975, + "start": 17376, + "end": 17377, "loc": { "start": { - "line": 507, - "column": 23 + "line": 513, + "column": 68 }, "end": { - "line": 507, - "column": 24 + "line": 513, + "column": 69 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 16975, - "end": 16976, + "start": 17377, + "end": 17378, "loc": { "start": { - "line": 507, - "column": 24 + "line": 513, + "column": 69 }, "end": { - "line": 507, - "column": 25 + "line": 513, + "column": 70 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 16989, - "end": 16992, + "start": 17379, + "end": 17380, "loc": { "start": { - "line": 508, - "column": 12 + "line": 513, + "column": 71 }, "end": { - "line": 508, - "column": 15 + "line": 513, + "column": 72 } } }, @@ -110851,15 +113049,15 @@ "binop": null }, "value": "xktEntityId", - "start": 16993, - "end": 17004, + "start": 17397, + "end": 17408, "loc": { "start": { - "line": 508, + "line": 514, "column": 16 }, "end": { - "line": 508, + "line": 514, "column": 27 } } @@ -110878,22 +113076,22 @@ "updateContext": null }, "value": "=", - "start": 17005, - "end": 17006, + "start": 17409, + "end": 17410, "loc": { "start": { - "line": 508, + "line": 514, "column": 28 }, "end": { - "line": 508, + "line": 514, "column": 29 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -110901,45 +113099,47 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 17007, - "end": 17011, + "value": "entity-", + "start": 17411, + "end": 17420, "loc": { "start": { - "line": 508, + "line": 514, "column": 30 }, "end": { - "line": 508, - "column": 34 + "line": 514, + "column": 39 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null, + "binop": 9, "updateContext": null }, - "start": 17011, - "end": 17012, + "value": "+", + "start": 17421, + "end": 17422, "loc": { "start": { - "line": 508, - "column": 34 + "line": 514, + "column": 40 }, "end": { - "line": 508, - "column": 35 + "line": 514, + "column": 41 } } }, @@ -110955,24 +113155,24 @@ "postfix": false, "binop": null }, - "value": "name", - "start": 17012, - "end": 17016, + "value": "ctx", + "start": 17423, + "end": 17426, "loc": { "start": { - "line": 508, - "column": 35 + "line": 514, + "column": 42 }, "end": { - "line": 508, - "column": 39 + "line": 514, + "column": 45 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -110982,123 +113182,119 @@ "binop": null, "updateContext": null }, - "start": 17016, - "end": 17017, + "start": 17426, + "end": 17427, "loc": { "start": { - "line": 508, - "column": 39 + "line": 514, + "column": 45 }, "end": { - "line": 508, - "column": 40 + "line": 514, + "column": 46 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 17030, - "end": 17032, + "value": "nextId", + "start": 17427, + "end": 17433, "loc": { "start": { - "line": 509, - "column": 12 + "line": 514, + "column": 46 }, "end": { - "line": 509, - "column": 14 + "line": 514, + "column": 52 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "++/--", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 17033, - "end": 17034, + "value": "++", + "start": 17433, + "end": 17435, "loc": { "start": { - "line": 509, - "column": 15 + "line": 514, + "column": 52 }, "end": { - "line": 509, - "column": 16 + "line": 514, + "column": 54 } } }, { "type": { - "label": "prefix", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 17034, - "end": 17035, + "start": 17435, + "end": 17436, "loc": { "start": { - "line": 509, - "column": 16 + "line": 514, + "column": 54 }, "end": { - "line": 509, - "column": 17 + "line": 514, + "column": 55 } } }, { "type": { - "label": "prefix", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 17035, - "end": 17036, + "start": 17449, + "end": 17450, "loc": { "start": { - "line": 509, - "column": 17 + "line": 515, + "column": 12 }, "end": { - "line": 509, - "column": 18 + "line": 515, + "column": 13 } } }, @@ -111114,44 +113310,43 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 17036, - "end": 17047, + "value": "objectIdStack", + "start": 17463, + "end": 17476, "loc": { "start": { - "line": 509, - "column": 18 + "line": 516, + "column": 12 }, "end": { - "line": 509, - "column": 29 + "line": 516, + "column": 25 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 17048, - "end": 17050, + "start": 17476, + "end": 17477, "loc": { "start": { - "line": 509, - "column": 30 + "line": 516, + "column": 25 }, "end": { - "line": 509, - "column": 32 + "line": 516, + "column": 26 } } }, @@ -111167,43 +113362,42 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 17051, - "end": 17054, + "value": "push", + "start": 17477, + "end": 17481, "loc": { "start": { - "line": 509, - "column": 33 + "line": 516, + "column": 26 }, "end": { - "line": 509, - "column": 36 + "line": 516, + "column": 30 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17054, - "end": 17055, + "start": 17481, + "end": 17482, "loc": { "start": { - "line": 509, - "column": 36 + "line": 516, + "column": 30 }, "end": { - "line": 509, - "column": 37 + "line": 516, + "column": 31 } } }, @@ -111219,23 +113413,23 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 17055, - "end": 17063, + "value": "xktEntityId", + "start": 17482, + "end": 17493, "loc": { "start": { - "line": 509, - "column": 37 + "line": 516, + "column": 31 }, "end": { - "line": 509, - "column": 45 + "line": 516, + "column": 42 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -111243,19 +113437,44 @@ "isAssign": false, "prefix": false, "postfix": false, + "binop": null + }, + "start": 17493, + "end": 17494, + "loc": { + "start": { + "line": 516, + "column": 42 + }, + "end": { + "line": 516, + "column": 43 + } + } + }, + { + "type": { + "label": ";", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null, "updateContext": null }, - "start": 17063, - "end": 17064, + "start": 17494, + "end": 17495, "loc": { "start": { - "line": 509, - "column": 45 + "line": 516, + "column": 43 }, "end": { - "line": 509, - "column": 46 + "line": 516, + "column": 44 } } }, @@ -111271,25 +113490,25 @@ "postfix": false, "binop": null }, - "value": "entities", - "start": 17064, - "end": 17072, + "value": "meshIdsStack", + "start": 17508, + "end": 17520, "loc": { "start": { - "line": 509, - "column": 46 + "line": 517, + "column": 12 }, "end": { - "line": 509, - "column": 54 + "line": 517, + "column": 24 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111298,16 +113517,16 @@ "binop": null, "updateContext": null }, - "start": 17072, - "end": 17073, + "start": 17520, + "end": 17521, "loc": { "start": { - "line": 509, - "column": 54 + "line": 517, + "column": 24 }, "end": { - "line": 509, - "column": 55 + "line": 517, + "column": 25 } } }, @@ -111323,51 +113542,50 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 17073, - "end": 17084, + "value": "push", + "start": 17521, + "end": 17525, "loc": { "start": { - "line": 509, - "column": 55 + "line": 517, + "column": 25 }, "end": { - "line": 509, - "column": 66 + "line": 517, + "column": 29 } } }, { "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17084, - "end": 17085, + "start": 17525, + "end": 17526, "loc": { "start": { - "line": 509, - "column": 66 + "line": 517, + "column": 29 }, "end": { - "line": 509, - "column": 67 + "line": 517, + "column": 30 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111375,24 +113593,25 @@ "postfix": false, "binop": null }, - "start": 17085, - "end": 17086, + "value": "meshIds", + "start": 17526, + "end": 17533, "loc": { "start": { - "line": 509, - "column": 67 + "line": 517, + "column": 30 }, "end": { - "line": 509, - "column": 68 + "line": 517, + "column": 37 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111400,48 +113619,48 @@ "postfix": false, "binop": null }, - "start": 17087, - "end": 17088, + "start": 17533, + "end": 17534, "loc": { "start": { - "line": 509, - "column": 69 + "line": 517, + "column": 37 }, "end": { - "line": 509, - "column": 70 + "line": 517, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 17105, - "end": 17108, + "start": 17534, + "end": 17535, "loc": { "start": { - "line": 510, - "column": 16 + "line": 517, + "column": 38 }, "end": { - "line": 510, - "column": 19 + "line": 517, + "column": 39 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -111449,45 +113668,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17108, - "end": 17109, + "start": 17544, + "end": 17545, "loc": { "start": { - "line": 510, - "column": 19 + "line": 518, + "column": 8 }, "end": { - "line": 510, - "column": 20 + "line": 518, + "column": 9 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "log", - "start": 17109, - "end": 17112, + "value": "if", + "start": 17554, + "end": 17556, "loc": { "start": { - "line": 510, - "column": 20 + "line": 519, + "column": 8 }, "end": { - "line": 510, - "column": 23 + "line": 519, + "column": 10 } } }, @@ -111503,22 +113723,22 @@ "postfix": false, "binop": null }, - "start": 17112, - "end": 17113, + "start": 17557, + "end": 17558, "loc": { "start": { - "line": 510, - "column": 23 + "line": 519, + "column": 11 }, "end": { - "line": 510, - "column": 24 + "line": 519, + "column": 12 } } }, { "type": { - "label": "`", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -111528,50 +113748,51 @@ "postfix": false, "binop": null }, - "start": 17113, - "end": 17114, + "value": "meshIds", + "start": 17558, + "end": 17565, "loc": { "start": { - "line": 510, - "column": 24 + "line": 519, + "column": 12 }, "end": { - "line": 510, - "column": 25 + "line": 519, + "column": 19 } } }, { "type": { - "label": "template", - "beforeExpr": false, + "label": "&&", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "value": "Warning: Two or more glTF nodes found with same 'name' attribute: '", - "start": 17114, - "end": 17181, + "value": "&&", + "start": 17566, + "end": 17568, "loc": { "start": { - "line": 510, - "column": 25 + "line": 519, + "column": 20 }, "end": { - "line": 510, - "column": 92 + "line": 519, + "column": 22 } } }, { "type": { - "label": "${", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -111580,50 +113801,51 @@ "postfix": false, "binop": null }, - "start": 17181, - "end": 17183, + "value": "node", + "start": 17569, + "end": 17573, "loc": { "start": { - "line": 510, - "column": 92 + "line": 519, + "column": 23 }, "end": { - "line": 510, - "column": 94 + "line": 519, + "column": 27 } } }, { "type": { - "label": "name", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktEntityId", - "start": 17183, - "end": 17194, + "start": 17573, + "end": 17574, "loc": { "start": { - "line": 510, - "column": 94 + "line": 519, + "column": 27 }, "end": { - "line": 510, - "column": 105 + "line": 519, + "column": 28 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111631,22 +113853,23 @@ "postfix": false, "binop": null }, - "start": 17194, - "end": 17195, + "value": "mesh", + "start": 17574, + "end": 17578, "loc": { "start": { - "line": 510, - "column": 105 + "line": 519, + "column": 28 }, "end": { - "line": 510, - "column": 106 + "line": 519, + "column": 32 } } }, { "type": { - "label": "template", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -111654,27 +113877,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": " - will randomly-generating an object ID in XKT", - "start": 17195, - "end": 17242, + "start": 17578, + "end": 17579, "loc": { "start": { - "line": 510, - "column": 106 + "line": 519, + "column": 32 }, "end": { - "line": 510, - "column": 153 + "line": 519, + "column": 33 } } }, { "type": { - "label": "`", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -111683,24 +113904,24 @@ "postfix": false, "binop": null }, - "start": 17242, - "end": 17243, + "start": 17580, + "end": 17581, "loc": { "start": { - "line": 510, - "column": 153 + "line": 519, + "column": 34 }, "end": { - "line": 510, - "column": 154 + "line": 519, + "column": 35 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111708,50 +113929,50 @@ "postfix": false, "binop": null }, - "start": 17243, - "end": 17244, + "value": "parseNodeMesh", + "start": 17594, + "end": 17607, "loc": { "start": { - "line": 510, - "column": 154 + "line": 520, + "column": 12 }, "end": { - "line": 510, - "column": 155 + "line": 520, + "column": 25 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17244, - "end": 17245, + "start": 17607, + "end": 17608, "loc": { "start": { - "line": 510, - "column": 155 + "line": 520, + "column": 25 }, "end": { - "line": 510, - "column": 156 + "line": 520, + "column": 26 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -111759,51 +113980,50 @@ "postfix": false, "binop": null }, - "start": 17258, - "end": 17259, + "value": "node", + "start": 17608, + "end": 17612, "loc": { "start": { - "line": 511, - "column": 12 + "line": 520, + "column": 26 }, "end": { - "line": 511, - "column": 13 + "line": 520, + "column": 30 } } }, { "type": { - "label": "while", - "keyword": "while", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "while", - "start": 17272, - "end": 17277, + "start": 17612, + "end": 17613, "loc": { "start": { - "line": 512, - "column": 12 + "line": 520, + "column": 30 }, "end": { - "line": 512, - "column": 17 + "line": 520, + "column": 31 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -111812,43 +114032,43 @@ "postfix": false, "binop": null }, - "start": 17278, - "end": 17279, + "value": "ctx", + "start": 17614, + "end": 17617, "loc": { "start": { - "line": 512, - "column": 18 + "line": 520, + "column": 32 }, "end": { - "line": 512, - "column": 19 + "line": 520, + "column": 35 } } }, { "type": { - "label": "prefix", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 17279, - "end": 17280, + "start": 17617, + "end": 17618, "loc": { "start": { - "line": 512, - "column": 19 + "line": 520, + "column": 35 }, "end": { - "line": 512, - "column": 20 + "line": 520, + "column": 36 } } }, @@ -111864,23 +114084,23 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 17280, - "end": 17291, + "value": "matrix", + "start": 17619, + "end": 17625, "loc": { "start": { - "line": 512, - "column": 20 + "line": 520, + "column": 37 }, "end": { - "line": 512, - "column": 31 + "line": 520, + "column": 43 } } }, { "type": { - "label": "||", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -111888,20 +114108,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 17292, - "end": 17294, + "start": 17625, + "end": 17626, "loc": { "start": { - "line": 512, - "column": 32 + "line": 520, + "column": 43 }, "end": { - "line": 512, - "column": 34 + "line": 520, + "column": 44 } } }, @@ -111917,23 +114136,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 17295, - "end": 17298, + "value": "meshIds", + "start": 17627, + "end": 17634, "loc": { "start": { - "line": 512, - "column": 35 + "line": 520, + "column": 45 }, "end": { - "line": 512, - "column": 38 + "line": 520, + "column": 52 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -111941,51 +114160,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17298, - "end": 17299, + "start": 17634, + "end": 17635, "loc": { "start": { - "line": 512, - "column": 38 + "line": 520, + "column": 52 }, "end": { - "line": 512, - "column": 39 + "line": 520, + "column": 53 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktModel", - "start": 17299, - "end": 17307, + "start": 17635, + "end": 17636, "loc": { "start": { - "line": 512, - "column": 39 + "line": 520, + "column": 53 }, "end": { - "line": 512, - "column": 47 + "line": 520, + "column": 54 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -111993,51 +114211,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17307, - "end": 17308, + "start": 17645, + "end": 17646, "loc": { "start": { - "line": 512, - "column": 47 + "line": 521, + "column": 8 }, "end": { - "line": 512, - "column": 48 + "line": 521, + "column": 9 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "entities", - "start": 17308, - "end": 17316, + "value": "if", + "start": 17655, + "end": 17657, "loc": { "start": { - "line": 512, - "column": 48 + "line": 522, + "column": 8 }, "end": { - "line": 512, - "column": 56 + "line": 522, + "column": 10 } } }, { "type": { - "label": "[", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -112045,19 +114264,18 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17316, - "end": 17317, + "start": 17658, + "end": 17659, "loc": { "start": { - "line": 512, - "column": 56 + "line": 522, + "column": 11 }, "end": { - "line": 512, - "column": 57 + "line": 522, + "column": 12 } } }, @@ -112073,23 +114291,23 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 17317, - "end": 17328, + "value": "node", + "start": 17659, + "end": 17663, "loc": { "start": { - "line": 512, - "column": 57 + "line": 522, + "column": 12 }, "end": { - "line": 512, - "column": 68 + "line": 522, + "column": 16 } } }, { "type": { - "label": "]", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -112100,24 +114318,24 @@ "binop": null, "updateContext": null }, - "start": 17328, - "end": 17329, + "start": 17663, + "end": 17664, "loc": { "start": { - "line": 512, - "column": 68 + "line": 522, + "column": 16 }, "end": { - "line": 512, - "column": 69 + "line": 522, + "column": 17 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -112125,24 +114343,25 @@ "postfix": false, "binop": null }, - "start": 17329, - "end": 17330, + "value": "children", + "start": 17664, + "end": 17672, "loc": { "start": { - "line": 512, - "column": 69 + "line": 522, + "column": 17 }, "end": { - "line": 512, - "column": 70 + "line": 522, + "column": 25 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -112150,23 +114369,23 @@ "postfix": false, "binop": null }, - "start": 17331, - "end": 17332, + "start": 17672, + "end": 17673, "loc": { "start": { - "line": 512, - "column": 71 + "line": 522, + "column": 25 }, "end": { - "line": 512, - "column": 72 + "line": 522, + "column": 26 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -112175,50 +114394,50 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 17349, - "end": 17360, + "start": 17674, + "end": 17675, "loc": { "start": { - "line": 513, - "column": 16 + "line": 522, + "column": 27 }, "end": { - "line": 513, - "column": 27 + "line": 522, + "column": 28 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 17361, - "end": 17362, + "value": "const", + "start": 17688, + "end": 17693, "loc": { "start": { - "line": 513, - "column": 28 + "line": 523, + "column": 12 }, "end": { - "line": 513, - "column": 29 + "line": 523, + "column": 17 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112226,47 +114445,46 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "entity-", - "start": 17363, - "end": 17372, + "value": "children", + "start": 17694, + "end": 17702, "loc": { "start": { - "line": 513, - "column": 30 + "line": 523, + "column": 18 }, "end": { - "line": 513, - "column": 39 + "line": 523, + "column": 26 } } }, { "type": { - "label": "+/-", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, - "prefix": true, + "isAssign": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 17373, - "end": 17374, + "value": "=", + "start": 17703, + "end": 17704, "loc": { "start": { - "line": 513, - "column": 40 + "line": 523, + "column": 27 }, "end": { - "line": 513, - "column": 41 + "line": 523, + "column": 28 } } }, @@ -112282,17 +114500,17 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 17375, - "end": 17378, + "value": "node", + "start": 17705, + "end": 17709, "loc": { "start": { - "line": 513, - "column": 42 + "line": 523, + "column": 29 }, "end": { - "line": 513, - "column": 45 + "line": 523, + "column": 33 } } }, @@ -112309,16 +114527,16 @@ "binop": null, "updateContext": null }, - "start": 17378, - "end": 17379, + "start": 17709, + "end": 17710, "loc": { "start": { - "line": 513, - "column": 45 + "line": 523, + "column": 33 }, "end": { - "line": 513, - "column": 46 + "line": 523, + "column": 34 } } }, @@ -112334,43 +114552,17 @@ "postfix": false, "binop": null }, - "value": "nextId", - "start": 17379, - "end": 17385, - "loc": { - "start": { - "line": 513, - "column": 46 - }, - "end": { - "line": 513, - "column": 52 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 17385, - "end": 17387, + "value": "children", + "start": 17710, + "end": 17718, "loc": { "start": { - "line": 513, - "column": 52 + "line": 523, + "column": 34 }, "end": { - "line": 513, - "column": 54 + "line": 523, + "column": 42 } } }, @@ -112387,48 +114579,51 @@ "binop": null, "updateContext": null }, - "start": 17387, - "end": 17388, + "start": 17718, + "end": 17719, "loc": { "start": { - "line": 513, - "column": 54 + "line": 523, + "column": 42 }, "end": { - "line": 513, - "column": 55 + "line": 523, + "column": 43 } } }, { "type": { - "label": "}", + "label": "for", + "keyword": "for", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17401, - "end": 17402, + "value": "for", + "start": 17732, + "end": 17735, "loc": { "start": { - "line": 514, + "line": 524, "column": 12 }, "end": { - "line": 514, - "column": 13 + "line": 524, + "column": 15 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -112437,23 +114632,23 @@ "postfix": false, "binop": null }, - "value": "objectIdStack", - "start": 17415, - "end": 17428, + "start": 17736, + "end": 17737, "loc": { "start": { - "line": 515, - "column": 12 + "line": 524, + "column": 16 }, "end": { - "line": 515, - "column": 25 + "line": 524, + "column": 17 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -112464,16 +114659,17 @@ "binop": null, "updateContext": null }, - "start": 17428, - "end": 17429, + "value": "let", + "start": 17737, + "end": 17740, "loc": { "start": { - "line": 515, - "column": 25 + "line": 524, + "column": 17 }, "end": { - "line": 515, - "column": 26 + "line": 524, + "column": 20 } } }, @@ -112489,48 +114685,50 @@ "postfix": false, "binop": null }, - "value": "push", - "start": 17429, - "end": 17433, + "value": "i", + "start": 17741, + "end": 17742, "loc": { "start": { - "line": 515, - "column": 26 + "line": 524, + "column": 21 }, "end": { - "line": 515, - "column": 30 + "line": 524, + "column": 22 } } }, { "type": { - "label": "(", + "label": "=", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17433, - "end": 17434, + "value": "=", + "start": 17743, + "end": 17744, "loc": { "start": { - "line": 515, - "column": 30 + "line": 524, + "column": 23 }, "end": { - "line": 515, - "column": 31 + "line": 524, + "column": 24 } } }, { "type": { - "label": "name", + "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -112538,70 +114736,99 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktEntityId", - "start": 17434, - "end": 17445, + "value": 0, + "start": 17745, + "end": 17746, "loc": { "start": { - "line": 515, - "column": 31 + "line": 524, + "column": 25 }, "end": { - "line": 515, - "column": 42 + "line": 524, + "column": 26 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 17746, + "end": 17747, + "loc": { + "start": { + "line": 524, + "column": 26 + }, + "end": { + "line": 524, + "column": 27 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, "binop": null }, - "start": 17445, - "end": 17446, + "value": "len", + "start": 17748, + "end": 17751, "loc": { "start": { - "line": 515, - "column": 42 + "line": 524, + "column": 28 }, "end": { - "line": 515, - "column": 43 + "line": 524, + "column": 31 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 17446, - "end": 17447, + "value": "=", + "start": 17752, + "end": 17753, "loc": { "start": { - "line": 515, - "column": 43 + "line": 524, + "column": 32 }, "end": { - "line": 515, - "column": 44 + "line": 524, + "column": 33 } } }, @@ -112617,17 +114844,17 @@ "postfix": false, "binop": null }, - "value": "meshIdsStack", - "start": 17460, - "end": 17472, + "value": "children", + "start": 17754, + "end": 17762, "loc": { "start": { - "line": 516, - "column": 12 + "line": 524, + "column": 34 }, - "end": { - "line": 516, - "column": 24 + "end": { + "line": 524, + "column": 42 } } }, @@ -112644,16 +114871,16 @@ "binop": null, "updateContext": null }, - "start": 17472, - "end": 17473, + "start": 17762, + "end": 17763, "loc": { "start": { - "line": 516, - "column": 24 + "line": 524, + "column": 42 }, "end": { - "line": 516, - "column": 25 + "line": 524, + "column": 43 } } }, @@ -112669,42 +114896,43 @@ "postfix": false, "binop": null }, - "value": "push", - "start": 17473, - "end": 17477, + "value": "length", + "start": 17763, + "end": 17769, "loc": { "start": { - "line": 516, - "column": 25 + "line": 524, + "column": 43 }, "end": { - "line": 516, - "column": 29 + "line": 524, + "column": 49 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17477, - "end": 17478, + "start": 17769, + "end": 17770, "loc": { "start": { - "line": 516, - "column": 29 + "line": 524, + "column": 49 }, "end": { - "line": 516, - "column": 30 + "line": 524, + "column": 50 } } }, @@ -112720,48 +114948,23 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 17478, - "end": 17485, - "loc": { - "start": { - "line": 516, - "column": 30 - }, - "end": { - "line": 516, - "column": 37 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 17485, - "end": 17486, + "value": "i", + "start": 17771, + "end": 17772, "loc": { "start": { - "line": 516, - "column": 37 + "line": 524, + "column": 51 }, "end": { - "line": 516, - "column": 38 + "line": 524, + "column": 52 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -112769,27 +114972,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 17486, - "end": 17487, + "value": "<", + "start": 17773, + "end": 17774, "loc": { "start": { - "line": 516, - "column": 38 + "line": 524, + "column": 53 }, "end": { - "line": 516, - "column": 39 + "line": 524, + "column": 54 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -112797,24 +115001,24 @@ "postfix": false, "binop": null }, - "start": 17496, - "end": 17497, + "value": "len", + "start": 17775, + "end": 17778, "loc": { "start": { - "line": 517, - "column": 8 + "line": 524, + "column": 55 }, "end": { - "line": 517, - "column": 9 + "line": 524, + "column": 58 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -112824,24 +115028,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 17506, - "end": 17508, + "start": 17778, + "end": 17779, "loc": { "start": { - "line": 518, - "column": 8 + "line": 524, + "column": 58 }, "end": { - "line": 518, - "column": 10 + "line": 524, + "column": 59 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -112850,76 +115053,75 @@ "postfix": false, "binop": null }, - "start": 17509, - "end": 17510, + "value": "i", + "start": 17780, + "end": 17781, "loc": { "start": { - "line": 518, - "column": 11 + "line": 524, + "column": 60 }, "end": { - "line": 518, - "column": 12 + "line": 524, + "column": 61 } } }, { "type": { - "label": "name", + "label": "++/--", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "value": "meshIds", - "start": 17510, - "end": 17517, + "value": "++", + "start": 17781, + "end": 17783, "loc": { "start": { - "line": 518, - "column": 12 + "line": 524, + "column": 61 }, "end": { - "line": 518, - "column": 19 + "line": 524, + "column": 63 } } }, { "type": { - "label": "&&", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, - "updateContext": null + "binop": null }, - "value": "&&", - "start": 17518, - "end": 17520, + "start": 17783, + "end": 17784, "loc": { "start": { - "line": 518, - "column": 20 + "line": 524, + "column": 63 }, "end": { - "line": 518, - "column": 22 + "line": 524, + "column": 64 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -112928,23 +115130,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 17521, - "end": 17525, + "start": 17785, + "end": 17786, "loc": { "start": { - "line": 518, - "column": 23 + "line": 524, + "column": 65 }, "end": { - "line": 518, - "column": 27 + "line": 524, + "column": 66 } } }, { "type": { - "label": ".", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -112955,16 +115157,17 @@ "binop": null, "updateContext": null }, - "start": 17525, - "end": 17526, + "value": "const", + "start": 17803, + "end": 17808, "loc": { "start": { - "line": 518, - "column": 27 + "line": 525, + "column": 16 }, "end": { - "line": 518, - "column": 28 + "line": 525, + "column": 21 } } }, @@ -112980,49 +115183,51 @@ "postfix": false, "binop": null }, - "value": "mesh", - "start": 17526, - "end": 17530, + "value": "childNode", + "start": 17809, + "end": 17818, "loc": { "start": { - "line": 518, - "column": 28 + "line": 525, + "column": 22 }, "end": { - "line": 518, - "column": 32 + "line": 525, + "column": 31 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17530, - "end": 17531, + "value": "=", + "start": 17819, + "end": 17820, "loc": { "start": { - "line": 518, + "line": 525, "column": 32 }, "end": { - "line": 518, + "line": 525, "column": 33 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -113031,49 +115236,50 @@ "postfix": false, "binop": null }, - "start": 17532, - "end": 17533, + "value": "children", + "start": 17821, + "end": 17829, "loc": { "start": { - "line": 518, + "line": 525, "column": 34 }, "end": { - "line": 518, - "column": 35 + "line": 525, + "column": 42 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "parseNodeMesh", - "start": 17546, - "end": 17559, + "start": 17829, + "end": 17830, "loc": { "start": { - "line": 519, - "column": 12 + "line": 525, + "column": 42 }, "end": { - "line": 519, - "column": 25 + "line": 525, + "column": 43 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -113082,48 +115288,49 @@ "postfix": false, "binop": null }, - "start": 17559, - "end": 17560, + "value": "i", + "start": 17830, + "end": 17831, "loc": { "start": { - "line": 519, - "column": 25 + "line": 525, + "column": 43 }, "end": { - "line": 519, - "column": 26 + "line": 525, + "column": 44 } } }, { "type": { - "label": "name", + "label": "]", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "node", - "start": 17560, - "end": 17564, + "start": 17831, + "end": 17832, "loc": { "start": { - "line": 519, - "column": 26 + "line": 525, + "column": 44 }, "end": { - "line": 519, - "column": 30 + "line": 525, + "column": 45 } } }, { "type": { - "label": ",", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -113134,16 +115341,16 @@ "binop": null, "updateContext": null }, - "start": 17564, - "end": 17565, + "start": 17832, + "end": 17833, "loc": { "start": { - "line": 519, - "column": 30 + "line": 525, + "column": 45 }, "end": { - "line": 519, - "column": 31 + "line": 525, + "column": 46 } } }, @@ -113159,42 +115366,41 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 17566, - "end": 17569, + "value": "parseNodesWithNames", + "start": 17850, + "end": 17869, "loc": { "start": { - "line": 519, - "column": 32 + "line": 526, + "column": 16 }, "end": { - "line": 519, + "line": 526, "column": 35 } } }, { "type": { - "label": ",", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17569, - "end": 17570, + "start": 17869, + "end": 17870, "loc": { "start": { - "line": 519, + "line": 526, "column": 35 }, "end": { - "line": 519, + "line": 526, "column": 36 } } @@ -113211,17 +115417,17 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 17571, - "end": 17577, + "value": "ctx", + "start": 17870, + "end": 17873, "loc": { "start": { - "line": 519, - "column": 37 + "line": 526, + "column": 36 }, "end": { - "line": 519, - "column": 43 + "line": 526, + "column": 39 } } }, @@ -113238,16 +115444,16 @@ "binop": null, "updateContext": null }, - "start": 17577, - "end": 17578, + "start": 17873, + "end": 17874, "loc": { "start": { - "line": 519, - "column": 43 + "line": 526, + "column": 39 }, "end": { - "line": 519, - "column": 44 + "line": 526, + "column": 40 } } }, @@ -113263,102 +115469,104 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 17579, - "end": 17586, + "value": "childNode", + "start": 17875, + "end": 17884, "loc": { "start": { - "line": 519, - "column": 45 + "line": 526, + "column": 41 }, "end": { - "line": 519, - "column": 52 + "line": 526, + "column": 50 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17586, - "end": 17587, + "start": 17884, + "end": 17885, "loc": { "start": { - "line": 519, - "column": 52 + "line": 526, + "column": 50 }, "end": { - "line": 519, - "column": 53 + "line": 526, + "column": 51 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17587, - "end": 17588, + "value": "depth", + "start": 17886, + "end": 17891, "loc": { "start": { - "line": 519, - "column": 53 + "line": 526, + "column": 52 }, "end": { - "line": 519, - "column": 54 + "line": 526, + "column": 57 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "+/-", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": null + "binop": 9, + "updateContext": null }, - "start": 17597, - "end": 17598, + "value": "+", + "start": 17892, + "end": 17893, "loc": { "start": { - "line": 520, - "column": 8 + "line": 526, + "column": 58 }, "end": { - "line": 520, - "column": 9 + "line": 526, + "column": 59 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -113367,42 +115575,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 17607, - "end": 17609, + "value": 1, + "start": 17894, + "end": 17895, "loc": { "start": { - "line": 521, - "column": 8 + "line": 526, + "column": 60 }, "end": { - "line": 521, - "column": 10 + "line": 526, + "column": 61 } } }, { "type": { - "label": "(", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17610, - "end": 17611, + "start": 17895, + "end": 17896, "loc": { "start": { - "line": 521, - "column": 11 + "line": 526, + "column": 61 }, "end": { - "line": 521, - "column": 12 + "line": 526, + "column": 62 } } }, @@ -113418,23 +115627,23 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 17611, - "end": 17615, + "value": "matrix", + "start": 17897, + "end": 17903, "loc": { "start": { - "line": 521, - "column": 12 + "line": 526, + "column": 63 }, "end": { - "line": 521, - "column": 16 + "line": 526, + "column": 69 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -113442,51 +115651,50 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17615, - "end": 17616, + "start": 17903, + "end": 17904, "loc": { "start": { - "line": 521, - "column": 16 + "line": 526, + "column": 69 }, "end": { - "line": 521, - "column": 17 + "line": 526, + "column": 70 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 17616, - "end": 17624, + "start": 17904, + "end": 17905, "loc": { "start": { - "line": 521, - "column": 17 + "line": 526, + "column": 70 }, "end": { - "line": 521, - "column": 25 + "line": 526, + "column": 71 } } }, { "type": { - "label": ")", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -113496,24 +115704,24 @@ "postfix": false, "binop": null }, - "start": 17624, - "end": 17625, + "start": 17918, + "end": 17919, "loc": { "start": { - "line": 521, - "column": 25 + "line": 527, + "column": 12 }, "end": { - "line": 521, - "column": 26 + "line": 527, + "column": 13 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -113521,16 +115729,16 @@ "postfix": false, "binop": null }, - "start": 17626, - "end": 17627, + "start": 17928, + "end": 17929, "loc": { "start": { - "line": 521, - "column": 27 + "line": 528, + "column": 8 }, "end": { - "line": 521, - "column": 28 + "line": 528, + "column": 9 } } }, @@ -113549,16 +115757,16 @@ "updateContext": null }, "value": "const", - "start": 17640, - "end": 17645, + "start": 17938, + "end": 17943, "loc": { "start": { - "line": 522, - "column": 12 + "line": 529, + "column": 8 }, "end": { - "line": 522, - "column": 17 + "line": 529, + "column": 13 } } }, @@ -113574,17 +115782,17 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 17646, - "end": 17654, + "value": "nodeName", + "start": 17944, + "end": 17952, "loc": { "start": { - "line": 522, - "column": 18 + "line": 529, + "column": 14 }, "end": { - "line": 522, - "column": 26 + "line": 529, + "column": 22 } } }, @@ -113602,16 +115810,16 @@ "updateContext": null }, "value": "=", - "start": 17655, - "end": 17656, + "start": 17953, + "end": 17954, "loc": { "start": { - "line": 522, - "column": 27 + "line": 529, + "column": 23 }, "end": { - "line": 522, - "column": 28 + "line": 529, + "column": 24 } } }, @@ -113628,16 +115836,16 @@ "binop": null }, "value": "node", - "start": 17657, - "end": 17661, + "start": 17955, + "end": 17959, "loc": { "start": { - "line": 522, - "column": 29 + "line": 529, + "column": 25 }, "end": { - "line": 522, - "column": 33 + "line": 529, + "column": 29 } } }, @@ -113654,16 +115862,16 @@ "binop": null, "updateContext": null }, - "start": 17661, - "end": 17662, + "start": 17959, + "end": 17960, "loc": { "start": { - "line": 522, - "column": 33 + "line": 529, + "column": 29 }, "end": { - "line": 522, - "column": 34 + "line": 529, + "column": 30 } } }, @@ -113679,17 +115887,17 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 17662, - "end": 17670, + "value": "name", + "start": 17960, + "end": 17964, "loc": { "start": { - "line": 522, - "column": 34 + "line": 529, + "column": 30 }, "end": { - "line": 522, - "column": 42 + "line": 529, + "column": 34 } } }, @@ -113706,44 +115914,44 @@ "binop": null, "updateContext": null }, - "start": 17670, - "end": 17671, + "start": 17964, + "end": 17965, "loc": { "start": { - "line": 522, - "column": 42 + "line": 529, + "column": 34 }, "end": { - "line": 522, - "column": 43 + "line": 529, + "column": 35 } } }, { "type": { - "label": "for", - "keyword": "for", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, - "isLoop": true, + "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "for", - "start": 17684, - "end": 17687, + "value": "if", + "start": 17974, + "end": 17976, "loc": { "start": { - "line": 523, - "column": 12 + "line": 530, + "column": 8 }, "end": { - "line": 523, - "column": 15 + "line": 530, + "column": 10 } } }, @@ -113759,44 +115967,41 @@ "postfix": false, "binop": null }, - "start": 17688, - "end": 17689, + "start": 17977, + "end": 17978, "loc": { "start": { - "line": 523, - "column": 16 + "line": 530, + "column": 11 }, "end": { - "line": 523, - "column": 17 + "line": 530, + "column": 12 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "let", - "start": 17689, - "end": 17692, + "start": 17978, + "end": 17979, "loc": { "start": { - "line": 523, - "column": 17 + "line": 530, + "column": 12 }, "end": { - "line": 523, - "column": 20 + "line": 530, + "column": 13 } } }, @@ -113812,50 +116017,50 @@ "postfix": false, "binop": null }, - "value": "i", - "start": 17693, - "end": 17694, + "value": "nodeName", + "start": 17979, + "end": 17987, "loc": { "start": { - "line": 523, - "column": 21 + "line": 530, + "column": 13 }, "end": { - "line": 523, - "column": 22 + "line": 530, + "column": 21 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 17695, - "end": 17696, + "value": "!==", + "start": 17988, + "end": 17991, "loc": { "start": { - "line": 523, - "column": 23 + "line": 530, + "column": 22 }, "end": { - "line": 523, - "column": 24 + "line": 530, + "column": 25 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -113863,26 +116068,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 0, - "start": 17697, - "end": 17698, + "value": "undefined", + "start": 17992, + "end": 18001, "loc": { "start": { - "line": 523, - "column": 25 + "line": 530, + "column": 26 }, "end": { - "line": 523, - "column": 26 + "line": 530, + "column": 35 } } }, { "type": { - "label": ",", + "label": "&&", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -113890,19 +116094,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 2, "updateContext": null }, - "start": 17698, - "end": 17699, + "value": "&&", + "start": 18002, + "end": 18004, "loc": { "start": { - "line": 523, - "column": 26 + "line": 530, + "column": 36 }, "end": { - "line": 523, - "column": 27 + "line": 530, + "column": 38 } } }, @@ -113918,50 +116123,51 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 17700, - "end": 17703, + "value": "nodeName", + "start": 18005, + "end": 18013, "loc": { "start": { - "line": 523, - "column": 28 + "line": 530, + "column": 39 }, "end": { - "line": 523, - "column": 31 + "line": 530, + "column": 47 } } }, { "type": { - "label": "=", + "label": "==/!=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 6, "updateContext": null }, - "value": "=", - "start": 17704, - "end": 17705, + "value": "!==", + "start": 18014, + "end": 18017, "loc": { "start": { - "line": 523, - "column": 32 + "line": 530, + "column": 48 }, "end": { - "line": 523, - "column": 33 + "line": 530, + "column": 51 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -113969,25 +116175,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "children", - "start": 17706, - "end": 17714, + "value": "null", + "start": 18018, + "end": 18022, "loc": { "start": { - "line": 523, - "column": 34 + "line": 530, + "column": 52 }, "end": { - "line": 523, - "column": 42 + "line": 530, + "column": 56 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -113995,132 +116202,133 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17714, - "end": 17715, + "start": 18022, + "end": 18023, "loc": { "start": { - "line": 523, - "column": 42 + "line": 530, + "column": 56 }, "end": { - "line": 523, - "column": 43 + "line": 530, + "column": 57 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "||", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 1, + "updateContext": null }, - "value": "length", - "start": 17715, - "end": 17721, + "value": "||", + "start": 18024, + "end": 18026, "loc": { "start": { - "line": 523, - "column": 43 + "line": 530, + "column": 58 }, "end": { - "line": 523, - "column": 49 + "line": 530, + "column": 60 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17721, - "end": 17722, + "value": "depth", + "start": 18027, + "end": 18032, "loc": { "start": { - "line": 523, - "column": 49 + "line": 530, + "column": 61 }, "end": { - "line": 523, - "column": 50 + "line": 530, + "column": 66 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "==/!=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 6, + "updateContext": null }, - "value": "i", - "start": 17723, - "end": 17724, + "value": "===", + "start": 18033, + "end": 18036, "loc": { "start": { - "line": 523, - "column": 51 + "line": 530, + "column": 67 }, "end": { - "line": 523, - "column": 52 + "line": 530, + "column": 70 } } }, { "type": { - "label": "", - "beforeExpr": true, - "startsExpr": false, + "label": "num", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": "<", - "start": 17725, - "end": 17726, + "value": 0, + "start": 18037, + "end": 18038, "loc": { "start": { - "line": 523, - "column": 53 + "line": 530, + "column": 71 }, "end": { - "line": 523, - "column": 54 + "line": 530, + "column": 72 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -114128,127 +116336,129 @@ "postfix": false, "binop": null }, - "value": "len", - "start": 17727, - "end": 17730, + "start": 18038, + "end": 18039, "loc": { "start": { - "line": 523, - "column": 55 + "line": 530, + "column": 72 }, "end": { - "line": 523, - "column": 58 + "line": 530, + "column": 73 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17730, - "end": 17731, + "start": 18040, + "end": 18041, "loc": { "start": { - "line": 523, - "column": 58 + "line": 530, + "column": 74 }, "end": { - "line": 523, - "column": 59 + "line": 530, + "column": 75 } } }, { "type": { - "label": "name", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 17732, - "end": 17733, + "value": "let", + "start": 18054, + "end": 18057, "loc": { "start": { - "line": 523, - "column": 60 + "line": 531, + "column": 12 }, "end": { - "line": 523, - "column": 61 + "line": 531, + "column": 15 } } }, { "type": { - "label": "++/--", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 17733, - "end": 17735, + "value": "xktEntityId", + "start": 18058, + "end": 18069, "loc": { "start": { - "line": 523, - "column": 61 + "line": 531, + "column": 16 }, "end": { - "line": 523, - "column": 63 + "line": 531, + "column": 27 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17735, - "end": 17736, + "value": "=", + "start": 18070, + "end": 18071, "loc": { "start": { - "line": 523, - "column": 63 + "line": 531, + "column": 28 }, "end": { - "line": 523, - "column": 64 + "line": 531, + "column": 29 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -114257,23 +116467,23 @@ "postfix": false, "binop": null }, - "start": 17737, - "end": 17738, + "value": "objectIdStack", + "start": 18072, + "end": 18085, "loc": { "start": { - "line": 523, - "column": 65 + "line": 531, + "column": 30 }, "end": { - "line": 523, - "column": 66 + "line": 531, + "column": 43 } } }, { "type": { - "label": "const", - "keyword": "const", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -114284,17 +116494,16 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 17755, - "end": 17760, + "start": 18085, + "end": 18086, "loc": { "start": { - "line": 524, - "column": 16 + "line": 531, + "column": 43 }, "end": { - "line": 524, - "column": 21 + "line": 531, + "column": 44 } } }, @@ -114310,52 +116519,50 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 17761, - "end": 17770, + "value": "pop", + "start": 18086, + "end": 18089, "loc": { "start": { - "line": 524, - "column": 22 + "line": 531, + "column": 44 }, "end": { - "line": 524, - "column": 31 + "line": 531, + "column": 47 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 17771, - "end": 17772, + "start": 18089, + "end": 18090, "loc": { "start": { - "line": 524, - "column": 32 + "line": 531, + "column": 47 }, "end": { - "line": 524, - "column": 33 + "line": 531, + "column": 48 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -114363,25 +116570,24 @@ "postfix": false, "binop": null }, - "value": "children", - "start": 17773, - "end": 17781, + "start": 18090, + "end": 18091, "loc": { "start": { - "line": 524, - "column": 34 + "line": 531, + "column": 48 }, "end": { - "line": 524, - "column": 42 + "line": 531, + "column": 49 } } }, { "type": { - "label": "[", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -114390,94 +116596,96 @@ "binop": null, "updateContext": null }, - "start": 17781, - "end": 17782, + "start": 18091, + "end": 18092, "loc": { "start": { - "line": 524, - "column": 42 + "line": 531, + "column": 49 }, "end": { - "line": 524, - "column": 43 + "line": 531, + "column": 50 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "i", - "start": 17782, - "end": 17783, + "value": "if", + "start": 18105, + "end": 18107, "loc": { "start": { - "line": 524, - "column": 43 + "line": 532, + "column": 12 }, "end": { - "line": 524, - "column": 44 + "line": 532, + "column": 14 } } }, { "type": { - "label": "]", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17783, - "end": 17784, + "start": 18108, + "end": 18109, "loc": { "start": { - "line": 524, - "column": 44 + "line": 532, + "column": 15 }, "end": { - "line": 524, - "column": 45 + "line": 532, + "column": 16 } } }, { "type": { - "label": ";", + "label": "prefix", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 17784, - "end": 17785, + "value": "!", + "start": 18109, + "end": 18110, "loc": { "start": { - "line": 524, - "column": 45 + "line": 532, + "column": 16 }, "end": { - "line": 524, - "column": 46 + "line": 532, + "column": 17 } } }, @@ -114493,25 +116701,25 @@ "postfix": false, "binop": null }, - "value": "parseNodesWithNames", - "start": 17802, - "end": 17821, + "value": "xktEntityId", + "start": 18110, + "end": 18121, "loc": { "start": { - "line": 525, - "column": 16 + "line": 532, + "column": 17 }, "end": { - "line": 525, - "column": 35 + "line": 532, + "column": 28 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -114519,23 +116727,23 @@ "postfix": false, "binop": null }, - "start": 17821, - "end": 17822, + "start": 18121, + "end": 18122, "loc": { "start": { - "line": 525, - "column": 35 + "line": 532, + "column": 28 }, "end": { - "line": 525, - "column": 36 + "line": 532, + "column": 29 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -114544,43 +116752,32 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 17822, - "end": 17825, + "start": 18123, + "end": 18124, "loc": { "start": { - "line": 525, - "column": 36 + "line": 532, + "column": 30 }, "end": { - "line": 525, - "column": 39 + "line": 532, + "column": 31 } } }, { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 17825, - "end": 17826, + "type": "CommentLine", + "value": " For when there are no nodes with names", + "start": 18125, + "end": 18166, "loc": { "start": { - "line": 525, - "column": 39 + "line": 532, + "column": 32 }, "end": { - "line": 525, - "column": 40 + "line": 532, + "column": 73 } } }, @@ -114596,49 +116793,50 @@ "postfix": false, "binop": null }, - "value": "childNode", - "start": 17827, - "end": 17836, + "value": "xktEntityId", + "start": 18183, + "end": 18194, "loc": { "start": { - "line": 525, - "column": 41 + "line": 533, + "column": 16 }, "end": { - "line": 525, - "column": 50 + "line": 533, + "column": 27 } } }, { "type": { - "label": ",", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 17836, - "end": 17837, + "value": "=", + "start": 18195, + "end": 18196, "loc": { "start": { - "line": 525, - "column": 50 + "line": 533, + "column": 28 }, "end": { - "line": 525, - "column": 51 + "line": 533, + "column": 29 } } }, { "type": { - "label": "name", + "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -114646,19 +116844,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "depth", - "start": 17838, - "end": 17843, + "value": "entity-", + "start": 18197, + "end": 18206, "loc": { "start": { - "line": 525, - "column": 52 + "line": 533, + "column": 30 }, "end": { - "line": 525, - "column": 57 + "line": 533, + "column": 39 } } }, @@ -114676,22 +116875,22 @@ "updateContext": null }, "value": "+", - "start": 17844, - "end": 17845, + "start": 18207, + "end": 18208, "loc": { "start": { - "line": 525, - "column": 58 + "line": 533, + "column": 40 }, "end": { - "line": 525, - "column": 59 + "line": 533, + "column": 41 } } }, { "type": { - "label": "num", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -114699,27 +116898,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": 1, - "start": 17846, - "end": 17847, + "value": "ctx", + "start": 18209, + "end": 18212, "loc": { "start": { - "line": 525, - "column": 60 + "line": 533, + "column": 42 }, "end": { - "line": 525, - "column": 61 + "line": 533, + "column": 45 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -114729,16 +116927,16 @@ "binop": null, "updateContext": null }, - "start": 17847, - "end": 17848, + "start": 18212, + "end": 18213, "loc": { "start": { - "line": 525, - "column": 61 + "line": 533, + "column": 45 }, "end": { - "line": 525, - "column": 62 + "line": 533, + "column": 46 } } }, @@ -114754,42 +116952,43 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 17849, - "end": 17855, + "value": "nextId", + "start": 18213, + "end": 18219, "loc": { "start": { - "line": 525, - "column": 63 + "line": 533, + "column": 46 }, "end": { - "line": 525, - "column": 69 + "line": 533, + "column": 52 } } }, { "type": { - "label": ")", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 17855, - "end": 17856, + "value": "++", + "start": 18219, + "end": 18221, "loc": { "start": { - "line": 525, - "column": 69 + "line": 533, + "column": 52 }, "end": { - "line": 525, - "column": 70 + "line": 533, + "column": 54 } } }, @@ -114806,16 +117005,16 @@ "binop": null, "updateContext": null }, - "start": 17856, - "end": 17857, + "start": 18221, + "end": 18222, "loc": { "start": { - "line": 525, - "column": 70 + "line": 533, + "column": 54 }, "end": { - "line": 525, - "column": 71 + "line": 533, + "column": 55 } } }, @@ -114831,48 +117030,23 @@ "postfix": false, "binop": null }, - "start": 17870, - "end": 17871, + "start": 18235, + "end": 18236, "loc": { "start": { - "line": 526, + "line": 534, "column": 12 }, "end": { - "line": 526, + "line": 534, "column": 13 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 17880, - "end": 17881, - "loc": { - "start": { - "line": 527, - "column": 8 - }, - "end": { - "line": 527, - "column": 9 - } - } - }, - { - "type": { - "label": "const", - "keyword": "const", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -114883,17 +117057,17 @@ "binop": null, "updateContext": null }, - "value": "const", - "start": 17890, - "end": 17895, + "value": "let", + "start": 18249, + "end": 18252, "loc": { "start": { - "line": 528, - "column": 8 + "line": 535, + "column": 12 }, "end": { - "line": 528, - "column": 13 + "line": 535, + "column": 15 } } }, @@ -114909,17 +117083,17 @@ "postfix": false, "binop": null }, - "value": "nodeName", - "start": 17896, - "end": 17904, + "value": "entityMeshIds", + "start": 18253, + "end": 18266, "loc": { "start": { - "line": 528, - "column": 14 + "line": 535, + "column": 16 }, "end": { - "line": 528, - "column": 22 + "line": 535, + "column": 29 } } }, @@ -114937,16 +117111,16 @@ "updateContext": null }, "value": "=", - "start": 17905, - "end": 17906, + "start": 18267, + "end": 18268, "loc": { "start": { - "line": 528, - "column": 23 + "line": 535, + "column": 30 }, "end": { - "line": 528, - "column": 24 + "line": 535, + "column": 31 } } }, @@ -114962,17 +117136,17 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 17907, - "end": 17911, + "value": "meshIdsStack", + "start": 18269, + "end": 18281, "loc": { "start": { - "line": 528, - "column": 25 + "line": 535, + "column": 32 }, "end": { - "line": 528, - "column": 29 + "line": 535, + "column": 44 } } }, @@ -114989,16 +117163,16 @@ "binop": null, "updateContext": null }, - "start": 17911, - "end": 17912, + "start": 18281, + "end": 18282, "loc": { "start": { - "line": 528, - "column": 29 + "line": 535, + "column": 44 }, "end": { - "line": 528, - "column": 30 + "line": 535, + "column": 45 } } }, @@ -115014,50 +117188,48 @@ "postfix": false, "binop": null }, - "value": "name", - "start": 17912, - "end": 17916, + "value": "pop", + "start": 18282, + "end": 18285, "loc": { "start": { - "line": 528, - "column": 30 + "line": 535, + "column": 45 }, "end": { - "line": 528, - "column": 34 + "line": 535, + "column": 48 } } }, { "type": { - "label": ";", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 17916, - "end": 17917, + "start": 18285, + "end": 18286, "loc": { "start": { - "line": 528, - "column": 34 + "line": 535, + "column": 48 }, "end": { - "line": 528, - "column": 35 + "line": 535, + "column": 49 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -115065,123 +117237,97 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "if", - "start": 17926, - "end": 17928, - "loc": { - "start": { - "line": 529, - "column": 8 - }, - "end": { - "line": 529, - "column": 10 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, "binop": null }, - "start": 17929, - "end": 17930, + "start": 18286, + "end": 18287, "loc": { "start": { - "line": 529, - "column": 11 + "line": 535, + "column": 49 }, "end": { - "line": 529, - "column": 12 + "line": 535, + "column": 50 } } }, { "type": { - "label": "(", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 17930, - "end": 17931, + "start": 18287, + "end": 18288, "loc": { "start": { - "line": 529, - "column": 12 + "line": 535, + "column": 50 }, "end": { - "line": 529, - "column": 13 + "line": 535, + "column": 51 } } }, { "type": { - "label": "name", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "nodeName", - "start": 17931, - "end": 17939, + "value": "if", + "start": 18301, + "end": 18303, "loc": { "start": { - "line": 529, - "column": 13 + "line": 536, + "column": 12 }, "end": { - "line": 529, - "column": 21 + "line": 536, + "column": 14 } } }, { "type": { - "label": "==/!=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, - "updateContext": null + "binop": null }, - "value": "!==", - "start": 17940, - "end": 17943, + "start": 18304, + "end": 18305, "loc": { "start": { - "line": 529, - "column": 22 + "line": 536, + "column": 15 }, "end": { - "line": 529, - "column": 25 + "line": 536, + "column": 16 } } }, @@ -115197,17 +117343,17 @@ "postfix": false, "binop": null }, - "value": "undefined", - "start": 17944, - "end": 17953, + "value": "meshIds", + "start": 18305, + "end": 18312, "loc": { "start": { - "line": 529, - "column": 26 + "line": 536, + "column": 16 }, "end": { - "line": 529, - "column": 35 + "line": 536, + "column": 23 } } }, @@ -115225,16 +117371,16 @@ "updateContext": null }, "value": "&&", - "start": 17954, - "end": 17956, + "start": 18313, + "end": 18315, "loc": { "start": { - "line": 529, - "column": 36 + "line": 536, + "column": 24 }, "end": { - "line": 529, - "column": 38 + "line": 536, + "column": 26 } } }, @@ -115250,78 +117396,23 @@ "postfix": false, "binop": null }, - "value": "nodeName", - "start": 17957, - "end": 17965, - "loc": { - "start": { - "line": 529, - "column": 39 - }, - "end": { - "line": 529, - "column": 47 - } - } - }, - { - "type": { - "label": "==/!=", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 6, - "updateContext": null - }, - "value": "!==", - "start": 17966, - "end": 17969, - "loc": { - "start": { - "line": 529, - "column": 48 - }, - "end": { - "line": 529, - "column": 51 - } - } - }, - { - "type": { - "label": "null", - "keyword": "null", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "null", - "start": 17970, - "end": 17974, + "value": "meshIds", + "start": 18316, + "end": 18323, "loc": { "start": { - "line": 529, - "column": 52 + "line": 536, + "column": 27 }, "end": { - "line": 529, - "column": 56 + "line": 536, + "column": 34 } } }, { "type": { - "label": ")", + "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -115329,45 +117420,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null - }, - "start": 17974, - "end": 17975, - "loc": { - "start": { - "line": 529, - "column": 56 - }, - "end": { - "line": 529, - "column": 57 - } - } - }, - { - "type": { - "label": "||", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": 1, + "binop": null, "updateContext": null }, - "value": "||", - "start": 17976, - "end": 17978, + "start": 18323, + "end": 18324, "loc": { "start": { - "line": 529, - "column": 58 + "line": 536, + "column": 34 }, "end": { - "line": 529, - "column": 60 + "line": 536, + "column": 35 } } }, @@ -115383,23 +117448,23 @@ "postfix": false, "binop": null }, - "value": "depth", - "start": 17979, - "end": 17984, + "value": "length", + "start": 18324, + "end": 18330, "loc": { "start": { - "line": 529, - "column": 61 + "line": 536, + "column": 35 }, "end": { - "line": 529, - "column": 66 + "line": 536, + "column": 41 } } }, { "type": { - "label": "==/!=", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -115407,20 +117472,20 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 6, + "binop": 7, "updateContext": null }, - "value": "===", - "start": 17985, - "end": 17988, + "value": ">", + "start": 18331, + "end": 18332, "loc": { "start": { - "line": 529, - "column": 67 + "line": 536, + "column": 42 }, "end": { - "line": 529, - "column": 70 + "line": 536, + "column": 43 } } }, @@ -115438,16 +117503,16 @@ "updateContext": null }, "value": 0, - "start": 17989, - "end": 17990, + "start": 18333, + "end": 18334, "loc": { "start": { - "line": 529, - "column": 71 + "line": 536, + "column": 44 }, "end": { - "line": 529, - "column": 72 + "line": 536, + "column": 45 } } }, @@ -115463,16 +117528,16 @@ "postfix": false, "binop": null }, - "start": 17990, - "end": 17991, + "start": 18334, + "end": 18335, "loc": { "start": { - "line": 529, - "column": 72 + "line": 536, + "column": 45 }, "end": { - "line": 529, - "column": 73 + "line": 536, + "column": 46 } } }, @@ -115488,44 +117553,16 @@ "postfix": false, "binop": null }, - "start": 17992, - "end": 17993, - "loc": { - "start": { - "line": 529, - "column": 74 - }, - "end": { - "line": 529, - "column": 75 - } - } - }, - { - "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "value": "let", - "start": 18006, - "end": 18009, + "start": 18336, + "end": 18337, "loc": { "start": { - "line": 530, - "column": 12 + "line": 536, + "column": 47 }, "end": { - "line": 530, - "column": 15 + "line": 536, + "column": 48 } } }, @@ -115541,44 +117578,43 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 18010, - "end": 18021, + "value": "ctx", + "start": 18354, + "end": 18357, "loc": { "start": { - "line": 530, + "line": 537, "column": 16 }, "end": { - "line": 530, - "column": 27 + "line": 537, + "column": 19 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 18022, - "end": 18023, + "start": 18357, + "end": 18358, "loc": { "start": { - "line": 530, - "column": 28 + "line": 537, + "column": 19 }, "end": { - "line": 530, - "column": 29 + "line": 537, + "column": 20 } } }, @@ -115594,17 +117630,17 @@ "postfix": false, "binop": null }, - "value": "objectIdStack", - "start": 18024, - "end": 18037, + "value": "xktModel", + "start": 18358, + "end": 18366, "loc": { "start": { - "line": 530, - "column": 30 + "line": 537, + "column": 20 }, "end": { - "line": 530, - "column": 43 + "line": 537, + "column": 28 } } }, @@ -115621,16 +117657,16 @@ "binop": null, "updateContext": null }, - "start": 18037, - "end": 18038, + "start": 18366, + "end": 18367, "loc": { "start": { - "line": 530, - "column": 43 + "line": 537, + "column": 28 }, "end": { - "line": 530, - "column": 44 + "line": 537, + "column": 29 } } }, @@ -115646,17 +117682,17 @@ "postfix": false, "binop": null }, - "value": "pop", - "start": 18038, - "end": 18041, + "value": "createEntity", + "start": 18367, + "end": 18379, "loc": { "start": { - "line": 530, - "column": 44 + "line": 537, + "column": 29 }, "end": { - "line": 530, - "column": 47 + "line": 537, + "column": 41 } } }, @@ -115672,24 +117708,24 @@ "postfix": false, "binop": null }, - "start": 18041, - "end": 18042, + "start": 18379, + "end": 18380, "loc": { "start": { - "line": 530, - "column": 47 + "line": 537, + "column": 41 }, "end": { - "line": 530, - "column": 48 + "line": 537, + "column": 42 } } }, { "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, + "label": "{", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -115697,50 +117733,49 @@ "postfix": false, "binop": null }, - "start": 18042, - "end": 18043, + "start": 18380, + "end": 18381, "loc": { "start": { - "line": 530, - "column": 48 + "line": 537, + "column": 42 }, "end": { - "line": 530, - "column": 49 + "line": 537, + "column": 43 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18043, - "end": 18044, + "value": "entityId", + "start": 18402, + "end": 18410, "loc": { "start": { - "line": 530, - "column": 49 + "line": 538, + "column": 20 }, "end": { - "line": 530, - "column": 50 + "line": 538, + "column": 28 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -115750,24 +117785,23 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 18057, - "end": 18059, + "start": 18410, + "end": 18411, "loc": { "start": { - "line": 531, - "column": 12 + "line": 538, + "column": 28 }, "end": { - "line": 531, - "column": 14 + "line": 538, + "column": 29 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -115776,43 +117810,43 @@ "postfix": false, "binop": null }, - "start": 18060, - "end": 18061, + "value": "xktEntityId", + "start": 18412, + "end": 18423, "loc": { "start": { - "line": 531, - "column": 15 + "line": 538, + "column": 30 }, "end": { - "line": 531, - "column": 16 + "line": 538, + "column": 41 } } }, { "type": { - "label": "prefix", + "label": ",", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 18061, - "end": 18062, + "start": 18423, + "end": 18424, "loc": { "start": { - "line": 531, - "column": 16 + "line": 538, + "column": 41 }, "end": { - "line": 531, - "column": 17 + "line": 538, + "column": 42 } } }, @@ -115828,49 +117862,50 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 18062, - "end": 18073, + "value": "meshIds", + "start": 18445, + "end": 18452, "loc": { "start": { - "line": 531, - "column": 17 + "line": 539, + "column": 20 }, "end": { - "line": 531, - "column": 28 + "line": 539, + "column": 27 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": ":", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18073, - "end": 18074, + "start": 18452, + "end": 18453, "loc": { "start": { - "line": 531, - "column": 28 + "line": 539, + "column": 27 }, "end": { - "line": 531, - "column": 29 + "line": 539, + "column": 28 } } }, { "type": { - "label": "{", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -115879,40 +117914,25 @@ "postfix": false, "binop": null }, - "start": 18075, - "end": 18076, - "loc": { - "start": { - "line": 531, - "column": 30 - }, - "end": { - "line": 531, - "column": 31 - } - } - }, - { - "type": "CommentLine", - "value": " For when there are no nodes with names", - "start": 18077, - "end": 18118, + "value": "entityMeshIds", + "start": 18454, + "end": 18467, "loc": { "start": { - "line": 531, - "column": 32 + "line": 539, + "column": 29 }, "end": { - "line": 531, - "column": 73 + "line": 539, + "column": 42 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -115920,52 +117940,49 @@ "postfix": false, "binop": null }, - "value": "xktEntityId", - "start": 18135, - "end": 18146, + "start": 18484, + "end": 18485, "loc": { "start": { - "line": 532, + "line": 540, "column": 16 }, "end": { - "line": 532, - "column": 27 + "line": 540, + "column": 17 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ")", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 18147, - "end": 18148, + "start": 18485, + "end": 18486, "loc": { "start": { - "line": 532, - "column": 28 + "line": 540, + "column": 17 }, "end": { - "line": 532, - "column": 29 + "line": 540, + "column": 18 } } }, { "type": { - "label": "string", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -115974,44 +117991,41 @@ "binop": null, "updateContext": null }, - "value": "entity-", - "start": 18149, - "end": 18158, + "start": 18486, + "end": 18487, "loc": { "start": { - "line": 532, - "column": 30 + "line": 540, + "column": 18 }, "end": { - "line": 532, - "column": 39 + "line": 540, + "column": 19 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "+", - "start": 18159, - "end": 18160, + "start": 18500, + "end": 18501, "loc": { "start": { - "line": 532, - "column": 40 + "line": 541, + "column": 12 }, "end": { - "line": 532, - "column": 41 + "line": 541, + "column": 13 } } }, @@ -116028,16 +118042,16 @@ "binop": null }, "value": "ctx", - "start": 18161, - "end": 18164, + "start": 18514, + "end": 18517, "loc": { "start": { - "line": 532, - "column": 42 + "line": 542, + "column": 12 }, "end": { - "line": 532, - "column": 45 + "line": 542, + "column": 15 } } }, @@ -116054,16 +118068,16 @@ "binop": null, "updateContext": null }, - "start": 18164, - "end": 18165, + "start": 18517, + "end": 18518, "loc": { "start": { - "line": 532, - "column": 45 + "line": 542, + "column": 15 }, "end": { - "line": 532, - "column": 46 + "line": 542, + "column": 16 } } }, @@ -116079,102 +118093,102 @@ "postfix": false, "binop": null }, - "value": "nextId", - "start": 18165, - "end": 18171, + "value": "stats", + "start": 18518, + "end": 18523, "loc": { "start": { - "line": 532, - "column": 46 + "line": 542, + "column": 16 }, "end": { - "line": 532, - "column": 52 + "line": 542, + "column": 21 } } }, { "type": { - "label": "++/--", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "++", - "start": 18171, - "end": 18173, + "start": 18523, + "end": 18524, "loc": { "start": { - "line": 532, - "column": 52 + "line": 542, + "column": 21 }, "end": { - "line": 532, - "column": 54 + "line": 542, + "column": 22 } } }, { "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18173, - "end": 18174, + "value": "numObjects", + "start": 18524, + "end": 18534, "loc": { "start": { - "line": 532, - "column": 54 + "line": 542, + "column": 22 }, "end": { - "line": 532, - "column": 55 + "line": 542, + "column": 32 } } }, { "type": { - "label": "}", + "label": "++/--", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, - "postfix": false, + "prefix": true, + "postfix": true, "binop": null }, - "start": 18187, - "end": 18188, + "value": "++", + "start": 18534, + "end": 18536, "loc": { "start": { - "line": 533, - "column": 12 + "line": 542, + "column": 32 }, "end": { - "line": 533, - "column": 13 + "line": 542, + "column": 34 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -116184,17 +118198,16 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 18201, - "end": 18204, + "start": 18536, + "end": 18537, "loc": { "start": { - "line": 534, - "column": 12 + "line": 542, + "column": 34 }, "end": { - "line": 534, - "column": 15 + "line": 542, + "column": 35 } } }, @@ -116210,17 +118223,17 @@ "postfix": false, "binop": null }, - "value": "entityMeshIds", - "start": 18205, - "end": 18218, + "value": "meshIds", + "start": 18550, + "end": 18557, "loc": { "start": { - "line": 534, - "column": 16 + "line": 543, + "column": 12 }, "end": { - "line": 534, - "column": 29 + "line": 543, + "column": 19 } } }, @@ -116238,16 +118251,16 @@ "updateContext": null }, "value": "=", - "start": 18219, - "end": 18220, + "start": 18558, + "end": 18559, "loc": { "start": { - "line": 534, - "column": 30 + "line": 543, + "column": 20 }, "end": { - "line": 534, - "column": 31 + "line": 543, + "column": 21 } } }, @@ -116264,16 +118277,16 @@ "binop": null }, "value": "meshIdsStack", - "start": 18221, - "end": 18233, + "start": 18560, + "end": 18572, "loc": { "start": { - "line": 534, - "column": 32 + "line": 543, + "column": 22 }, "end": { - "line": 534, - "column": 44 + "line": 543, + "column": 34 } } }, @@ -116290,16 +118303,16 @@ "binop": null, "updateContext": null }, - "start": 18233, - "end": 18234, + "start": 18572, + "end": 18573, "loc": { "start": { - "line": 534, - "column": 44 + "line": 543, + "column": 34 }, "end": { - "line": 534, - "column": 45 + "line": 543, + "column": 35 } } }, @@ -116315,73 +118328,23 @@ "postfix": false, "binop": null }, - "value": "pop", - "start": 18234, - "end": 18237, - "loc": { - "start": { - "line": 534, - "column": 45 - }, - "end": { - "line": 534, - "column": 48 - } - } - }, - { - "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 18237, - "end": 18238, - "loc": { - "start": { - "line": 534, - "column": 48 - }, - "end": { - "line": 534, - "column": 49 - } - } - }, - { - "type": { - "label": ")", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "start": 18238, - "end": 18239, + "value": "length", + "start": 18573, + "end": 18579, "loc": { "start": { - "line": 534, - "column": 49 + "line": 543, + "column": 35 }, "end": { - "line": 534, - "column": 50 + "line": 543, + "column": 41 } } }, { "type": { - "label": ";", + "label": "", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -116389,28 +118352,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, + "binop": 7, "updateContext": null }, - "start": 18239, - "end": 18240, + "value": ">", + "start": 18580, + "end": 18581, "loc": { "start": { - "line": 534, - "column": 50 + "line": 543, + "column": 42 }, - "end": { - "line": 534, - "column": 51 + "end": { + "line": 543, + "column": 43 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "num", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -116419,42 +118382,43 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 18253, - "end": 18255, + "value": 0, + "start": 18582, + "end": 18583, "loc": { "start": { - "line": 535, - "column": 12 + "line": 543, + "column": 44 }, "end": { - "line": 535, - "column": 14 + "line": 543, + "column": 45 } } }, { "type": { - "label": "(", + "label": "?", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18256, - "end": 18257, + "start": 18584, + "end": 18585, "loc": { "start": { - "line": 535, - "column": 15 + "line": 543, + "column": 46 }, "end": { - "line": 535, - "column": 16 + "line": 543, + "column": 47 } } }, @@ -116470,44 +118434,43 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 18257, - "end": 18264, + "value": "meshIdsStack", + "start": 18586, + "end": 18598, "loc": { "start": { - "line": 535, - "column": 16 + "line": 543, + "column": 48 }, "end": { - "line": 535, - "column": 23 + "line": 543, + "column": 60 } } }, { "type": { - "label": "&&", + "label": "[", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": 2, + "binop": null, "updateContext": null }, - "value": "&&", - "start": 18265, - "end": 18267, + "start": 18598, + "end": 18599, "loc": { "start": { - "line": 535, - "column": 24 + "line": 543, + "column": 60 }, "end": { - "line": 535, - "column": 26 + "line": 543, + "column": 61 } } }, @@ -116523,17 +118486,17 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 18268, - "end": 18275, + "value": "meshIdsStack", + "start": 18599, + "end": 18611, "loc": { "start": { - "line": 535, - "column": 27 + "line": 543, + "column": 61 }, "end": { - "line": 535, - "column": 34 + "line": 543, + "column": 73 } } }, @@ -116550,16 +118513,16 @@ "binop": null, "updateContext": null }, - "start": 18275, - "end": 18276, + "start": 18611, + "end": 18612, "loc": { "start": { - "line": 535, - "column": 34 + "line": 543, + "column": 73 }, "end": { - "line": 535, - "column": 35 + "line": 543, + "column": 74 } } }, @@ -116576,43 +118539,43 @@ "binop": null }, "value": "length", - "start": 18276, - "end": 18282, + "start": 18612, + "end": 18618, "loc": { "start": { - "line": 535, - "column": 35 + "line": 543, + "column": 74 }, "end": { - "line": 535, - "column": 41 + "line": 543, + "column": 80 } } }, { "type": { - "label": "", + "label": "+/-", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, - "binop": 7, + "binop": 9, "updateContext": null }, - "value": ">", - "start": 18283, - "end": 18284, + "value": "-", + "start": 18619, + "end": 18620, "loc": { "start": { - "line": 535, - "column": 42 + "line": 543, + "column": 81 }, "end": { - "line": 535, - "column": 43 + "line": 543, + "column": 82 } } }, @@ -116629,23 +118592,23 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 18285, - "end": 18286, + "value": 1, + "start": 18621, + "end": 18622, "loc": { "start": { - "line": 535, - "column": 44 + "line": 543, + "column": 83 }, "end": { - "line": 535, - "column": 45 + "line": 543, + "column": 84 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -116653,49 +118616,52 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18286, - "end": 18287, + "start": 18622, + "end": 18623, "loc": { "start": { - "line": 535, - "column": 45 + "line": 543, + "column": 84 }, "end": { - "line": 535, - "column": 46 + "line": 543, + "column": 85 } } }, { "type": { - "label": "{", + "label": ":", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18288, - "end": 18289, + "start": 18624, + "end": 18625, "loc": { "start": { - "line": 535, - "column": 47 + "line": 543, + "column": 86 }, "end": { - "line": 535, - "column": 48 + "line": 543, + "column": 87 } } }, { "type": { - "label": "name", + "label": "null", + "keyword": "null", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -116703,26 +118669,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "ctx", - "start": 18306, - "end": 18309, + "value": "null", + "start": 18626, + "end": 18630, "loc": { "start": { - "line": 536, - "column": 16 + "line": 543, + "column": 88 }, "end": { - "line": 536, - "column": 19 + "line": 543, + "column": 92 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -116732,24 +118699,24 @@ "binop": null, "updateContext": null }, - "start": 18309, - "end": 18310, + "start": 18630, + "end": 18631, "loc": { "start": { - "line": 536, - "column": 19 + "line": 543, + "column": 92 }, "end": { - "line": 536, - "column": 20 + "line": 543, + "column": 93 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -116757,23 +118724,22 @@ "postfix": false, "binop": null }, - "value": "xktModel", - "start": 18310, - "end": 18318, + "start": 18640, + "end": 18641, "loc": { "start": { - "line": 536, - "column": 20 + "line": 544, + "column": 8 }, "end": { - "line": 536, - "column": 28 + "line": 544, + "column": 9 } } }, { "type": { - "label": ".", + "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -116781,27 +118747,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18318, - "end": 18319, + "start": 18646, + "end": 18647, "loc": { "start": { - "line": 536, - "column": 28 + "line": 545, + "column": 4 }, "end": { - "line": 536, - "column": 29 + "line": 545, + "column": 5 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -116809,25 +118774,24 @@ "postfix": false, "binop": null }, - "value": "createEntity", - "start": 18319, - "end": 18331, + "start": 18648, + "end": 18649, "loc": { "start": { - "line": 536, - "column": 29 + "line": 546, + "column": 0 }, "end": { - "line": 536, - "column": 41 + "line": 546, + "column": 1 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -116835,22 +118799,22 @@ "postfix": false, "binop": null }, - "start": 18331, - "end": 18332, + "start": 18649, + "end": 18650, "loc": { "start": { - "line": 536, - "column": 41 + "line": 546, + "column": 1 }, "end": { - "line": 536, - "column": 42 + "line": 546, + "column": 2 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -116860,24 +118824,24 @@ "postfix": false, "binop": null }, - "start": 18332, - "end": 18333, + "start": 18650, + "end": 18651, "loc": { "start": { - "line": 536, - "column": 42 + "line": 546, + "column": 2 }, "end": { - "line": 536, - "column": 43 + "line": 546, + "column": 3 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -116885,23 +118849,22 @@ "postfix": false, "binop": null }, - "value": "entityId", - "start": 18354, - "end": 18362, + "start": 18651, + "end": 18652, "loc": { "start": { - "line": 537, - "column": 20 + "line": 546, + "column": 3 }, "end": { - "line": 537, - "column": 28 + "line": 546, + "column": 4 } } }, { "type": { - "label": ":", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -116912,68 +118875,59 @@ "binop": null, "updateContext": null }, - "start": 18362, - "end": 18363, + "start": 18652, + "end": 18653, "loc": { "start": { - "line": 537, - "column": 28 + "line": 546, + "column": 4 }, "end": { - "line": 537, - "column": 29 + "line": 546, + "column": 5 } } }, { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "xktEntityId", - "start": 18364, - "end": 18375, + "type": "CommentBlock", + "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", + "start": 18655, + "end": 18835, "loc": { "start": { - "line": 537, - "column": 30 + "line": 548, + "column": 0 }, "end": { - "line": 537, - "column": 41 + "line": 554, + "column": 3 } } }, { "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, + "label": "function", + "keyword": "function", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18375, - "end": 18376, + "value": "function", + "start": 18836, + "end": 18844, "loc": { "start": { - "line": 537, - "column": 41 + "line": 555, + "column": 0 }, "end": { - "line": 537, - "column": 42 + "line": 555, + "column": 8 } } }, @@ -116989,43 +118943,42 @@ "postfix": false, "binop": null }, - "value": "meshIds", - "start": 18397, - "end": 18404, + "value": "parseNodeMatrix", + "start": 18845, + "end": 18860, "loc": { "start": { - "line": 538, - "column": 20 + "line": 555, + "column": 9 }, "end": { - "line": 538, - "column": 27 + "line": 555, + "column": 24 } } }, { "type": { - "label": ":", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18404, - "end": 18405, + "start": 18860, + "end": 18861, "loc": { "start": { - "line": 538, - "column": 27 + "line": 555, + "column": 24 }, "end": { - "line": 538, - "column": 28 + "line": 555, + "column": 25 } } }, @@ -117041,50 +118994,51 @@ "postfix": false, "binop": null }, - "value": "entityMeshIds", - "start": 18406, - "end": 18419, + "value": "node", + "start": 18861, + "end": 18865, "loc": { "start": { - "line": 538, - "column": 29 + "line": 555, + "column": 25 }, "end": { - "line": 538, - "column": 42 + "line": 555, + "column": 29 } } }, { "type": { - "label": "}", - "beforeExpr": false, + "label": ",", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18436, - "end": 18437, + "start": 18865, + "end": 18866, "loc": { "start": { - "line": 539, - "column": 16 + "line": 555, + "column": 29 }, "end": { - "line": 539, - "column": 17 + "line": 555, + "column": 30 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117092,48 +119046,23 @@ "postfix": false, "binop": null }, - "start": 18437, - "end": 18438, - "loc": { - "start": { - "line": 539, - "column": 17 - }, - "end": { - "line": 539, - "column": 18 - } - } - }, - { - "type": { - "label": ";", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 18438, - "end": 18439, + "value": "matrix", + "start": 18867, + "end": 18873, "loc": { "start": { - "line": 539, - "column": 18 + "line": 555, + "column": 31 }, "end": { - "line": 539, - "column": 19 + "line": 555, + "column": 37 } } }, { "type": { - "label": "}", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117143,23 +119072,23 @@ "postfix": false, "binop": null }, - "start": 18452, - "end": 18453, + "start": 18873, + "end": 18874, "loc": { "start": { - "line": 540, - "column": 12 + "line": 555, + "column": 37 }, "end": { - "line": 540, - "column": 13 + "line": 555, + "column": 38 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -117168,23 +119097,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 18466, - "end": 18469, + "start": 18875, + "end": 18876, "loc": { "start": { - "line": 541, - "column": 12 + "line": 555, + "column": 39 }, "end": { - "line": 541, - "column": 15 + "line": 555, + "column": 40 } } }, { "type": { - "label": ".", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117195,23 +119124,24 @@ "binop": null, "updateContext": null }, - "start": 18469, - "end": 18470, + "value": "if", + "start": 18881, + "end": 18883, "loc": { "start": { - "line": 541, - "column": 15 + "line": 556, + "column": 4 }, "end": { - "line": 541, - "column": 16 + "line": 556, + "column": 6 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "(", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -117220,43 +119150,43 @@ "postfix": false, "binop": null }, - "value": "stats", - "start": 18470, - "end": 18475, + "start": 18884, + "end": 18885, "loc": { "start": { - "line": 541, - "column": 16 + "line": 556, + "column": 7 }, "end": { - "line": 541, - "column": 21 + "line": 556, + "column": 8 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "start": 18475, - "end": 18476, + "value": "!", + "start": 18885, + "end": 18886, "loc": { "start": { - "line": 541, - "column": 21 + "line": 556, + "column": 8 }, "end": { - "line": 541, - "column": 22 + "line": 556, + "column": 9 } } }, @@ -117272,130 +119202,129 @@ "postfix": false, "binop": null }, - "value": "numObjects", - "start": 18476, - "end": 18486, + "value": "node", + "start": 18886, + "end": 18890, "loc": { "start": { - "line": 541, - "column": 22 + "line": 556, + "column": 9 }, "end": { - "line": 541, - "column": 32 + "line": 556, + "column": 13 } } }, { "type": { - "label": "++/--", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, - "postfix": true, + "prefix": false, + "postfix": false, "binop": null }, - "value": "++", - "start": 18486, - "end": 18488, + "start": 18890, + "end": 18891, "loc": { "start": { - "line": 541, - "column": 32 + "line": 556, + "column": 13 }, "end": { - "line": 541, - "column": 34 + "line": 556, + "column": 14 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18488, - "end": 18489, + "start": 18892, + "end": 18893, "loc": { "start": { - "line": 541, - "column": 34 + "line": 556, + "column": 15 }, "end": { - "line": 541, - "column": 35 + "line": 556, + "column": 16 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "return", + "keyword": "return", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "meshIds", - "start": 18502, - "end": 18509, + "value": "return", + "start": 18902, + "end": 18908, "loc": { "start": { - "line": 542, - "column": 12 + "line": 557, + "column": 8 }, "end": { - "line": 542, - "column": 19 + "line": 557, + "column": 14 } } }, { "type": { - "label": "=", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 18510, - "end": 18511, + "start": 18908, + "end": 18909, "loc": { "start": { - "line": 542, - "column": 20 + "line": 557, + "column": 14 }, "end": { - "line": 542, - "column": 21 + "line": 557, + "column": 15 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117403,23 +119332,23 @@ "postfix": false, "binop": null }, - "value": "meshIdsStack", - "start": 18512, - "end": 18524, + "start": 18914, + "end": 18915, "loc": { "start": { - "line": 542, - "column": 22 + "line": 558, + "column": 4 }, "end": { - "line": 542, - "column": 34 + "line": 558, + "column": 5 } } }, { "type": { - "label": ".", + "label": "let", + "keyword": "let", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117430,16 +119359,17 @@ "binop": null, "updateContext": null }, - "start": 18524, - "end": 18525, + "value": "let", + "start": 18920, + "end": 18923, "loc": { "start": { - "line": 542, - "column": 34 + "line": 559, + "column": 4 }, "end": { - "line": 542, - "column": 35 + "line": 559, + "column": 7 } } }, @@ -117455,23 +119385,23 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 18525, - "end": 18531, + "value": "localMatrix", + "start": 18924, + "end": 18935, "loc": { "start": { - "line": 542, - "column": 35 + "line": 559, + "column": 8 }, "end": { - "line": 542, - "column": 41 + "line": 559, + "column": 19 } } }, { "type": { - "label": "", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -117479,28 +119409,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": 7, + "binop": null, "updateContext": null }, - "value": ">", - "start": 18532, - "end": 18533, + "start": 18935, + "end": 18936, "loc": { "start": { - "line": 542, - "column": 42 + "line": 559, + "column": 19 }, "end": { - "line": 542, - "column": 43 + "line": 559, + "column": 20 } } }, { "type": { - "label": "num", + "label": "if", + "keyword": "if", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117509,43 +119439,42 @@ "binop": null, "updateContext": null }, - "value": 0, - "start": 18534, - "end": 18535, + "value": "if", + "start": 18941, + "end": 18943, "loc": { "start": { - "line": 542, - "column": 44 + "line": 560, + "column": 4 }, "end": { - "line": 542, - "column": 45 + "line": 560, + "column": 6 } } }, { "type": { - "label": "?", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18536, - "end": 18537, + "start": 18944, + "end": 18945, "loc": { "start": { - "line": 542, - "column": 46 + "line": 560, + "column": 7 }, "end": { - "line": 542, - "column": 47 + "line": 560, + "column": 8 } } }, @@ -117561,25 +119490,25 @@ "postfix": false, "binop": null }, - "value": "meshIdsStack", - "start": 18538, - "end": 18550, + "value": "node", + "start": 18945, + "end": 18949, "loc": { "start": { - "line": 542, - "column": 48 + "line": 560, + "column": 8 }, "end": { - "line": 542, - "column": 60 + "line": 560, + "column": 12 } } }, { "type": { - "label": "[", - "beforeExpr": true, - "startsExpr": true, + "label": ".", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117588,16 +119517,16 @@ "binop": null, "updateContext": null }, - "start": 18550, - "end": 18551, + "start": 18949, + "end": 18950, "loc": { "start": { - "line": 542, - "column": 60 + "line": 560, + "column": 12 }, "end": { - "line": 542, - "column": 61 + "line": 560, + "column": 13 } } }, @@ -117613,23 +119542,23 @@ "postfix": false, "binop": null }, - "value": "meshIdsStack", - "start": 18551, - "end": 18563, + "value": "matrix", + "start": 18950, + "end": 18956, "loc": { "start": { - "line": 542, - "column": 61 + "line": 560, + "column": 13 }, "end": { - "line": 542, - "column": 73 + "line": 560, + "column": 19 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117637,26 +119566,25 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18563, - "end": 18564, + "start": 18956, + "end": 18957, "loc": { "start": { - "line": 542, - "column": 73 + "line": 560, + "column": 19 }, "end": { - "line": 542, - "column": 74 + "line": 560, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "{", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -117665,104 +119593,102 @@ "postfix": false, "binop": null }, - "value": "length", - "start": 18564, - "end": 18570, + "start": 18958, + "end": 18959, "loc": { "start": { - "line": 542, - "column": 74 + "line": 560, + "column": 21 }, "end": { - "line": 542, - "column": 80 + "line": 560, + "column": 22 } } }, { "type": { - "label": "+/-", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, - "updateContext": null + "binop": null }, - "value": "-", - "start": 18571, - "end": 18572, + "value": "localMatrix", + "start": 18968, + "end": 18979, "loc": { "start": { - "line": 542, - "column": 81 + "line": 561, + "column": 8 }, "end": { - "line": 542, - "column": 82 + "line": 561, + "column": 19 } } }, { "type": { - "label": "num", - "beforeExpr": false, - "startsExpr": true, + "label": "=", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": 1, - "start": 18573, - "end": 18574, + "value": "=", + "start": 18980, + "end": 18981, "loc": { "start": { - "line": 542, - "column": 83 + "line": 561, + "column": 20 }, "end": { - "line": 542, - "column": 84 + "line": 561, + "column": 21 } } }, { "type": { - "label": "]", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18574, - "end": 18575, + "value": "node", + "start": 18982, + "end": 18986, "loc": { "start": { - "line": 542, - "column": 84 + "line": 561, + "column": 22 }, "end": { - "line": 542, - "column": 85 + "line": 561, + "column": 26 } } }, { "type": { - "label": ":", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -117772,23 +119698,22 @@ "binop": null, "updateContext": null }, - "start": 18576, - "end": 18577, + "start": 18986, + "end": 18987, "loc": { "start": { - "line": 542, - "column": 86 + "line": 561, + "column": 26 }, "end": { - "line": 542, - "column": 87 + "line": 561, + "column": 27 } } }, { "type": { - "label": "null", - "keyword": "null", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -117796,20 +119721,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "null", - "start": 18578, - "end": 18582, + "value": "matrix", + "start": 18987, + "end": 18993, "loc": { "start": { - "line": 542, - "column": 88 + "line": 561, + "column": 27 }, "end": { - "line": 542, - "column": 92 + "line": 561, + "column": 33 } } }, @@ -117826,22 +119750,23 @@ "binop": null, "updateContext": null }, - "start": 18582, - "end": 18583, + "start": 18993, + "end": 18994, "loc": { "start": { - "line": 542, - "column": 92 + "line": 561, + "column": 33 }, "end": { - "line": 542, - "column": 93 + "line": 561, + "column": 34 } } }, { "type": { - "label": "}", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -117849,26 +119774,28 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18592, - "end": 18593, + "value": "if", + "start": 19003, + "end": 19005, "loc": { "start": { - "line": 543, + "line": 562, "column": 8 }, "end": { - "line": 543, - "column": 9 + "line": 562, + "column": 10 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117876,24 +119803,24 @@ "postfix": false, "binop": null }, - "start": 18598, - "end": 18599, + "start": 19006, + "end": 19007, "loc": { "start": { - "line": 544, - "column": 4 + "line": 562, + "column": 11 }, "end": { - "line": 544, - "column": 5 + "line": 562, + "column": 12 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117901,16 +119828,17 @@ "postfix": false, "binop": null }, - "start": 18600, - "end": 18601, + "value": "matrix", + "start": 19007, + "end": 19013, "loc": { "start": { - "line": 545, - "column": 0 + "line": 562, + "column": 12 }, "end": { - "line": 545, - "column": 1 + "line": 562, + "column": 18 } } }, @@ -117926,22 +119854,22 @@ "postfix": false, "binop": null }, - "start": 18601, - "end": 18602, + "start": 19013, + "end": 19014, "loc": { "start": { - "line": 545, - "column": 1 + "line": 562, + "column": 18 }, "end": { - "line": 545, - "column": 2 + "line": 562, + "column": 19 } } }, { "type": { - "label": "(", + "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -117951,24 +119879,24 @@ "postfix": false, "binop": null }, - "start": 18602, - "end": 18603, + "start": 19015, + "end": 19016, "loc": { "start": { - "line": 545, - "column": 2 + "line": 562, + "column": 20 }, "end": { - "line": 545, - "column": 3 + "line": 562, + "column": 21 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -117976,85 +119904,96 @@ "postfix": false, "binop": null }, - "start": 18603, - "end": 18604, + "value": "matrix", + "start": 19029, + "end": 19035, "loc": { "start": { - "line": 545, - "column": 3 + "line": 563, + "column": 12 }, "end": { - "line": 545, - "column": 4 + "line": 563, + "column": 18 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 18604, - "end": 18605, + "value": "=", + "start": 19036, + "end": 19037, "loc": { "start": { - "line": 545, - "column": 4 + "line": 563, + "column": 19 }, "end": { - "line": 545, - "column": 5 + "line": 563, + "column": 20 } } }, { - "type": "CommentBlock", - "value": "*\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n ", - "start": 18607, - "end": 18787, + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "math", + "start": 19038, + "end": 19042, "loc": { "start": { - "line": 547, - "column": 0 + "line": 563, + "column": 21 }, "end": { - "line": 553, - "column": 3 + "line": 563, + "column": 25 } } }, { "type": { - "label": "function", - "keyword": "function", + "label": ".", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "function", - "start": 18788, - "end": 18796, + "start": 19042, + "end": 19043, "loc": { "start": { - "line": 554, - "column": 0 + "line": 563, + "column": 25 }, "end": { - "line": 554, - "column": 8 + "line": 563, + "column": 26 } } }, @@ -118070,17 +120009,17 @@ "postfix": false, "binop": null }, - "value": "parseNodeMatrix", - "start": 18797, - "end": 18812, + "value": "mulMat4", + "start": 19043, + "end": 19050, "loc": { "start": { - "line": 554, - "column": 9 + "line": 563, + "column": 26 }, "end": { - "line": 554, - "column": 24 + "line": 563, + "column": 33 } } }, @@ -118096,16 +120035,16 @@ "postfix": false, "binop": null }, - "start": 18812, - "end": 18813, + "start": 19050, + "end": 19051, "loc": { "start": { - "line": 554, - "column": 24 + "line": 563, + "column": 33 }, "end": { - "line": 554, - "column": 25 + "line": 563, + "column": 34 } } }, @@ -118121,17 +120060,17 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 18813, - "end": 18817, + "value": "matrix", + "start": 19051, + "end": 19057, "loc": { "start": { - "line": 554, - "column": 25 + "line": 563, + "column": 34 }, "end": { - "line": 554, - "column": 29 + "line": 563, + "column": 40 } } }, @@ -118148,16 +120087,16 @@ "binop": null, "updateContext": null }, - "start": 18817, - "end": 18818, + "start": 19057, + "end": 19058, "loc": { "start": { - "line": 554, - "column": 29 + "line": 563, + "column": 40 }, "end": { - "line": 554, - "column": 30 + "line": 563, + "column": 41 } } }, @@ -118173,25 +120112,103 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 18819, - "end": 18825, + "value": "localMatrix", + "start": 19059, + "end": 19070, "loc": { "start": { - "line": 554, - "column": 31 + "line": 563, + "column": 42 + }, + "end": { + "line": 563, + "column": 53 + } + } + }, + { + "type": { + "label": ",", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 19070, + "end": 19071, + "loc": { + "start": { + "line": 563, + "column": 53 + }, + "end": { + "line": 563, + "column": 54 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "math", + "start": 19072, + "end": 19076, + "loc": { + "start": { + "line": 563, + "column": 55 + }, + "end": { + "line": 563, + "column": 59 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 19076, + "end": 19077, + "loc": { + "start": { + "line": 563, + "column": 59 }, "end": { - "line": 554, - "column": 37 + "line": 563, + "column": 60 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -118199,22 +120216,23 @@ "postfix": false, "binop": null }, - "start": 18825, - "end": 18826, + "value": "mat4", + "start": 19077, + "end": 19081, "loc": { "start": { - "line": 554, - "column": 37 + "line": 563, + "column": 60 }, "end": { - "line": 554, - "column": 38 + "line": 563, + "column": 64 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -118224,23 +120242,22 @@ "postfix": false, "binop": null }, - "start": 18827, - "end": 18828, + "start": 19081, + "end": 19082, "loc": { "start": { - "line": 554, - "column": 39 + "line": 563, + "column": 64 }, "end": { - "line": 554, - "column": 40 + "line": 563, + "column": 65 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -118248,28 +120265,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "if", - "start": 18833, - "end": 18835, + "start": 19082, + "end": 19083, "loc": { "start": { - "line": 555, - "column": 4 + "line": 563, + "column": 65 }, "end": { - "line": 555, - "column": 6 + "line": 563, + "column": 66 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": ")", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -118277,51 +120292,50 @@ "postfix": false, "binop": null }, - "start": 18836, - "end": 18837, + "start": 19083, + "end": 19084, "loc": { "start": { - "line": 555, - "column": 7 + "line": 563, + "column": 66 }, "end": { - "line": 555, - "column": 8 + "line": 563, + "column": 67 } } }, { "type": { - "label": "prefix", + "label": ";", "beforeExpr": true, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "!", - "start": 18837, - "end": 18838, + "start": 19084, + "end": 19085, "loc": { "start": { - "line": 555, - "column": 8 + "line": 563, + "column": 67 }, "end": { - "line": 555, - "column": 9 + "line": 563, + "column": 68 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -118329,41 +120343,43 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 18838, - "end": 18842, + "start": 19094, + "end": 19095, "loc": { "start": { - "line": 555, - "column": 9 + "line": 564, + "column": 8 }, "end": { - "line": 555, - "column": 13 + "line": 564, + "column": 9 } } }, { "type": { - "label": ")", - "beforeExpr": false, + "label": "else", + "keyword": "else", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 18842, - "end": 18843, + "value": "else", + "start": 19096, + "end": 19100, "loc": { "start": { - "line": 555, - "column": 13 + "line": 564, + "column": 10 }, "end": { - "line": 555, + "line": 564, "column": 14 } } @@ -118380,78 +120396,77 @@ "postfix": false, "binop": null }, - "start": 18844, - "end": 18845, + "start": 19101, + "end": 19102, "loc": { "start": { - "line": 555, + "line": 564, "column": 15 }, "end": { - "line": 555, + "line": 564, "column": 16 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "name", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "return", - "start": 18854, - "end": 18860, + "value": "matrix", + "start": 19115, + "end": 19121, "loc": { "start": { - "line": 556, - "column": 8 + "line": 565, + "column": 12 }, "end": { - "line": 556, - "column": 14 + "line": 565, + "column": 18 } } }, { "type": { - "label": ";", + "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 18860, - "end": 18861, + "value": "=", + "start": 19122, + "end": 19123, "loc": { "start": { - "line": 556, - "column": 14 + "line": 565, + "column": 19 }, "end": { - "line": 556, - "column": 15 + "line": 565, + "column": 20 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -118459,24 +120474,24 @@ "postfix": false, "binop": null }, - "start": 18866, - "end": 18867, + "value": "localMatrix", + "start": 19124, + "end": 19135, "loc": { "start": { - "line": 557, - "column": 4 + "line": 565, + "column": 21 }, "end": { - "line": 557, - "column": 5 + "line": 565, + "column": 32 } } }, { "type": { - "label": "let", - "keyword": "let", - "beforeExpr": false, + "label": ";", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -118486,25 +120501,24 @@ "binop": null, "updateContext": null }, - "value": "let", - "start": 18872, - "end": 18875, + "start": 19135, + "end": 19136, "loc": { "start": { - "line": 558, - "column": 4 + "line": 565, + "column": 32 }, "end": { - "line": 558, - "column": 7 + "line": 565, + "column": 33 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -118512,43 +120526,41 @@ "postfix": false, "binop": null }, - "value": "localMatrix", - "start": 18876, - "end": 18887, + "start": 19145, + "end": 19146, "loc": { "start": { - "line": 558, + "line": 566, "column": 8 }, "end": { - "line": 558, - "column": 19 + "line": 566, + "column": 9 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": "}", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 18887, - "end": 18888, + "start": 19151, + "end": 19152, "loc": { "start": { - "line": 558, - "column": 19 + "line": 567, + "column": 4 }, "end": { - "line": 558, - "column": 20 + "line": 567, + "column": 5 } } }, @@ -118567,15 +120579,15 @@ "updateContext": null }, "value": "if", - "start": 18893, - "end": 18895, + "start": 19157, + "end": 19159, "loc": { "start": { - "line": 559, + "line": 568, "column": 4 }, "end": { - "line": 559, + "line": 568, "column": 6 } } @@ -118592,15 +120604,15 @@ "postfix": false, "binop": null }, - "start": 18896, - "end": 18897, + "start": 19160, + "end": 19161, "loc": { "start": { - "line": 559, + "line": 568, "column": 7 }, "end": { - "line": 559, + "line": 568, "column": 8 } } @@ -118618,15 +120630,15 @@ "binop": null }, "value": "node", - "start": 18897, - "end": 18901, + "start": 19161, + "end": 19165, "loc": { "start": { - "line": 559, + "line": 568, "column": 8 }, "end": { - "line": 559, + "line": 568, "column": 12 } } @@ -118644,15 +120656,15 @@ "binop": null, "updateContext": null }, - "start": 18901, - "end": 18902, + "start": 19165, + "end": 19166, "loc": { "start": { - "line": 559, + "line": 568, "column": 12 }, "end": { - "line": 559, + "line": 568, "column": 13 } } @@ -118669,17 +120681,17 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 18902, - "end": 18908, + "value": "translation", + "start": 19166, + "end": 19177, "loc": { "start": { - "line": 559, + "line": 568, "column": 13 }, "end": { - "line": 559, - "column": 19 + "line": 568, + "column": 24 } } }, @@ -118695,16 +120707,16 @@ "postfix": false, "binop": null }, - "start": 18908, - "end": 18909, + "start": 19177, + "end": 19178, "loc": { "start": { - "line": 559, - "column": 19 + "line": 568, + "column": 24 }, "end": { - "line": 559, - "column": 20 + "line": 568, + "column": 25 } } }, @@ -118720,16 +120732,16 @@ "postfix": false, "binop": null }, - "start": 18910, - "end": 18911, + "start": 19179, + "end": 19180, "loc": { "start": { - "line": 559, - "column": 21 + "line": 568, + "column": 26 }, "end": { - "line": 559, - "column": 22 + "line": 568, + "column": 27 } } }, @@ -118746,15 +120758,15 @@ "binop": null }, "value": "localMatrix", - "start": 18920, - "end": 18931, + "start": 19189, + "end": 19200, "loc": { "start": { - "line": 560, + "line": 569, "column": 8 }, "end": { - "line": 560, + "line": 569, "column": 19 } } @@ -118773,15 +120785,15 @@ "updateContext": null }, "value": "=", - "start": 18932, - "end": 18933, + "start": 19201, + "end": 19202, "loc": { "start": { - "line": 560, + "line": 569, "column": 20 }, "end": { - "line": 560, + "line": 569, "column": 21 } } @@ -118798,16 +120810,16 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 18934, - "end": 18938, + "value": "math", + "start": 19203, + "end": 19207, "loc": { "start": { - "line": 560, + "line": 569, "column": 22 }, "end": { - "line": 560, + "line": 569, "column": 26 } } @@ -118825,15 +120837,15 @@ "binop": null, "updateContext": null }, - "start": 18938, - "end": 18939, + "start": 19207, + "end": 19208, "loc": { "start": { - "line": 560, + "line": 569, "column": 26 }, "end": { - "line": 560, + "line": 569, "column": 27 } } @@ -118850,17 +120862,145 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 18939, - "end": 18945, + "value": "translationMat4v", + "start": 19208, + "end": 19224, "loc": { "start": { - "line": 560, + "line": 569, "column": 27 }, "end": { - "line": 560, - "column": 33 + "line": 569, + "column": 43 + } + } + }, + { + "type": { + "label": "(", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 19224, + "end": 19225, + "loc": { + "start": { + "line": 569, + "column": 43 + }, + "end": { + "line": 569, + "column": 44 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "node", + "start": 19225, + "end": 19229, + "loc": { + "start": { + "line": 569, + "column": 44 + }, + "end": { + "line": 569, + "column": 48 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 19229, + "end": 19230, + "loc": { + "start": { + "line": 569, + "column": 48 + }, + "end": { + "line": 569, + "column": 49 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "translation", + "start": 19230, + "end": 19241, + "loc": { + "start": { + "line": 569, + "column": 49 + }, + "end": { + "line": 569, + "column": 60 + } + } + }, + { + "type": { + "label": ")", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 19241, + "end": 19242, + "loc": { + "start": { + "line": 569, + "column": 60 + }, + "end": { + "line": 569, + "column": 61 } } }, @@ -118877,16 +121017,16 @@ "binop": null, "updateContext": null }, - "start": 18945, - "end": 18946, + "start": 19242, + "end": 19243, "loc": { "start": { - "line": 560, - "column": 33 + "line": 569, + "column": 61 }, "end": { - "line": 560, - "column": 34 + "line": 569, + "column": 62 } } }, @@ -118905,15 +121045,15 @@ "updateContext": null }, "value": "if", - "start": 18955, - "end": 18957, + "start": 19252, + "end": 19254, "loc": { "start": { - "line": 561, + "line": 570, "column": 8 }, "end": { - "line": 561, + "line": 570, "column": 10 } } @@ -118930,15 +121070,15 @@ "postfix": false, "binop": null }, - "start": 18958, - "end": 18959, + "start": 19255, + "end": 19256, "loc": { "start": { - "line": 561, + "line": 570, "column": 11 }, "end": { - "line": 561, + "line": 570, "column": 12 } } @@ -118956,15 +121096,15 @@ "binop": null }, "value": "matrix", - "start": 18959, - "end": 18965, + "start": 19256, + "end": 19262, "loc": { "start": { - "line": 561, + "line": 570, "column": 12 }, "end": { - "line": 561, + "line": 570, "column": 18 } } @@ -118981,15 +121121,15 @@ "postfix": false, "binop": null }, - "start": 18965, - "end": 18966, + "start": 19262, + "end": 19263, "loc": { "start": { - "line": 561, + "line": 570, "column": 18 }, "end": { - "line": 561, + "line": 570, "column": 19 } } @@ -119006,15 +121146,15 @@ "postfix": false, "binop": null }, - "start": 18967, - "end": 18968, + "start": 19264, + "end": 19265, "loc": { "start": { - "line": 561, + "line": 570, "column": 20 }, "end": { - "line": 561, + "line": 570, "column": 21 } } @@ -119032,15 +121172,15 @@ "binop": null }, "value": "matrix", - "start": 18981, - "end": 18987, + "start": 19278, + "end": 19284, "loc": { "start": { - "line": 562, + "line": 571, "column": 12 }, "end": { - "line": 562, + "line": 571, "column": 18 } } @@ -119059,15 +121199,15 @@ "updateContext": null }, "value": "=", - "start": 18988, - "end": 18989, + "start": 19285, + "end": 19286, "loc": { "start": { - "line": 562, + "line": 571, "column": 19 }, "end": { - "line": 562, + "line": 571, "column": 20 } } @@ -119085,15 +121225,15 @@ "binop": null }, "value": "math", - "start": 18990, - "end": 18994, + "start": 19287, + "end": 19291, "loc": { "start": { - "line": 562, + "line": 571, "column": 21 }, "end": { - "line": 562, + "line": 571, "column": 25 } } @@ -119111,15 +121251,15 @@ "binop": null, "updateContext": null }, - "start": 18994, - "end": 18995, + "start": 19291, + "end": 19292, "loc": { "start": { - "line": 562, + "line": 571, "column": 25 }, "end": { - "line": 562, + "line": 571, "column": 26 } } @@ -119137,15 +121277,15 @@ "binop": null }, "value": "mulMat4", - "start": 18995, - "end": 19002, + "start": 19292, + "end": 19299, "loc": { "start": { - "line": 562, + "line": 571, "column": 26 }, "end": { - "line": 562, + "line": 571, "column": 33 } } @@ -119162,15 +121302,15 @@ "postfix": false, "binop": null }, - "start": 19002, - "end": 19003, + "start": 19299, + "end": 19300, "loc": { "start": { - "line": 562, + "line": 571, "column": 33 }, "end": { - "line": 562, + "line": 571, "column": 34 } } @@ -119188,15 +121328,15 @@ "binop": null }, "value": "matrix", - "start": 19003, - "end": 19009, + "start": 19300, + "end": 19306, "loc": { "start": { - "line": 562, + "line": 571, "column": 34 }, "end": { - "line": 562, + "line": 571, "column": 40 } } @@ -119214,15 +121354,15 @@ "binop": null, "updateContext": null }, - "start": 19009, - "end": 19010, + "start": 19306, + "end": 19307, "loc": { "start": { - "line": 562, + "line": 571, "column": 40 }, "end": { - "line": 562, + "line": 571, "column": 41 } } @@ -119240,15 +121380,15 @@ "binop": null }, "value": "localMatrix", - "start": 19011, - "end": 19022, + "start": 19308, + "end": 19319, "loc": { "start": { - "line": 562, + "line": 571, "column": 42 }, "end": { - "line": 562, + "line": 571, "column": 53 } } @@ -119266,15 +121406,15 @@ "binop": null, "updateContext": null }, - "start": 19022, - "end": 19023, + "start": 19319, + "end": 19320, "loc": { "start": { - "line": 562, + "line": 571, "column": 53 }, "end": { - "line": 562, + "line": 571, "column": 54 } } @@ -119292,15 +121432,15 @@ "binop": null }, "value": "math", - "start": 19024, - "end": 19028, + "start": 19321, + "end": 19325, "loc": { "start": { - "line": 562, + "line": 571, "column": 55 }, "end": { - "line": 562, + "line": 571, "column": 59 } } @@ -119318,15 +121458,15 @@ "binop": null, "updateContext": null }, - "start": 19028, - "end": 19029, + "start": 19325, + "end": 19326, "loc": { "start": { - "line": 562, + "line": 571, "column": 59 }, "end": { - "line": 562, + "line": 571, "column": 60 } } @@ -119344,15 +121484,15 @@ "binop": null }, "value": "mat4", - "start": 19029, - "end": 19033, + "start": 19326, + "end": 19330, "loc": { "start": { - "line": 562, + "line": 571, "column": 60 }, "end": { - "line": 562, + "line": 571, "column": 64 } } @@ -119369,15 +121509,15 @@ "postfix": false, "binop": null }, - "start": 19033, - "end": 19034, + "start": 19330, + "end": 19331, "loc": { "start": { - "line": 562, + "line": 571, "column": 64 }, "end": { - "line": 562, + "line": 571, "column": 65 } } @@ -119394,15 +121534,15 @@ "postfix": false, "binop": null }, - "start": 19034, - "end": 19035, + "start": 19331, + "end": 19332, "loc": { "start": { - "line": 562, + "line": 571, "column": 65 }, "end": { - "line": 562, + "line": 571, "column": 66 } } @@ -119419,15 +121559,15 @@ "postfix": false, "binop": null }, - "start": 19035, - "end": 19036, + "start": 19332, + "end": 19333, "loc": { "start": { - "line": 562, + "line": 571, "column": 66 }, "end": { - "line": 562, + "line": 571, "column": 67 } } @@ -119445,15 +121585,15 @@ "binop": null, "updateContext": null }, - "start": 19036, - "end": 19037, + "start": 19333, + "end": 19334, "loc": { "start": { - "line": 562, + "line": 571, "column": 67 }, "end": { - "line": 562, + "line": 571, "column": 68 } } @@ -119470,15 +121610,15 @@ "postfix": false, "binop": null }, - "start": 19046, - "end": 19047, + "start": 19343, + "end": 19344, "loc": { "start": { - "line": 563, + "line": 572, "column": 8 }, "end": { - "line": 563, + "line": 572, "column": 9 } } @@ -119498,15 +121638,15 @@ "updateContext": null }, "value": "else", - "start": 19048, - "end": 19052, + "start": 19345, + "end": 19349, "loc": { "start": { - "line": 563, + "line": 572, "column": 10 }, "end": { - "line": 563, + "line": 572, "column": 14 } } @@ -119523,15 +121663,15 @@ "postfix": false, "binop": null }, - "start": 19053, - "end": 19054, + "start": 19350, + "end": 19351, "loc": { "start": { - "line": 563, + "line": 572, "column": 15 }, "end": { - "line": 563, + "line": 572, "column": 16 } } @@ -119549,15 +121689,15 @@ "binop": null }, "value": "matrix", - "start": 19067, - "end": 19073, + "start": 19364, + "end": 19370, "loc": { "start": { - "line": 564, + "line": 573, "column": 12 }, "end": { - "line": 564, + "line": 573, "column": 18 } } @@ -119576,15 +121716,15 @@ "updateContext": null }, "value": "=", - "start": 19074, - "end": 19075, + "start": 19371, + "end": 19372, "loc": { "start": { - "line": 564, + "line": 573, "column": 19 }, "end": { - "line": 564, + "line": 573, "column": 20 } } @@ -119602,15 +121742,15 @@ "binop": null }, "value": "localMatrix", - "start": 19076, - "end": 19087, + "start": 19373, + "end": 19384, "loc": { "start": { - "line": 564, + "line": 573, "column": 21 }, "end": { - "line": 564, + "line": 573, "column": 32 } } @@ -119628,15 +121768,15 @@ "binop": null, "updateContext": null }, - "start": 19087, - "end": 19088, + "start": 19384, + "end": 19385, "loc": { "start": { - "line": 564, + "line": 573, "column": 32 }, "end": { - "line": 564, + "line": 573, "column": 33 } } @@ -119653,15 +121793,15 @@ "postfix": false, "binop": null }, - "start": 19097, - "end": 19098, + "start": 19394, + "end": 19395, "loc": { "start": { - "line": 565, + "line": 574, "column": 8 }, "end": { - "line": 565, + "line": 574, "column": 9 } } @@ -119678,15 +121818,15 @@ "postfix": false, "binop": null }, - "start": 19103, - "end": 19104, + "start": 19400, + "end": 19401, "loc": { "start": { - "line": 566, + "line": 575, "column": 4 }, "end": { - "line": 566, + "line": 575, "column": 5 } } @@ -119706,15 +121846,15 @@ "updateContext": null }, "value": "if", - "start": 19109, - "end": 19111, + "start": 19406, + "end": 19408, "loc": { "start": { - "line": 567, + "line": 576, "column": 4 }, "end": { - "line": 567, + "line": 576, "column": 6 } } @@ -119731,15 +121871,15 @@ "postfix": false, "binop": null }, - "start": 19112, - "end": 19113, + "start": 19409, + "end": 19410, "loc": { "start": { - "line": 567, + "line": 576, "column": 7 }, "end": { - "line": 567, + "line": 576, "column": 8 } } @@ -119757,15 +121897,15 @@ "binop": null }, "value": "node", - "start": 19113, - "end": 19117, + "start": 19410, + "end": 19414, "loc": { "start": { - "line": 567, + "line": 576, "column": 8 }, "end": { - "line": 567, + "line": 576, "column": 12 } } @@ -119783,15 +121923,15 @@ "binop": null, "updateContext": null }, - "start": 19117, - "end": 19118, + "start": 19414, + "end": 19415, "loc": { "start": { - "line": 567, + "line": 576, "column": 12 }, "end": { - "line": 567, + "line": 576, "column": 13 } } @@ -119808,17 +121948,17 @@ "postfix": false, "binop": null }, - "value": "translation", - "start": 19118, - "end": 19129, + "value": "rotation", + "start": 19415, + "end": 19423, "loc": { "start": { - "line": 567, + "line": 576, "column": 13 }, "end": { - "line": 567, - "column": 24 + "line": 576, + "column": 21 } } }, @@ -119834,16 +121974,16 @@ "postfix": false, "binop": null }, - "start": 19129, - "end": 19130, + "start": 19423, + "end": 19424, "loc": { "start": { - "line": 567, - "column": 24 + "line": 576, + "column": 21 }, "end": { - "line": 567, - "column": 25 + "line": 576, + "column": 22 } } }, @@ -119859,16 +121999,16 @@ "postfix": false, "binop": null }, - "start": 19131, - "end": 19132, + "start": 19425, + "end": 19426, "loc": { "start": { - "line": 567, - "column": 26 + "line": 576, + "column": 23 }, "end": { - "line": 567, - "column": 27 + "line": 576, + "column": 24 } } }, @@ -119885,15 +122025,15 @@ "binop": null }, "value": "localMatrix", - "start": 19141, - "end": 19152, + "start": 19435, + "end": 19446, "loc": { "start": { - "line": 568, + "line": 577, "column": 8 }, "end": { - "line": 568, + "line": 577, "column": 19 } } @@ -119912,15 +122052,15 @@ "updateContext": null }, "value": "=", - "start": 19153, - "end": 19154, + "start": 19447, + "end": 19448, "loc": { "start": { - "line": 568, + "line": 577, "column": 20 }, "end": { - "line": 568, + "line": 577, "column": 21 } } @@ -119938,15 +122078,15 @@ "binop": null }, "value": "math", - "start": 19155, - "end": 19159, + "start": 19449, + "end": 19453, "loc": { "start": { - "line": 568, + "line": 577, "column": 22 }, "end": { - "line": 568, + "line": 577, "column": 26 } } @@ -119964,15 +122104,15 @@ "binop": null, "updateContext": null }, - "start": 19159, - "end": 19160, + "start": 19453, + "end": 19454, "loc": { "start": { - "line": 568, + "line": 577, "column": 26 }, "end": { - "line": 568, + "line": 577, "column": 27 } } @@ -119989,16 +122129,16 @@ "postfix": false, "binop": null }, - "value": "translationMat4v", - "start": 19160, - "end": 19176, + "value": "quaternionToMat4", + "start": 19454, + "end": 19470, "loc": { "start": { - "line": 568, + "line": 577, "column": 27 }, "end": { - "line": 568, + "line": 577, "column": 43 } } @@ -120015,15 +122155,15 @@ "postfix": false, "binop": null }, - "start": 19176, - "end": 19177, + "start": 19470, + "end": 19471, "loc": { "start": { - "line": 568, + "line": 577, "column": 43 }, "end": { - "line": 568, + "line": 577, "column": 44 } } @@ -120041,15 +122181,15 @@ "binop": null }, "value": "node", - "start": 19177, - "end": 19181, + "start": 19471, + "end": 19475, "loc": { "start": { - "line": 568, + "line": 577, "column": 44 }, "end": { - "line": 568, + "line": 577, "column": 48 } } @@ -120067,15 +122207,15 @@ "binop": null, "updateContext": null }, - "start": 19181, - "end": 19182, + "start": 19475, + "end": 19476, "loc": { "start": { - "line": 568, + "line": 577, "column": 48 }, "end": { - "line": 568, + "line": 577, "column": 49 } } @@ -120092,17 +122232,17 @@ "postfix": false, "binop": null }, - "value": "translation", - "start": 19182, - "end": 19193, + "value": "rotation", + "start": 19476, + "end": 19484, "loc": { "start": { - "line": 568, + "line": 577, "column": 49 }, "end": { - "line": 568, - "column": 60 + "line": 577, + "column": 57 } } }, @@ -120118,16 +122258,16 @@ "postfix": false, "binop": null }, - "start": 19193, - "end": 19194, + "start": 19484, + "end": 19485, "loc": { "start": { - "line": 568, - "column": 60 + "line": 577, + "column": 57 }, "end": { - "line": 568, - "column": 61 + "line": 577, + "column": 58 } } }, @@ -120144,16 +122284,16 @@ "binop": null, "updateContext": null }, - "start": 19194, - "end": 19195, + "start": 19485, + "end": 19486, "loc": { "start": { - "line": 568, - "column": 61 + "line": 577, + "column": 58 }, "end": { - "line": 568, - "column": 62 + "line": 577, + "column": 59 } } }, @@ -120172,15 +122312,15 @@ "updateContext": null }, "value": "if", - "start": 19204, - "end": 19206, + "start": 19495, + "end": 19497, "loc": { "start": { - "line": 569, + "line": 578, "column": 8 }, "end": { - "line": 569, + "line": 578, "column": 10 } } @@ -120197,15 +122337,15 @@ "postfix": false, "binop": null }, - "start": 19207, - "end": 19208, + "start": 19498, + "end": 19499, "loc": { "start": { - "line": 569, + "line": 578, "column": 11 }, "end": { - "line": 569, + "line": 578, "column": 12 } } @@ -120223,15 +122363,15 @@ "binop": null }, "value": "matrix", - "start": 19208, - "end": 19214, + "start": 19499, + "end": 19505, "loc": { "start": { - "line": 569, + "line": 578, "column": 12 }, "end": { - "line": 569, + "line": 578, "column": 18 } } @@ -120248,15 +122388,15 @@ "postfix": false, "binop": null }, - "start": 19214, - "end": 19215, + "start": 19505, + "end": 19506, "loc": { "start": { - "line": 569, + "line": 578, "column": 18 }, "end": { - "line": 569, + "line": 578, "column": 19 } } @@ -120273,15 +122413,15 @@ "postfix": false, "binop": null }, - "start": 19216, - "end": 19217, + "start": 19507, + "end": 19508, "loc": { "start": { - "line": 569, + "line": 578, "column": 20 }, "end": { - "line": 569, + "line": 578, "column": 21 } } @@ -120299,15 +122439,15 @@ "binop": null }, "value": "matrix", - "start": 19230, - "end": 19236, + "start": 19521, + "end": 19527, "loc": { "start": { - "line": 570, + "line": 579, "column": 12 }, "end": { - "line": 570, + "line": 579, "column": 18 } } @@ -120326,15 +122466,15 @@ "updateContext": null }, "value": "=", - "start": 19237, - "end": 19238, + "start": 19528, + "end": 19529, "loc": { "start": { - "line": 570, + "line": 579, "column": 19 }, "end": { - "line": 570, + "line": 579, "column": 20 } } @@ -120352,15 +122492,15 @@ "binop": null }, "value": "math", - "start": 19239, - "end": 19243, + "start": 19530, + "end": 19534, "loc": { "start": { - "line": 570, + "line": 579, "column": 21 }, "end": { - "line": 570, + "line": 579, "column": 25 } } @@ -120378,15 +122518,15 @@ "binop": null, "updateContext": null }, - "start": 19243, - "end": 19244, + "start": 19534, + "end": 19535, "loc": { "start": { - "line": 570, + "line": 579, "column": 25 }, "end": { - "line": 570, + "line": 579, "column": 26 } } @@ -120404,15 +122544,15 @@ "binop": null }, "value": "mulMat4", - "start": 19244, - "end": 19251, + "start": 19535, + "end": 19542, "loc": { "start": { - "line": 570, + "line": 579, "column": 26 }, "end": { - "line": 570, + "line": 579, "column": 33 } } @@ -120429,15 +122569,15 @@ "postfix": false, "binop": null }, - "start": 19251, - "end": 19252, + "start": 19542, + "end": 19543, "loc": { "start": { - "line": 570, + "line": 579, "column": 33 }, "end": { - "line": 570, + "line": 579, "column": 34 } } @@ -120455,15 +122595,15 @@ "binop": null }, "value": "matrix", - "start": 19252, - "end": 19258, + "start": 19543, + "end": 19549, "loc": { "start": { - "line": 570, + "line": 579, "column": 34 }, "end": { - "line": 570, + "line": 579, "column": 40 } } @@ -120481,15 +122621,15 @@ "binop": null, "updateContext": null }, - "start": 19258, - "end": 19259, + "start": 19549, + "end": 19550, "loc": { "start": { - "line": 570, + "line": 579, "column": 40 }, "end": { - "line": 570, + "line": 579, "column": 41 } } @@ -120507,15 +122647,15 @@ "binop": null }, "value": "localMatrix", - "start": 19260, - "end": 19271, + "start": 19551, + "end": 19562, "loc": { "start": { - "line": 570, + "line": 579, "column": 42 }, "end": { - "line": 570, + "line": 579, "column": 53 } } @@ -120533,15 +122673,15 @@ "binop": null, "updateContext": null }, - "start": 19271, - "end": 19272, + "start": 19562, + "end": 19563, "loc": { "start": { - "line": 570, + "line": 579, "column": 53 }, "end": { - "line": 570, + "line": 579, "column": 54 } } @@ -120559,15 +122699,15 @@ "binop": null }, "value": "math", - "start": 19273, - "end": 19277, + "start": 19564, + "end": 19568, "loc": { "start": { - "line": 570, + "line": 579, "column": 55 }, "end": { - "line": 570, + "line": 579, "column": 59 } } @@ -120585,15 +122725,15 @@ "binop": null, "updateContext": null }, - "start": 19277, - "end": 19278, + "start": 19568, + "end": 19569, "loc": { "start": { - "line": 570, + "line": 579, "column": 59 }, "end": { - "line": 570, + "line": 579, "column": 60 } } @@ -120611,15 +122751,15 @@ "binop": null }, "value": "mat4", - "start": 19278, - "end": 19282, + "start": 19569, + "end": 19573, "loc": { "start": { - "line": 570, + "line": 579, "column": 60 }, "end": { - "line": 570, + "line": 579, "column": 64 } } @@ -120636,15 +122776,15 @@ "postfix": false, "binop": null }, - "start": 19282, - "end": 19283, + "start": 19573, + "end": 19574, "loc": { "start": { - "line": 570, + "line": 579, "column": 64 }, "end": { - "line": 570, + "line": 579, "column": 65 } } @@ -120661,15 +122801,15 @@ "postfix": false, "binop": null }, - "start": 19283, - "end": 19284, + "start": 19574, + "end": 19575, "loc": { "start": { - "line": 570, + "line": 579, "column": 65 }, "end": { - "line": 570, + "line": 579, "column": 66 } } @@ -120686,15 +122826,15 @@ "postfix": false, "binop": null }, - "start": 19284, - "end": 19285, + "start": 19575, + "end": 19576, "loc": { "start": { - "line": 570, + "line": 579, "column": 66 }, "end": { - "line": 570, + "line": 579, "column": 67 } } @@ -120712,15 +122852,15 @@ "binop": null, "updateContext": null }, - "start": 19285, - "end": 19286, + "start": 19576, + "end": 19577, "loc": { "start": { - "line": 570, + "line": 579, "column": 67 }, "end": { - "line": 570, + "line": 579, "column": 68 } } @@ -120737,15 +122877,15 @@ "postfix": false, "binop": null }, - "start": 19295, - "end": 19296, + "start": 19586, + "end": 19587, "loc": { "start": { - "line": 571, + "line": 580, "column": 8 }, "end": { - "line": 571, + "line": 580, "column": 9 } } @@ -120765,15 +122905,15 @@ "updateContext": null }, "value": "else", - "start": 19297, - "end": 19301, + "start": 19588, + "end": 19592, "loc": { "start": { - "line": 571, + "line": 580, "column": 10 }, "end": { - "line": 571, + "line": 580, "column": 14 } } @@ -120790,15 +122930,15 @@ "postfix": false, "binop": null }, - "start": 19302, - "end": 19303, + "start": 19593, + "end": 19594, "loc": { "start": { - "line": 571, + "line": 580, "column": 15 }, "end": { - "line": 571, + "line": 580, "column": 16 } } @@ -120816,15 +122956,15 @@ "binop": null }, "value": "matrix", - "start": 19316, - "end": 19322, + "start": 19607, + "end": 19613, "loc": { "start": { - "line": 572, + "line": 581, "column": 12 }, "end": { - "line": 572, + "line": 581, "column": 18 } } @@ -120843,15 +122983,15 @@ "updateContext": null }, "value": "=", - "start": 19323, - "end": 19324, + "start": 19614, + "end": 19615, "loc": { "start": { - "line": 572, + "line": 581, "column": 19 }, "end": { - "line": 572, + "line": 581, "column": 20 } } @@ -120869,15 +123009,15 @@ "binop": null }, "value": "localMatrix", - "start": 19325, - "end": 19336, + "start": 19616, + "end": 19627, "loc": { "start": { - "line": 572, + "line": 581, "column": 21 }, "end": { - "line": 572, + "line": 581, "column": 32 } } @@ -120895,15 +123035,15 @@ "binop": null, "updateContext": null }, - "start": 19336, - "end": 19337, + "start": 19627, + "end": 19628, "loc": { "start": { - "line": 572, + "line": 581, "column": 32 }, "end": { - "line": 572, + "line": 581, "column": 33 } } @@ -120920,15 +123060,15 @@ "postfix": false, "binop": null }, - "start": 19346, - "end": 19347, + "start": 19637, + "end": 19638, "loc": { "start": { - "line": 573, + "line": 582, "column": 8 }, "end": { - "line": 573, + "line": 582, "column": 9 } } @@ -120945,15 +123085,15 @@ "postfix": false, "binop": null }, - "start": 19352, - "end": 19353, + "start": 19643, + "end": 19644, "loc": { "start": { - "line": 574, + "line": 583, "column": 4 }, "end": { - "line": 574, + "line": 583, "column": 5 } } @@ -120973,15 +123113,15 @@ "updateContext": null }, "value": "if", - "start": 19358, - "end": 19360, + "start": 19649, + "end": 19651, "loc": { "start": { - "line": 575, + "line": 584, "column": 4 }, "end": { - "line": 575, + "line": 584, "column": 6 } } @@ -120998,15 +123138,15 @@ "postfix": false, "binop": null }, - "start": 19361, - "end": 19362, + "start": 19652, + "end": 19653, "loc": { "start": { - "line": 575, + "line": 584, "column": 7 }, "end": { - "line": 575, + "line": 584, "column": 8 } } @@ -121024,15 +123164,15 @@ "binop": null }, "value": "node", - "start": 19362, - "end": 19366, + "start": 19653, + "end": 19657, "loc": { "start": { - "line": 575, + "line": 584, "column": 8 }, "end": { - "line": 575, + "line": 584, "column": 12 } } @@ -121050,15 +123190,15 @@ "binop": null, "updateContext": null }, - "start": 19366, - "end": 19367, + "start": 19657, + "end": 19658, "loc": { "start": { - "line": 575, + "line": 584, "column": 12 }, "end": { - "line": 575, + "line": 584, "column": 13 } } @@ -121075,17 +123215,17 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 19367, - "end": 19375, + "value": "scale", + "start": 19658, + "end": 19663, "loc": { "start": { - "line": 575, + "line": 584, "column": 13 }, "end": { - "line": 575, - "column": 21 + "line": 584, + "column": 18 } } }, @@ -121101,16 +123241,16 @@ "postfix": false, "binop": null }, - "start": 19375, - "end": 19376, + "start": 19663, + "end": 19664, "loc": { - "start": { - "line": 575, - "column": 21 + "start": { + "line": 584, + "column": 18 }, "end": { - "line": 575, - "column": 22 + "line": 584, + "column": 19 } } }, @@ -121126,16 +123266,16 @@ "postfix": false, "binop": null }, - "start": 19377, - "end": 19378, + "start": 19665, + "end": 19666, "loc": { "start": { - "line": 575, - "column": 23 + "line": 584, + "column": 20 }, "end": { - "line": 575, - "column": 24 + "line": 584, + "column": 21 } } }, @@ -121152,15 +123292,15 @@ "binop": null }, "value": "localMatrix", - "start": 19387, - "end": 19398, + "start": 19675, + "end": 19686, "loc": { "start": { - "line": 576, + "line": 585, "column": 8 }, "end": { - "line": 576, + "line": 585, "column": 19 } } @@ -121179,15 +123319,15 @@ "updateContext": null }, "value": "=", - "start": 19399, - "end": 19400, + "start": 19687, + "end": 19688, "loc": { "start": { - "line": 576, + "line": 585, "column": 20 }, "end": { - "line": 576, + "line": 585, "column": 21 } } @@ -121205,15 +123345,15 @@ "binop": null }, "value": "math", - "start": 19401, - "end": 19405, + "start": 19689, + "end": 19693, "loc": { "start": { - "line": 576, + "line": 585, "column": 22 }, "end": { - "line": 576, + "line": 585, "column": 26 } } @@ -121231,15 +123371,15 @@ "binop": null, "updateContext": null }, - "start": 19405, - "end": 19406, + "start": 19693, + "end": 19694, "loc": { "start": { - "line": 576, + "line": 585, "column": 26 }, "end": { - "line": 576, + "line": 585, "column": 27 } } @@ -121256,17 +123396,17 @@ "postfix": false, "binop": null }, - "value": "quaternionToMat4", - "start": 19406, - "end": 19422, + "value": "scalingMat4v", + "start": 19694, + "end": 19706, "loc": { "start": { - "line": 576, + "line": 585, "column": 27 }, "end": { - "line": 576, - "column": 43 + "line": 585, + "column": 39 } } }, @@ -121282,16 +123422,16 @@ "postfix": false, "binop": null }, - "start": 19422, - "end": 19423, + "start": 19706, + "end": 19707, "loc": { "start": { - "line": 576, - "column": 43 + "line": 585, + "column": 39 }, "end": { - "line": 576, - "column": 44 + "line": 585, + "column": 40 } } }, @@ -121308,16 +123448,16 @@ "binop": null }, "value": "node", - "start": 19423, - "end": 19427, + "start": 19707, + "end": 19711, "loc": { "start": { - "line": 576, - "column": 44 + "line": 585, + "column": 40 }, "end": { - "line": 576, - "column": 48 + "line": 585, + "column": 44 } } }, @@ -121334,16 +123474,16 @@ "binop": null, "updateContext": null }, - "start": 19427, - "end": 19428, + "start": 19711, + "end": 19712, "loc": { "start": { - "line": 576, - "column": 48 + "line": 585, + "column": 44 }, "end": { - "line": 576, - "column": 49 + "line": 585, + "column": 45 } } }, @@ -121359,17 +123499,17 @@ "postfix": false, "binop": null }, - "value": "rotation", - "start": 19428, - "end": 19436, + "value": "scale", + "start": 19712, + "end": 19717, "loc": { "start": { - "line": 576, - "column": 49 + "line": 585, + "column": 45 }, "end": { - "line": 576, - "column": 57 + "line": 585, + "column": 50 } } }, @@ -121385,16 +123525,16 @@ "postfix": false, "binop": null }, - "start": 19436, - "end": 19437, + "start": 19717, + "end": 19718, "loc": { "start": { - "line": 576, - "column": 57 + "line": 585, + "column": 50 }, "end": { - "line": 576, - "column": 58 + "line": 585, + "column": 51 } } }, @@ -121411,16 +123551,16 @@ "binop": null, "updateContext": null }, - "start": 19437, - "end": 19438, + "start": 19718, + "end": 19719, "loc": { "start": { - "line": 576, - "column": 58 + "line": 585, + "column": 51 }, "end": { - "line": 576, - "column": 59 + "line": 585, + "column": 52 } } }, @@ -121439,15 +123579,15 @@ "updateContext": null }, "value": "if", - "start": 19447, - "end": 19449, + "start": 19728, + "end": 19730, "loc": { "start": { - "line": 577, + "line": 586, "column": 8 }, "end": { - "line": 577, + "line": 586, "column": 10 } } @@ -121464,15 +123604,15 @@ "postfix": false, "binop": null }, - "start": 19450, - "end": 19451, + "start": 19731, + "end": 19732, "loc": { "start": { - "line": 577, + "line": 586, "column": 11 }, "end": { - "line": 577, + "line": 586, "column": 12 } } @@ -121490,15 +123630,15 @@ "binop": null }, "value": "matrix", - "start": 19451, - "end": 19457, + "start": 19732, + "end": 19738, "loc": { "start": { - "line": 577, + "line": 586, "column": 12 }, "end": { - "line": 577, + "line": 586, "column": 18 } } @@ -121515,15 +123655,15 @@ "postfix": false, "binop": null }, - "start": 19457, - "end": 19458, + "start": 19738, + "end": 19739, "loc": { "start": { - "line": 577, + "line": 586, "column": 18 }, "end": { - "line": 577, + "line": 586, "column": 19 } } @@ -121540,15 +123680,15 @@ "postfix": false, "binop": null }, - "start": 19459, - "end": 19460, + "start": 19740, + "end": 19741, "loc": { "start": { - "line": 577, + "line": 586, "column": 20 }, "end": { - "line": 577, + "line": 586, "column": 21 } } @@ -121566,15 +123706,15 @@ "binop": null }, "value": "matrix", - "start": 19473, - "end": 19479, + "start": 19754, + "end": 19760, "loc": { "start": { - "line": 578, + "line": 587, "column": 12 }, "end": { - "line": 578, + "line": 587, "column": 18 } } @@ -121593,15 +123733,15 @@ "updateContext": null }, "value": "=", - "start": 19480, - "end": 19481, + "start": 19761, + "end": 19762, "loc": { "start": { - "line": 578, + "line": 587, "column": 19 }, "end": { - "line": 578, + "line": 587, "column": 20 } } @@ -121619,15 +123759,15 @@ "binop": null }, "value": "math", - "start": 19482, - "end": 19486, + "start": 19763, + "end": 19767, "loc": { "start": { - "line": 578, + "line": 587, "column": 21 }, "end": { - "line": 578, + "line": 587, "column": 25 } } @@ -121645,15 +123785,15 @@ "binop": null, "updateContext": null }, - "start": 19486, - "end": 19487, + "start": 19767, + "end": 19768, "loc": { "start": { - "line": 578, + "line": 587, "column": 25 }, "end": { - "line": 578, + "line": 587, "column": 26 } } @@ -121671,15 +123811,15 @@ "binop": null }, "value": "mulMat4", - "start": 19487, - "end": 19494, + "start": 19768, + "end": 19775, "loc": { "start": { - "line": 578, + "line": 587, "column": 26 }, "end": { - "line": 578, + "line": 587, "column": 33 } } @@ -121696,15 +123836,15 @@ "postfix": false, "binop": null }, - "start": 19494, - "end": 19495, + "start": 19775, + "end": 19776, "loc": { "start": { - "line": 578, + "line": 587, "column": 33 }, "end": { - "line": 578, + "line": 587, "column": 34 } } @@ -121722,15 +123862,15 @@ "binop": null }, "value": "matrix", - "start": 19495, - "end": 19501, + "start": 19776, + "end": 19782, "loc": { "start": { - "line": 578, + "line": 587, "column": 34 }, "end": { - "line": 578, + "line": 587, "column": 40 } } @@ -121748,15 +123888,15 @@ "binop": null, "updateContext": null }, - "start": 19501, - "end": 19502, + "start": 19782, + "end": 19783, "loc": { "start": { - "line": 578, + "line": 587, "column": 40 }, "end": { - "line": 578, + "line": 587, "column": 41 } } @@ -121774,15 +123914,15 @@ "binop": null }, "value": "localMatrix", - "start": 19503, - "end": 19514, + "start": 19784, + "end": 19795, "loc": { "start": { - "line": 578, + "line": 587, "column": 42 }, "end": { - "line": 578, + "line": 587, "column": 53 } } @@ -121800,15 +123940,15 @@ "binop": null, "updateContext": null }, - "start": 19514, - "end": 19515, + "start": 19795, + "end": 19796, "loc": { "start": { - "line": 578, + "line": 587, "column": 53 }, "end": { - "line": 578, + "line": 587, "column": 54 } } @@ -121826,15 +123966,15 @@ "binop": null }, "value": "math", - "start": 19516, - "end": 19520, + "start": 19797, + "end": 19801, "loc": { "start": { - "line": 578, + "line": 587, "column": 55 }, "end": { - "line": 578, + "line": 587, "column": 59 } } @@ -121852,15 +123992,15 @@ "binop": null, "updateContext": null }, - "start": 19520, - "end": 19521, + "start": 19801, + "end": 19802, "loc": { "start": { - "line": 578, + "line": 587, "column": 59 }, "end": { - "line": 578, + "line": 587, "column": 60 } } @@ -121878,15 +124018,15 @@ "binop": null }, "value": "mat4", - "start": 19521, - "end": 19525, + "start": 19802, + "end": 19806, "loc": { "start": { - "line": 578, + "line": 587, "column": 60 }, "end": { - "line": 578, + "line": 587, "column": 64 } } @@ -121903,15 +124043,15 @@ "postfix": false, "binop": null }, - "start": 19525, - "end": 19526, + "start": 19806, + "end": 19807, "loc": { "start": { - "line": 578, + "line": 587, "column": 64 }, "end": { - "line": 578, + "line": 587, "column": 65 } } @@ -121928,15 +124068,15 @@ "postfix": false, "binop": null }, - "start": 19526, - "end": 19527, + "start": 19807, + "end": 19808, "loc": { "start": { - "line": 578, + "line": 587, "column": 65 }, "end": { - "line": 578, + "line": 587, "column": 66 } } @@ -121953,15 +124093,15 @@ "postfix": false, "binop": null }, - "start": 19527, - "end": 19528, + "start": 19808, + "end": 19809, "loc": { "start": { - "line": 578, + "line": 587, "column": 66 }, "end": { - "line": 578, + "line": 587, "column": 67 } } @@ -121979,15 +124119,15 @@ "binop": null, "updateContext": null }, - "start": 19528, - "end": 19529, + "start": 19809, + "end": 19810, "loc": { "start": { - "line": 578, + "line": 587, "column": 67 }, "end": { - "line": 578, + "line": 587, "column": 68 } } @@ -122004,15 +124144,15 @@ "postfix": false, "binop": null }, - "start": 19538, - "end": 19539, + "start": 19819, + "end": 19820, "loc": { "start": { - "line": 579, + "line": 588, "column": 8 }, "end": { - "line": 579, + "line": 588, "column": 9 } } @@ -122032,15 +124172,15 @@ "updateContext": null }, "value": "else", - "start": 19540, - "end": 19544, + "start": 19821, + "end": 19825, "loc": { "start": { - "line": 579, + "line": 588, "column": 10 }, "end": { - "line": 579, + "line": 588, "column": 14 } } @@ -122057,15 +124197,15 @@ "postfix": false, "binop": null }, - "start": 19545, - "end": 19546, + "start": 19826, + "end": 19827, "loc": { "start": { - "line": 579, + "line": 588, "column": 15 }, "end": { - "line": 579, + "line": 588, "column": 16 } } @@ -122083,15 +124223,15 @@ "binop": null }, "value": "matrix", - "start": 19559, - "end": 19565, + "start": 19840, + "end": 19846, "loc": { "start": { - "line": 580, + "line": 589, "column": 12 }, "end": { - "line": 580, + "line": 589, "column": 18 } } @@ -122110,15 +124250,15 @@ "updateContext": null }, "value": "=", - "start": 19566, - "end": 19567, + "start": 19847, + "end": 19848, "loc": { "start": { - "line": 580, + "line": 589, "column": 19 }, "end": { - "line": 580, + "line": 589, "column": 20 } } @@ -122136,15 +124276,15 @@ "binop": null }, "value": "localMatrix", - "start": 19568, - "end": 19579, + "start": 19849, + "end": 19860, "loc": { "start": { - "line": 580, + "line": 589, "column": 21 }, "end": { - "line": 580, + "line": 589, "column": 32 } } @@ -122162,15 +124302,15 @@ "binop": null, "updateContext": null }, - "start": 19579, - "end": 19580, + "start": 19860, + "end": 19861, "loc": { "start": { - "line": 580, + "line": 589, "column": 32 }, "end": { - "line": 580, + "line": 589, "column": 33 } } @@ -122187,15 +124327,15 @@ "postfix": false, "binop": null }, - "start": 19589, - "end": 19590, + "start": 19870, + "end": 19871, "loc": { "start": { - "line": 581, + "line": 590, "column": 8 }, "end": { - "line": 581, + "line": 590, "column": 9 } } @@ -122212,24 +124352,24 @@ "postfix": false, "binop": null }, - "start": 19595, - "end": 19596, + "start": 19876, + "end": 19877, "loc": { "start": { - "line": 582, + "line": 591, "column": 4 }, "end": { - "line": 582, + "line": 591, "column": 5 } } }, { "type": { - "label": "if", - "keyword": "if", - "beforeExpr": false, + "label": "return", + "keyword": "return", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -122239,24 +124379,102 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 19601, - "end": 19603, + "value": "return", + "start": 19882, + "end": 19888, "loc": { "start": { - "line": 583, + "line": 592, "column": 4 }, "end": { - "line": 583, - "column": 6 + "line": 592, + "column": 10 } } }, { "type": { - "label": "(", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "matrix", + "start": 19889, + "end": 19895, + "loc": { + "start": { + "line": 592, + "column": 11 + }, + "end": { + "line": 592, + "column": 17 + } + } + }, + { + "type": { + "label": ";", "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 19895, + "end": 19896, + "loc": { + "start": { + "line": 592, + "column": 17 + }, + "end": { + "line": 592, + "column": 18 + } + } + }, + { + "type": { + "label": "}", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "start": 19897, + "end": 19898, + "loc": { + "start": { + "line": 593, + "column": 0 + }, + "end": { + "line": 593, + "column": 1 + } + } + }, + { + "type": { + "label": "function", + "keyword": "function", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -122265,15 +124483,16 @@ "postfix": false, "binop": null }, - "start": 19604, - "end": 19605, + "value": "function", + "start": 19900, + "end": 19908, "loc": { "start": { - "line": 583, - "column": 7 + "line": 595, + "column": 0 }, "end": { - "line": 583, + "line": 595, "column": 8 } } @@ -122290,43 +124509,42 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 19605, - "end": 19609, + "value": "createPrimitiveHash", + "start": 19909, + "end": 19928, "loc": { "start": { - "line": 583, - "column": 8 + "line": 595, + "column": 9 }, "end": { - "line": 583, - "column": 12 + "line": 595, + "column": 28 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 19609, - "end": 19610, + "start": 19928, + "end": 19929, "loc": { "start": { - "line": 583, - "column": 12 + "line": 595, + "column": 28 }, "end": { - "line": 583, - "column": 13 + "line": 595, + "column": 29 } } }, @@ -122342,17 +124560,17 @@ "postfix": false, "binop": null }, - "value": "scale", - "start": 19610, - "end": 19615, + "value": "primitive", + "start": 19929, + "end": 19938, "loc": { "start": { - "line": 583, - "column": 13 + "line": 595, + "column": 29 }, "end": { - "line": 583, - "column": 18 + "line": 595, + "column": 38 } } }, @@ -122368,16 +124586,16 @@ "postfix": false, "binop": null }, - "start": 19615, - "end": 19616, + "start": 19938, + "end": 19939, "loc": { "start": { - "line": 583, - "column": 18 + "line": 595, + "column": 38 }, "end": { - "line": 583, - "column": 19 + "line": 595, + "column": 39 } } }, @@ -122393,16 +124611,44 @@ "postfix": false, "binop": null }, - "start": 19617, - "end": 19618, + "start": 19940, + "end": 19941, "loc": { "start": { - "line": 583, - "column": 20 + "line": 595, + "column": 40 }, "end": { - "line": 583, - "column": 21 + "line": 595, + "column": 41 + } + } + }, + { + "type": { + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "const", + "start": 19946, + "end": 19951, + "loc": { + "start": { + "line": 596, + "column": 4 + }, + "end": { + "line": 596, + "column": 9 } } }, @@ -122418,17 +124664,17 @@ "postfix": false, "binop": null }, - "value": "localMatrix", - "start": 19627, - "end": 19638, + "value": "hash", + "start": 19952, + "end": 19956, "loc": { "start": { - "line": 584, - "column": 8 + "line": 596, + "column": 10 }, "end": { - "line": 584, - "column": 19 + "line": 596, + "column": 14 } } }, @@ -122446,48 +124692,48 @@ "updateContext": null }, "value": "=", - "start": 19639, - "end": 19640, + "start": 19957, + "end": 19958, "loc": { "start": { - "line": 584, - "column": 20 + "line": 596, + "column": 15 }, "end": { - "line": 584, - "column": 21 + "line": 596, + "column": 16 } } }, { "type": { - "label": "name", - "beforeExpr": false, + "label": "[", + "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 19641, - "end": 19645, + "start": 19959, + "end": 19960, "loc": { "start": { - "line": 584, - "column": 22 + "line": 596, + "column": 17 }, "end": { - "line": 584, - "column": 26 + "line": 596, + "column": 18 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -122498,67 +124744,70 @@ "binop": null, "updateContext": null }, - "start": 19645, - "end": 19646, + "start": 19960, + "end": 19961, "loc": { "start": { - "line": 584, - "column": 26 + "line": 596, + "column": 18 }, "end": { - "line": 584, - "column": 27 + "line": 596, + "column": 19 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "scalingMat4v", - "start": 19646, - "end": 19658, + "start": 19961, + "end": 19962, "loc": { "start": { - "line": 584, - "column": 27 + "line": 596, + "column": 19 }, "end": { - "line": 584, - "column": 39 + "line": 596, + "column": 20 } } }, { "type": { - "label": "(", - "beforeExpr": true, - "startsExpr": true, + "label": "const", + "keyword": "const", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 19658, - "end": 19659, + "value": "const", + "start": 19967, + "end": 19972, "loc": { "start": { - "line": 584, - "column": 39 + "line": 597, + "column": 4 }, "end": { - "line": 584, - "column": 40 + "line": 597, + "column": 9 } } }, @@ -122574,43 +124823,44 @@ "postfix": false, "binop": null }, - "value": "node", - "start": 19659, - "end": 19663, + "value": "attributes", + "start": 19973, + "end": 19983, "loc": { "start": { - "line": 584, - "column": 40 + "line": 597, + "column": 10 }, "end": { - "line": 584, - "column": 44 + "line": 597, + "column": 20 } } }, { "type": { - "label": ".", - "beforeExpr": false, + "label": "=", + "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": false, + "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "start": 19663, - "end": 19664, + "value": "=", + "start": 19984, + "end": 19985, "loc": { "start": { - "line": 584, - "column": 44 + "line": 597, + "column": 21 }, "end": { - "line": 584, - "column": 45 + "line": 597, + "column": 22 } } }, @@ -122624,27 +124874,53 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null + }, + "value": "primitive", + "start": 19986, + "end": 19995, + "loc": { + "start": { + "line": 597, + "column": 23 + }, + "end": { + "line": 597, + "column": 32 + } + } + }, + { + "type": { + "label": ".", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null }, - "value": "scale", - "start": 19664, - "end": 19669, + "start": 19995, + "end": 19996, "loc": { "start": { - "line": 584, - "column": 45 + "line": 597, + "column": 32 }, "end": { - "line": 584, - "column": 50 + "line": 597, + "column": 33 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -122652,16 +124928,17 @@ "postfix": false, "binop": null }, - "start": 19669, - "end": 19670, + "value": "attributes", + "start": 19996, + "end": 20006, "loc": { "start": { - "line": 584, - "column": 50 + "line": 597, + "column": 33 }, "end": { - "line": 584, - "column": 51 + "line": 597, + "column": 43 } } }, @@ -122678,16 +124955,16 @@ "binop": null, "updateContext": null }, - "start": 19670, - "end": 19671, + "start": 20006, + "end": 20007, "loc": { "start": { - "line": 584, - "column": 51 + "line": 597, + "column": 43 }, "end": { - "line": 584, - "column": 52 + "line": 597, + "column": 44 } } }, @@ -122706,16 +124983,16 @@ "updateContext": null }, "value": "if", - "start": 19680, - "end": 19682, + "start": 20012, + "end": 20014, "loc": { "start": { - "line": 585, - "column": 8 + "line": 598, + "column": 4 }, "end": { - "line": 585, - "column": 10 + "line": 598, + "column": 6 } } }, @@ -122731,16 +125008,16 @@ "postfix": false, "binop": null }, - "start": 19683, - "end": 19684, + "start": 20015, + "end": 20016, "loc": { "start": { - "line": 585, - "column": 11 + "line": 598, + "column": 7 }, "end": { - "line": 585, - "column": 12 + "line": 598, + "column": 8 } } }, @@ -122756,16 +125033,16 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 19684, - "end": 19690, + "value": "attributes", + "start": 20016, + "end": 20026, "loc": { "start": { - "line": 585, - "column": 12 + "line": 598, + "column": 8 }, "end": { - "line": 585, + "line": 598, "column": 18 } } @@ -122782,15 +125059,15 @@ "postfix": false, "binop": null }, - "start": 19690, - "end": 19691, + "start": 20026, + "end": 20027, "loc": { "start": { - "line": 585, + "line": 598, "column": 18 }, "end": { - "line": 585, + "line": 598, "column": 19 } } @@ -122807,154 +125084,158 @@ "postfix": false, "binop": null }, - "start": 19692, - "end": 19693, + "start": 20028, + "end": 20029, "loc": { "start": { - "line": 585, + "line": 598, "column": 20 }, "end": { - "line": 585, + "line": 598, "column": 21 } } }, { "type": { - "label": "name", + "label": "for", + "keyword": "for", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, - "isLoop": false, + "isLoop": true, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "matrix", - "start": 19706, - "end": 19712, + "value": "for", + "start": 20038, + "end": 20041, "loc": { "start": { - "line": 586, - "column": 12 + "line": 599, + "column": 8 }, "end": { - "line": 586, - "column": 18 + "line": 599, + "column": 11 } } }, { "type": { - "label": "=", + "label": "(", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "=", - "start": 19713, - "end": 19714, + "start": 20042, + "end": 20043, "loc": { "start": { - "line": 586, - "column": 19 + "line": 599, + "column": 12 }, "end": { - "line": 586, - "column": 20 + "line": 599, + "column": 13 } } }, { "type": { - "label": "name", + "label": "let", + "keyword": "let", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "math", - "start": 19715, - "end": 19719, + "value": "let", + "start": 20043, + "end": 20046, "loc": { "start": { - "line": 586, - "column": 21 + "line": 599, + "column": 13 }, "end": { - "line": 586, - "column": 25 + "line": 599, + "column": 16 } } }, { "type": { - "label": ".", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 19719, - "end": 19720, + "value": "key", + "start": 20047, + "end": 20050, "loc": { "start": { - "line": 586, - "column": 25 + "line": 599, + "column": 17 }, "end": { - "line": 586, - "column": 26 + "line": 599, + "column": 20 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": "in", + "keyword": "in", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": 7, + "updateContext": null }, - "value": "mulMat4", - "start": 19720, - "end": 19727, + "value": "in", + "start": 20051, + "end": 20053, "loc": { "start": { - "line": 586, - "column": 26 + "line": 599, + "column": 21 }, "end": { - "line": 586, - "column": 33 + "line": 599, + "column": 23 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -122963,24 +125244,25 @@ "postfix": false, "binop": null }, - "start": 19727, - "end": 19728, + "value": "attributes", + "start": 20054, + "end": 20064, "loc": { "start": { - "line": 586, - "column": 33 + "line": 599, + "column": 24 }, "end": { - "line": 586, + "line": 599, "column": 34 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -122988,43 +125270,41 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 19728, - "end": 19734, + "start": 20064, + "end": 20065, "loc": { "start": { - "line": 586, + "line": 599, "column": 34 }, "end": { - "line": 586, - "column": 40 + "line": 599, + "column": 35 } } }, { "type": { - "label": ",", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 19734, - "end": 19735, + "start": 20066, + "end": 20067, "loc": { "start": { - "line": 586, - "column": 40 + "line": 599, + "column": 36 }, "end": { - "line": 586, - "column": 41 + "line": 599, + "column": 37 } } }, @@ -123040,24 +125320,24 @@ "postfix": false, "binop": null }, - "value": "localMatrix", - "start": 19736, - "end": 19747, + "value": "hash", + "start": 20080, + "end": 20084, "loc": { "start": { - "line": 586, - "column": 42 + "line": 600, + "column": 12 }, "end": { - "line": 586, - "column": 53 + "line": 600, + "column": 16 } } }, { "type": { - "label": ",", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -123067,16 +125347,16 @@ "binop": null, "updateContext": null }, - "start": 19747, - "end": 19748, + "start": 20084, + "end": 20085, "loc": { "start": { - "line": 586, - "column": 53 + "line": 600, + "column": 16 }, "end": { - "line": 586, - "column": 54 + "line": 600, + "column": 17 } } }, @@ -123092,43 +125372,42 @@ "postfix": false, "binop": null }, - "value": "math", - "start": 19749, - "end": 19753, + "value": "push", + "start": 20085, + "end": 20089, "loc": { "start": { - "line": 586, - "column": 55 + "line": 600, + "column": 17 }, "end": { - "line": 586, - "column": 59 + "line": 600, + "column": 21 } } }, { "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 19753, - "end": 19754, + "start": 20089, + "end": 20090, "loc": { "start": { - "line": 586, - "column": 59 + "line": 600, + "column": 21 }, "end": { - "line": 586, - "column": 60 + "line": 600, + "column": 22 } } }, @@ -123144,23 +125423,23 @@ "postfix": false, "binop": null }, - "value": "mat4", - "start": 19754, - "end": 19758, + "value": "attributes", + "start": 20090, + "end": 20100, "loc": { "start": { - "line": 586, - "column": 60 + "line": 600, + "column": 22 }, "end": { - "line": 586, - "column": 64 + "line": 600, + "column": 32 } } }, { "type": { - "label": "(", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -123168,26 +125447,27 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 19758, - "end": 19759, + "start": 20100, + "end": 20101, "loc": { "start": { - "line": 586, - "column": 64 + "line": 600, + "column": 32 }, "end": { - "line": 586, - "column": 65 + "line": 600, + "column": 33 } } }, { "type": { - "label": ")", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123195,22 +125475,23 @@ "postfix": false, "binop": null }, - "start": 19759, - "end": 19760, + "value": "key", + "start": 20101, + "end": 20104, "loc": { "start": { - "line": 586, - "column": 65 + "line": 600, + "column": 33 }, "end": { - "line": 586, - "column": 66 + "line": 600, + "column": 36 } } }, { "type": { - "label": ")", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -123218,25 +125499,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 19760, - "end": 19761, + "start": 20104, + "end": 20105, "loc": { "start": { - "line": 586, - "column": 66 + "line": 600, + "column": 36 }, "end": { - "line": 586, - "column": 67 + "line": 600, + "column": 37 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -123246,22 +125528,48 @@ "binop": null, "updateContext": null }, - "start": 19761, - "end": 19762, + "start": 20105, + "end": 20106, "loc": { "start": { - "line": 586, - "column": 67 + "line": 600, + "column": 37 }, "end": { - "line": 586, - "column": 68 + "line": 600, + "column": 38 } } }, { "type": { - "label": "}", + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "id", + "start": 20106, + "end": 20108, + "loc": { + "start": { + "line": 600, + "column": 38 + }, + "end": { + "line": 600, + "column": 40 + } + } + }, + { + "type": { + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -123271,23 +125579,22 @@ "postfix": false, "binop": null }, - "start": 19771, - "end": 19772, + "start": 20108, + "end": 20109, "loc": { "start": { - "line": 587, - "column": 8 + "line": 600, + "column": 40 }, "end": { - "line": 587, - "column": 9 + "line": 600, + "column": 41 } } }, { "type": { - "label": "else", - "keyword": "else", + "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -123298,25 +125605,24 @@ "binop": null, "updateContext": null }, - "value": "else", - "start": 19773, - "end": 19777, + "start": 20109, + "end": 20110, "loc": { "start": { - "line": 587, - "column": 10 + "line": 600, + "column": 41 }, "end": { - "line": 587, - "column": 14 + "line": 600, + "column": 42 } } }, { "type": { - "label": "{", - "beforeExpr": true, - "startsExpr": true, + "label": "}", + "beforeExpr": false, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123324,24 +125630,24 @@ "postfix": false, "binop": null }, - "start": 19778, - "end": 19779, + "start": 20119, + "end": 20120, "loc": { "start": { - "line": 587, - "column": 15 + "line": 601, + "column": 8 }, "end": { - "line": 587, - "column": 16 + "line": 601, + "column": 9 } } }, { "type": { - "label": "name", + "label": "}", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123349,44 +125655,44 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 19792, - "end": 19798, + "start": 20125, + "end": 20126, "loc": { "start": { - "line": 588, - "column": 12 + "line": 602, + "column": 4 }, "end": { - "line": 588, - "column": 18 + "line": 602, + "column": 5 } } }, { "type": { - "label": "=", + "label": "return", + "keyword": "return", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 19799, - "end": 19800, + "value": "return", + "start": 20131, + "end": 20137, "loc": { "start": { - "line": 588, - "column": 19 + "line": 603, + "column": 4 }, "end": { - "line": 588, - "column": 20 + "line": 603, + "column": 10 } } }, @@ -123402,24 +125708,24 @@ "postfix": false, "binop": null }, - "value": "localMatrix", - "start": 19801, - "end": 19812, + "value": "hash", + "start": 20138, + "end": 20142, "loc": { "start": { - "line": 588, - "column": 21 + "line": 603, + "column": 11 }, "end": { - "line": 588, - "column": 32 + "line": 603, + "column": 15 } } }, { "type": { - "label": ";", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, @@ -123429,24 +125735,24 @@ "binop": null, "updateContext": null }, - "start": 19812, - "end": 19813, + "start": 20142, + "end": 20143, "loc": { "start": { - "line": 588, - "column": 32 + "line": 603, + "column": 15 }, "end": { - "line": 588, - "column": 33 + "line": 603, + "column": 16 } } }, { "type": { - "label": "}", + "label": "name", "beforeExpr": false, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123454,24 +125760,25 @@ "postfix": false, "binop": null }, - "start": 19822, - "end": 19823, + "value": "join", + "start": 20143, + "end": 20147, "loc": { "start": { - "line": 589, - "column": 8 + "line": 603, + "column": 16 }, "end": { - "line": 589, - "column": 9 + "line": 603, + "column": 20 } } }, { "type": { - "label": "}", - "beforeExpr": false, - "startsExpr": false, + "label": "(", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123479,25 +125786,24 @@ "postfix": false, "binop": null }, - "start": 19828, - "end": 19829, + "start": 20147, + "end": 20148, "loc": { "start": { - "line": 590, - "column": 4 + "line": 603, + "column": 20 }, "end": { - "line": 590, - "column": 5 + "line": 603, + "column": 21 } } }, { "type": { - "label": "return", - "keyword": "return", - "beforeExpr": true, - "startsExpr": false, + "label": "string", + "beforeExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123506,25 +125812,25 @@ "binop": null, "updateContext": null }, - "value": "return", - "start": 19834, - "end": 19840, + "value": ".", + "start": 20148, + "end": 20151, "loc": { "start": { - "line": 591, - "column": 4 + "line": 603, + "column": 21 }, "end": { - "line": 591, - "column": 10 + "line": 603, + "column": 24 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -123532,17 +125838,16 @@ "postfix": false, "binop": null }, - "value": "matrix", - "start": 19841, - "end": 19847, + "start": 20151, + "end": 20152, "loc": { "start": { - "line": 591, - "column": 11 + "line": 603, + "column": 24 }, "end": { - "line": 591, - "column": 17 + "line": 603, + "column": 25 } } }, @@ -123559,16 +125864,16 @@ "binop": null, "updateContext": null }, - "start": 19847, - "end": 19848, + "start": 20152, + "end": 20153, "loc": { "start": { - "line": 591, - "column": 17 + "line": 603, + "column": 25 }, "end": { - "line": 591, - "column": 18 + "line": 603, + "column": 26 } } }, @@ -123584,15 +125889,15 @@ "postfix": false, "binop": null }, - "start": 19849, - "end": 19850, + "start": 20154, + "end": 20155, "loc": { "start": { - "line": 592, + "line": 604, "column": 0 }, "end": { - "line": 592, + "line": 604, "column": 1 } } @@ -123600,15 +125905,15 @@ { "type": "CommentBlock", "value": "*\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n ", - "start": 19852, - "end": 20119, + "start": 20157, + "end": 20424, "loc": { "start": { - "line": 594, + "line": 606, "column": 0 }, "end": { - "line": 601, + "line": 613, "column": 3 } } @@ -123627,15 +125932,15 @@ "binop": null }, "value": "function", - "start": 20120, - "end": 20128, + "start": 20425, + "end": 20433, "loc": { "start": { - "line": 602, + "line": 614, "column": 0 }, "end": { - "line": 602, + "line": 614, "column": 8 } } @@ -123653,15 +125958,15 @@ "binop": null }, "value": "parseNodeMesh", - "start": 20129, - "end": 20142, + "start": 20434, + "end": 20447, "loc": { "start": { - "line": 602, + "line": 614, "column": 9 }, "end": { - "line": 602, + "line": 614, "column": 22 } } @@ -123678,15 +125983,15 @@ "postfix": false, "binop": null }, - "start": 20142, - "end": 20143, + "start": 20447, + "end": 20448, "loc": { "start": { - "line": 602, + "line": 614, "column": 22 }, "end": { - "line": 602, + "line": 614, "column": 23 } } @@ -123704,15 +126009,15 @@ "binop": null }, "value": "node", - "start": 20143, - "end": 20147, + "start": 20448, + "end": 20452, "loc": { "start": { - "line": 602, + "line": 614, "column": 23 }, "end": { - "line": 602, + "line": 614, "column": 27 } } @@ -123730,15 +126035,15 @@ "binop": null, "updateContext": null }, - "start": 20147, - "end": 20148, + "start": 20452, + "end": 20453, "loc": { "start": { - "line": 602, + "line": 614, "column": 27 }, "end": { - "line": 602, + "line": 614, "column": 28 } } @@ -123756,15 +126061,15 @@ "binop": null }, "value": "ctx", - "start": 20149, - "end": 20152, + "start": 20454, + "end": 20457, "loc": { "start": { - "line": 602, + "line": 614, "column": 29 }, "end": { - "line": 602, + "line": 614, "column": 32 } } @@ -123782,15 +126087,15 @@ "binop": null, "updateContext": null }, - "start": 20152, - "end": 20153, + "start": 20457, + "end": 20458, "loc": { "start": { - "line": 602, + "line": 614, "column": 32 }, "end": { - "line": 602, + "line": 614, "column": 33 } } @@ -123808,15 +126113,15 @@ "binop": null }, "value": "matrix", - "start": 20154, - "end": 20160, + "start": 20459, + "end": 20465, "loc": { "start": { - "line": 602, + "line": 614, "column": 34 }, "end": { - "line": 602, + "line": 614, "column": 40 } } @@ -123834,15 +126139,15 @@ "binop": null, "updateContext": null }, - "start": 20160, - "end": 20161, + "start": 20465, + "end": 20466, "loc": { "start": { - "line": 602, + "line": 614, "column": 40 }, "end": { - "line": 602, + "line": 614, "column": 41 } } @@ -123860,15 +126165,15 @@ "binop": null }, "value": "meshIds", - "start": 20162, - "end": 20169, + "start": 20467, + "end": 20474, "loc": { "start": { - "line": 602, + "line": 614, "column": 42 }, "end": { - "line": 602, + "line": 614, "column": 49 } } @@ -123885,15 +126190,15 @@ "postfix": false, "binop": null }, - "start": 20169, - "end": 20170, + "start": 20474, + "end": 20475, "loc": { "start": { - "line": 602, + "line": 614, "column": 49 }, "end": { - "line": 602, + "line": 614, "column": 50 } } @@ -123910,15 +126215,15 @@ "postfix": false, "binop": null }, - "start": 20171, - "end": 20172, + "start": 20476, + "end": 20477, "loc": { "start": { - "line": 602, + "line": 614, "column": 51 }, "end": { - "line": 602, + "line": 614, "column": 52 } } @@ -123938,15 +126243,15 @@ "updateContext": null }, "value": "if", - "start": 20177, - "end": 20179, + "start": 20482, + "end": 20484, "loc": { "start": { - "line": 603, + "line": 615, "column": 4 }, "end": { - "line": 603, + "line": 615, "column": 6 } } @@ -123963,15 +126268,15 @@ "postfix": false, "binop": null }, - "start": 20180, - "end": 20181, + "start": 20485, + "end": 20486, "loc": { "start": { - "line": 603, + "line": 615, "column": 7 }, "end": { - "line": 603, + "line": 615, "column": 8 } } @@ -123990,15 +126295,15 @@ "updateContext": null }, "value": "!", - "start": 20181, - "end": 20182, + "start": 20486, + "end": 20487, "loc": { "start": { - "line": 603, + "line": 615, "column": 8 }, "end": { - "line": 603, + "line": 615, "column": 9 } } @@ -124016,15 +126321,15 @@ "binop": null }, "value": "node", - "start": 20182, - "end": 20186, + "start": 20487, + "end": 20491, "loc": { "start": { - "line": 603, + "line": 615, "column": 9 }, "end": { - "line": 603, + "line": 615, "column": 13 } } @@ -124041,15 +126346,15 @@ "postfix": false, "binop": null }, - "start": 20186, - "end": 20187, + "start": 20491, + "end": 20492, "loc": { "start": { - "line": 603, + "line": 615, "column": 13 }, "end": { - "line": 603, + "line": 615, "column": 14 } } @@ -124066,15 +126371,15 @@ "postfix": false, "binop": null }, - "start": 20188, - "end": 20189, + "start": 20493, + "end": 20494, "loc": { "start": { - "line": 603, + "line": 615, "column": 15 }, "end": { - "line": 603, + "line": 615, "column": 16 } } @@ -124094,15 +126399,15 @@ "updateContext": null }, "value": "return", - "start": 20198, - "end": 20204, + "start": 20503, + "end": 20509, "loc": { "start": { - "line": 604, + "line": 616, "column": 8 }, "end": { - "line": 604, + "line": 616, "column": 14 } } @@ -124120,15 +126425,15 @@ "binop": null, "updateContext": null }, - "start": 20204, - "end": 20205, + "start": 20509, + "end": 20510, "loc": { "start": { - "line": 604, + "line": 616, "column": 14 }, "end": { - "line": 604, + "line": 616, "column": 15 } } @@ -124145,15 +126450,15 @@ "postfix": false, "binop": null }, - "start": 20210, - "end": 20211, + "start": 20515, + "end": 20516, "loc": { "start": { - "line": 605, + "line": 617, "column": 4 }, "end": { - "line": 605, + "line": 617, "column": 5 } } @@ -124173,15 +126478,15 @@ "updateContext": null }, "value": "const", - "start": 20216, - "end": 20221, + "start": 20521, + "end": 20526, "loc": { "start": { - "line": 606, + "line": 618, "column": 4 }, "end": { - "line": 606, + "line": 618, "column": 9 } } @@ -124199,15 +126504,15 @@ "binop": null }, "value": "mesh", - "start": 20222, - "end": 20226, + "start": 20527, + "end": 20531, "loc": { "start": { - "line": 606, + "line": 618, "column": 10 }, "end": { - "line": 606, + "line": 618, "column": 14 } } @@ -124226,15 +126531,15 @@ "updateContext": null }, "value": "=", - "start": 20227, - "end": 20228, + "start": 20532, + "end": 20533, "loc": { "start": { - "line": 606, + "line": 618, "column": 15 }, "end": { - "line": 606, + "line": 618, "column": 16 } } @@ -124252,15 +126557,15 @@ "binop": null }, "value": "node", - "start": 20229, - "end": 20233, + "start": 20534, + "end": 20538, "loc": { "start": { - "line": 606, + "line": 618, "column": 17 }, "end": { - "line": 606, + "line": 618, "column": 21 } } @@ -124278,15 +126583,15 @@ "binop": null, "updateContext": null }, - "start": 20233, - "end": 20234, + "start": 20538, + "end": 20539, "loc": { "start": { - "line": 606, + "line": 618, "column": 21 }, "end": { - "line": 606, + "line": 618, "column": 22 } } @@ -124304,15 +126609,15 @@ "binop": null }, "value": "mesh", - "start": 20234, - "end": 20238, + "start": 20539, + "end": 20543, "loc": { "start": { - "line": 606, + "line": 618, "column": 22 }, "end": { - "line": 606, + "line": 618, "column": 26 } } @@ -124330,15 +126635,15 @@ "binop": null, "updateContext": null }, - "start": 20238, - "end": 20239, + "start": 20543, + "end": 20544, "loc": { "start": { - "line": 606, + "line": 618, "column": 26 }, "end": { - "line": 606, + "line": 618, "column": 27 } } @@ -124358,15 +126663,15 @@ "updateContext": null }, "value": "if", - "start": 20244, - "end": 20246, + "start": 20549, + "end": 20551, "loc": { "start": { - "line": 607, + "line": 619, "column": 4 }, "end": { - "line": 607, + "line": 619, "column": 6 } } @@ -124383,15 +126688,15 @@ "postfix": false, "binop": null }, - "start": 20247, - "end": 20248, + "start": 20552, + "end": 20553, "loc": { "start": { - "line": 607, + "line": 619, "column": 7 }, "end": { - "line": 607, + "line": 619, "column": 8 } } @@ -124410,15 +126715,15 @@ "updateContext": null }, "value": "!", - "start": 20248, - "end": 20249, + "start": 20553, + "end": 20554, "loc": { "start": { - "line": 607, + "line": 619, "column": 8 }, "end": { - "line": 607, + "line": 619, "column": 9 } } @@ -124436,15 +126741,15 @@ "binop": null }, "value": "mesh", - "start": 20249, - "end": 20253, + "start": 20554, + "end": 20558, "loc": { "start": { - "line": 607, + "line": 619, "column": 9 }, "end": { - "line": 607, + "line": 619, "column": 13 } } @@ -124461,15 +126766,15 @@ "postfix": false, "binop": null }, - "start": 20253, - "end": 20254, + "start": 20558, + "end": 20559, "loc": { "start": { - "line": 607, + "line": 619, "column": 13 }, "end": { - "line": 607, + "line": 619, "column": 14 } } @@ -124486,15 +126791,15 @@ "postfix": false, "binop": null }, - "start": 20255, - "end": 20256, + "start": 20560, + "end": 20561, "loc": { "start": { - "line": 607, + "line": 619, "column": 15 }, "end": { - "line": 607, + "line": 619, "column": 16 } } @@ -124514,15 +126819,15 @@ "updateContext": null }, "value": "return", - "start": 20265, - "end": 20271, + "start": 20570, + "end": 20576, "loc": { "start": { - "line": 608, + "line": 620, "column": 8 }, "end": { - "line": 608, + "line": 620, "column": 14 } } @@ -124540,15 +126845,15 @@ "binop": null, "updateContext": null }, - "start": 20271, - "end": 20272, + "start": 20576, + "end": 20577, "loc": { "start": { - "line": 608, + "line": 620, "column": 14 }, "end": { - "line": 608, + "line": 620, "column": 15 } } @@ -124565,15 +126870,15 @@ "postfix": false, "binop": null }, - "start": 20277, - "end": 20278, + "start": 20582, + "end": 20583, "loc": { "start": { - "line": 609, + "line": 621, "column": 4 }, "end": { - "line": 609, + "line": 621, "column": 5 } } @@ -124593,15 +126898,15 @@ "updateContext": null }, "value": "const", - "start": 20283, - "end": 20288, + "start": 20588, + "end": 20593, "loc": { "start": { - "line": 610, + "line": 622, "column": 4 }, "end": { - "line": 610, + "line": 622, "column": 9 } } @@ -124619,15 +126924,15 @@ "binop": null }, "value": "numPrimitives", - "start": 20289, - "end": 20302, + "start": 20594, + "end": 20607, "loc": { "start": { - "line": 610, + "line": 622, "column": 10 }, "end": { - "line": 610, + "line": 622, "column": 23 } } @@ -124646,15 +126951,15 @@ "updateContext": null }, "value": "=", - "start": 20303, - "end": 20304, + "start": 20608, + "end": 20609, "loc": { "start": { - "line": 610, + "line": 622, "column": 24 }, "end": { - "line": 610, + "line": 622, "column": 25 } } @@ -124672,15 +126977,15 @@ "binop": null }, "value": "mesh", - "start": 20305, - "end": 20309, + "start": 20610, + "end": 20614, "loc": { "start": { - "line": 610, + "line": 622, "column": 26 }, "end": { - "line": 610, + "line": 622, "column": 30 } } @@ -124698,15 +127003,15 @@ "binop": null, "updateContext": null }, - "start": 20309, - "end": 20310, + "start": 20614, + "end": 20615, "loc": { "start": { - "line": 610, + "line": 622, "column": 30 }, "end": { - "line": 610, + "line": 622, "column": 31 } } @@ -124724,15 +127029,15 @@ "binop": null }, "value": "primitives", - "start": 20310, - "end": 20320, + "start": 20615, + "end": 20625, "loc": { "start": { - "line": 610, + "line": 622, "column": 31 }, "end": { - "line": 610, + "line": 622, "column": 41 } } @@ -124750,15 +127055,15 @@ "binop": null, "updateContext": null }, - "start": 20320, - "end": 20321, + "start": 20625, + "end": 20626, "loc": { "start": { - "line": 610, + "line": 622, "column": 41 }, "end": { - "line": 610, + "line": 622, "column": 42 } } @@ -124776,15 +127081,15 @@ "binop": null }, "value": "length", - "start": 20321, - "end": 20327, + "start": 20626, + "end": 20632, "loc": { "start": { - "line": 610, + "line": 622, "column": 42 }, "end": { - "line": 610, + "line": 622, "column": 48 } } @@ -124802,15 +127107,15 @@ "binop": null, "updateContext": null }, - "start": 20327, - "end": 20328, + "start": 20632, + "end": 20633, "loc": { "start": { - "line": 610, + "line": 622, "column": 48 }, "end": { - "line": 610, + "line": 622, "column": 49 } } @@ -124830,15 +127135,15 @@ "updateContext": null }, "value": "if", - "start": 20333, - "end": 20335, + "start": 20638, + "end": 20640, "loc": { "start": { - "line": 611, + "line": 623, "column": 4 }, "end": { - "line": 611, + "line": 623, "column": 6 } } @@ -124855,15 +127160,15 @@ "postfix": false, "binop": null }, - "start": 20336, - "end": 20337, + "start": 20641, + "end": 20642, "loc": { "start": { - "line": 611, + "line": 623, "column": 7 }, "end": { - "line": 611, + "line": 623, "column": 8 } } @@ -124881,15 +127186,15 @@ "binop": null }, "value": "numPrimitives", - "start": 20337, - "end": 20350, + "start": 20642, + "end": 20655, "loc": { "start": { - "line": 611, + "line": 623, "column": 8 }, "end": { - "line": 611, + "line": 623, "column": 21 } } @@ -124908,15 +127213,15 @@ "updateContext": null }, "value": ">", - "start": 20351, - "end": 20352, + "start": 20656, + "end": 20657, "loc": { "start": { - "line": 611, + "line": 623, "column": 22 }, "end": { - "line": 611, + "line": 623, "column": 23 } } @@ -124935,15 +127240,15 @@ "updateContext": null }, "value": 0, - "start": 20353, - "end": 20354, + "start": 20658, + "end": 20659, "loc": { "start": { - "line": 611, + "line": 623, "column": 24 }, "end": { - "line": 611, + "line": 623, "column": 25 } } @@ -124960,15 +127265,15 @@ "postfix": false, "binop": null }, - "start": 20354, - "end": 20355, + "start": 20659, + "end": 20660, "loc": { "start": { - "line": 611, + "line": 623, "column": 25 }, "end": { - "line": 611, + "line": 623, "column": 26 } } @@ -124985,15 +127290,15 @@ "postfix": false, "binop": null }, - "start": 20356, - "end": 20357, + "start": 20661, + "end": 20662, "loc": { "start": { - "line": 611, + "line": 623, "column": 27 }, "end": { - "line": 611, + "line": 623, "column": 28 } } @@ -125013,15 +127318,15 @@ "updateContext": null }, "value": "for", - "start": 20366, - "end": 20369, + "start": 20671, + "end": 20674, "loc": { "start": { - "line": 612, + "line": 624, "column": 8 }, "end": { - "line": 612, + "line": 624, "column": 11 } } @@ -125038,15 +127343,15 @@ "postfix": false, "binop": null }, - "start": 20370, - "end": 20371, + "start": 20675, + "end": 20676, "loc": { "start": { - "line": 612, + "line": 624, "column": 12 }, "end": { - "line": 612, + "line": 624, "column": 13 } } @@ -125066,15 +127371,15 @@ "updateContext": null }, "value": "let", - "start": 20371, - "end": 20374, + "start": 20676, + "end": 20679, "loc": { "start": { - "line": 612, + "line": 624, "column": 13 }, "end": { - "line": 612, + "line": 624, "column": 16 } } @@ -125092,15 +127397,15 @@ "binop": null }, "value": "i", - "start": 20375, - "end": 20376, + "start": 20680, + "end": 20681, "loc": { "start": { - "line": 612, + "line": 624, "column": 17 }, "end": { - "line": 612, + "line": 624, "column": 18 } } @@ -125119,15 +127424,15 @@ "updateContext": null }, "value": "=", - "start": 20377, - "end": 20378, + "start": 20682, + "end": 20683, "loc": { "start": { - "line": 612, + "line": 624, "column": 19 }, "end": { - "line": 612, + "line": 624, "column": 20 } } @@ -125146,15 +127451,15 @@ "updateContext": null }, "value": 0, - "start": 20379, - "end": 20380, + "start": 20684, + "end": 20685, "loc": { "start": { - "line": 612, + "line": 624, "column": 21 }, "end": { - "line": 612, + "line": 624, "column": 22 } } @@ -125172,15 +127477,15 @@ "binop": null, "updateContext": null }, - "start": 20380, - "end": 20381, + "start": 20685, + "end": 20686, "loc": { "start": { - "line": 612, + "line": 624, "column": 22 }, "end": { - "line": 612, + "line": 624, "column": 23 } } @@ -125198,15 +127503,15 @@ "binop": null }, "value": "i", - "start": 20382, - "end": 20383, + "start": 20687, + "end": 20688, "loc": { "start": { - "line": 612, + "line": 624, "column": 24 }, "end": { - "line": 612, + "line": 624, "column": 25 } } @@ -125225,15 +127530,15 @@ "updateContext": null }, "value": "<", - "start": 20384, - "end": 20385, + "start": 20689, + "end": 20690, "loc": { "start": { - "line": 612, + "line": 624, "column": 26 }, "end": { - "line": 612, + "line": 624, "column": 27 } } @@ -125251,15 +127556,15 @@ "binop": null }, "value": "numPrimitives", - "start": 20386, - "end": 20399, + "start": 20691, + "end": 20704, "loc": { "start": { - "line": 612, + "line": 624, "column": 28 }, "end": { - "line": 612, + "line": 624, "column": 41 } } @@ -125277,15 +127582,15 @@ "binop": null, "updateContext": null }, - "start": 20399, - "end": 20400, + "start": 20704, + "end": 20705, "loc": { "start": { - "line": 612, + "line": 624, "column": 41 }, "end": { - "line": 612, + "line": 624, "column": 42 } } @@ -125303,15 +127608,15 @@ "binop": null }, "value": "i", - "start": 20401, - "end": 20402, + "start": 20706, + "end": 20707, "loc": { "start": { - "line": 612, + "line": 624, "column": 43 }, "end": { - "line": 612, + "line": 624, "column": 44 } } @@ -125329,15 +127634,15 @@ "binop": null }, "value": "++", - "start": 20402, - "end": 20404, + "start": 20707, + "end": 20709, "loc": { "start": { - "line": 612, + "line": 624, "column": 44 }, "end": { - "line": 612, + "line": 624, "column": 46 } } @@ -125354,15 +127659,15 @@ "postfix": false, "binop": null }, - "start": 20404, - "end": 20405, + "start": 20709, + "end": 20710, "loc": { "start": { - "line": 612, + "line": 624, "column": 46 }, "end": { - "line": 612, + "line": 624, "column": 47 } } @@ -125379,15 +127684,15 @@ "postfix": false, "binop": null }, - "start": 20406, - "end": 20407, + "start": 20711, + "end": 20712, "loc": { "start": { - "line": 612, + "line": 624, "column": 48 }, "end": { - "line": 612, + "line": 624, "column": 49 } } @@ -125407,15 +127712,15 @@ "updateContext": null }, "value": "try", - "start": 20420, - "end": 20423, + "start": 20725, + "end": 20728, "loc": { "start": { - "line": 613, + "line": 625, "column": 12 }, "end": { - "line": 613, + "line": 625, "column": 15 } } @@ -125432,15 +127737,15 @@ "postfix": false, "binop": null }, - "start": 20424, - "end": 20425, + "start": 20729, + "end": 20730, "loc": { "start": { - "line": 613, + "line": 625, "column": 16 }, "end": { - "line": 613, + "line": 625, "column": 17 } } @@ -125460,15 +127765,15 @@ "updateContext": null }, "value": "const", - "start": 20442, - "end": 20447, + "start": 20747, + "end": 20752, "loc": { "start": { - "line": 614, + "line": 626, "column": 16 }, "end": { - "line": 614, + "line": 626, "column": 21 } } @@ -125486,15 +127791,15 @@ "binop": null }, "value": "primitive", - "start": 20448, - "end": 20457, + "start": 20753, + "end": 20762, "loc": { "start": { - "line": 614, + "line": 626, "column": 22 }, "end": { - "line": 614, + "line": 626, "column": 31 } } @@ -125513,15 +127818,15 @@ "updateContext": null }, "value": "=", - "start": 20458, - "end": 20459, + "start": 20763, + "end": 20764, "loc": { "start": { - "line": 614, + "line": 626, "column": 32 }, "end": { - "line": 614, + "line": 626, "column": 33 } } @@ -125539,15 +127844,15 @@ "binop": null }, "value": "mesh", - "start": 20460, - "end": 20464, + "start": 20765, + "end": 20769, "loc": { "start": { - "line": 614, + "line": 626, "column": 34 }, "end": { - "line": 614, + "line": 626, "column": 38 } } @@ -125565,15 +127870,15 @@ "binop": null, "updateContext": null }, - "start": 20464, - "end": 20465, + "start": 20769, + "end": 20770, "loc": { "start": { - "line": 614, + "line": 626, "column": 38 }, "end": { - "line": 614, + "line": 626, "column": 39 } } @@ -125591,15 +127896,15 @@ "binop": null }, "value": "primitives", - "start": 20465, - "end": 20475, + "start": 20770, + "end": 20780, "loc": { "start": { - "line": 614, + "line": 626, "column": 39 }, "end": { - "line": 614, + "line": 626, "column": 49 } } @@ -125617,15 +127922,15 @@ "binop": null, "updateContext": null }, - "start": 20475, - "end": 20476, + "start": 20780, + "end": 20781, "loc": { "start": { - "line": 614, + "line": 626, "column": 49 }, "end": { - "line": 614, + "line": 626, "column": 50 } } @@ -125643,15 +127948,15 @@ "binop": null }, "value": "i", - "start": 20476, - "end": 20477, + "start": 20781, + "end": 20782, "loc": { "start": { - "line": 614, + "line": 626, "column": 50 }, "end": { - "line": 614, + "line": 626, "column": 51 } } @@ -125669,15 +127974,15 @@ "binop": null, "updateContext": null }, - "start": 20477, - "end": 20478, + "start": 20782, + "end": 20783, "loc": { "start": { - "line": 614, + "line": 626, "column": 51 }, "end": { - "line": 614, + "line": 626, "column": 52 } } @@ -125695,23 +128000,23 @@ "binop": null, "updateContext": null }, - "start": 20478, - "end": 20479, + "start": 20783, + "end": 20784, "loc": { "start": { - "line": 614, + "line": 626, "column": 52 }, "end": { - "line": 614, + "line": 626, "column": 53 } } }, { "type": { - "label": "if", - "keyword": "if", + "label": "const", + "keyword": "const", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -125722,24 +128027,77 @@ "binop": null, "updateContext": null }, - "value": "if", - "start": 20496, - "end": 20498, + "value": "const", + "start": 20801, + "end": 20806, + "loc": { + "start": { + "line": 627, + "column": 16 + }, + "end": { + "line": 627, + "column": 21 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "geometryId", + "start": 20807, + "end": 20817, + "loc": { + "start": { + "line": 627, + "column": 22 + }, + "end": { + "line": 627, + "column": 32 + } + } + }, + { + "type": { + "label": "=", + "beforeExpr": true, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": true, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "value": "=", + "start": 20818, + "end": 20819, "loc": { "start": { - "line": 615, - "column": 16 + "line": 627, + "column": 33 }, "end": { - "line": 615, - "column": 18 + "line": 627, + "column": 34 } } }, { "type": { - "label": "(", - "beforeExpr": true, + "label": "name", + "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, @@ -125748,43 +128106,42 @@ "postfix": false, "binop": null }, - "start": 20499, - "end": 20500, + "value": "createPrimitiveHash", + "start": 20820, + "end": 20839, "loc": { "start": { - "line": 615, - "column": 19 + "line": 627, + "column": 35 }, "end": { - "line": 615, - "column": 20 + "line": 627, + "column": 54 } } }, { "type": { - "label": "prefix", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "!", - "start": 20500, - "end": 20501, + "start": 20839, + "end": 20840, "loc": { "start": { - "line": 615, - "column": 20 + "line": 627, + "column": 54 }, "end": { - "line": 615, - "column": 21 + "line": 627, + "column": 55 } } }, @@ -125801,22 +128158,22 @@ "binop": null }, "value": "primitive", - "start": 20501, - "end": 20510, + "start": 20840, + "end": 20849, "loc": { "start": { - "line": 615, - "column": 21 + "line": 627, + "column": 55 }, "end": { - "line": 615, - "column": 30 + "line": 627, + "column": 64 } } }, { "type": { - "label": ".", + "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -125824,51 +128181,51 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 20510, - "end": 20511, + "start": 20849, + "end": 20850, "loc": { "start": { - "line": 615, - "column": 30 + "line": 627, + "column": 64 }, "end": { - "line": 615, - "column": 31 + "line": 627, + "column": 65 } } }, { "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, + "label": ";", + "beforeExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "_xktGeometryId", - "start": 20511, - "end": 20525, + "start": 20850, + "end": 20851, "loc": { "start": { - "line": 615, - "column": 31 + "line": 627, + "column": 65 }, "end": { - "line": 615, - "column": 45 + "line": 627, + "column": 66 } } }, { "type": { - "label": ")", + "label": "if", + "keyword": "if", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -125876,24 +128233,26 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "start": 20525, - "end": 20526, + "value": "if", + "start": 20868, + "end": 20870, "loc": { "start": { - "line": 615, - "column": 45 + "line": 628, + "column": 16 }, "end": { - "line": 615, - "column": 46 + "line": 628, + "column": 18 } } }, { "type": { - "label": "{", + "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, @@ -125903,44 +128262,43 @@ "postfix": false, "binop": null }, - "start": 20527, - "end": 20528, + "start": 20871, + "end": 20872, "loc": { "start": { - "line": 615, - "column": 47 + "line": 628, + "column": 19 }, "end": { - "line": 615, - "column": 48 + "line": 628, + "column": 20 } } }, { "type": { - "label": "const", - "keyword": "const", - "beforeExpr": false, - "startsExpr": false, + "label": "prefix", + "beforeExpr": true, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": false, + "prefix": true, "postfix": false, "binop": null, "updateContext": null }, - "value": "const", - "start": 20549, - "end": 20554, + "value": "!", + "start": 20872, + "end": 20873, "loc": { "start": { - "line": 616, + "line": 628, "column": 20 }, "end": { - "line": 616, - "column": 25 + "line": 628, + "column": 21 } } }, @@ -125956,50 +128314,49 @@ "postfix": false, "binop": null }, - "value": "xktGeometryId", - "start": 20555, - "end": 20568, + "value": "ctx", + "start": 20873, + "end": 20876, "loc": { "start": { - "line": 616, - "column": 26 + "line": 628, + "column": 21 }, "end": { - "line": 616, - "column": 39 + "line": 628, + "column": 24 } } }, { "type": { - "label": "=", - "beforeExpr": true, + "label": ".", + "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, - "isAssign": true, + "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, - "value": "=", - "start": 20569, - "end": 20570, + "start": 20876, + "end": 20877, "loc": { "start": { - "line": 616, - "column": 40 + "line": 628, + "column": 24 }, "end": { - "line": 616, - "column": 41 + "line": 628, + "column": 25 } } }, { "type": { - "label": "string", + "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -126007,47 +128364,45 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "value": "geometry-", - "start": 20571, - "end": 20582, + "value": "geometriesCreated", + "start": 20877, + "end": 20894, "loc": { "start": { - "line": 616, - "column": 42 + "line": 628, + "column": 25 }, "end": { - "line": 616, - "column": 53 + "line": 628, + "column": 42 } } }, { "type": { - "label": "+/-", + "label": "[", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, - "prefix": true, + "prefix": false, "postfix": false, - "binop": 9, + "binop": null, "updateContext": null }, - "value": "+", - "start": 20583, - "end": 20584, + "start": 20894, + "end": 20895, "loc": { "start": { - "line": 616, - "column": 54 + "line": 628, + "column": 42 }, "end": { - "line": 616, - "column": 55 + "line": 628, + "column": 43 } } }, @@ -126063,23 +128418,23 @@ "postfix": false, "binop": null }, - "value": "ctx", - "start": 20585, - "end": 20588, + "value": "geometryId", + "start": 20895, + "end": 20905, "loc": { "start": { - "line": 616, - "column": 56 + "line": 628, + "column": 43 }, "end": { - "line": 616, - "column": 59 + "line": 628, + "column": 53 } } }, { "type": { - "label": ".", + "label": "]", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, @@ -126090,24 +128445,24 @@ "binop": null, "updateContext": null }, - "start": 20588, - "end": 20589, + "start": 20905, + "end": 20906, "loc": { "start": { - "line": 616, - "column": 59 + "line": 628, + "column": 53 }, "end": { - "line": 616, - "column": 60 + "line": 628, + "column": 54 } } }, { "type": { - "label": "name", + "label": ")", "beforeExpr": false, - "startsExpr": true, + "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, @@ -126115,69 +128470,41 @@ "postfix": false, "binop": null }, - "value": "nextId", - "start": 20589, - "end": 20595, - "loc": { - "start": { - "line": 616, - "column": 60 - }, - "end": { - "line": 616, - "column": 66 - } - } - }, - { - "type": { - "label": "++/--", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": true, - "postfix": true, - "binop": null - }, - "value": "++", - "start": 20595, - "end": 20597, + "start": 20906, + "end": 20907, "loc": { "start": { - "line": 616, - "column": 66 + "line": 628, + "column": 54 }, "end": { - "line": 616, - "column": 68 + "line": 628, + "column": 55 } } }, { "type": { - "label": ";", + "label": "{", "beforeExpr": true, - "startsExpr": false, + "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, - "binop": null, - "updateContext": null + "binop": null }, - "start": 20597, - "end": 20598, + "start": 20908, + "end": 20909, "loc": { "start": { - "line": 616, - "column": 68 + "line": 628, + "column": 56 }, "end": { - "line": 616, - "column": 69 + "line": 628, + "column": 57 } } }, @@ -126196,15 +128523,15 @@ "updateContext": null }, "value": "const", - "start": 20619, - "end": 20624, + "start": 20930, + "end": 20935, "loc": { "start": { - "line": 617, + "line": 629, "column": 20 }, "end": { - "line": 617, + "line": 629, "column": 25 } } @@ -126222,15 +128549,15 @@ "binop": null }, "value": "geometryCfg", - "start": 20625, - "end": 20636, + "start": 20936, + "end": 20947, "loc": { "start": { - "line": 617, + "line": 629, "column": 26 }, "end": { - "line": 617, + "line": 629, "column": 37 } } @@ -126249,15 +128576,15 @@ "updateContext": null }, "value": "=", - "start": 20637, - "end": 20638, + "start": 20948, + "end": 20949, "loc": { "start": { - "line": 617, + "line": 629, "column": 38 }, "end": { - "line": 617, + "line": 629, "column": 39 } } @@ -126274,15 +128601,15 @@ "postfix": false, "binop": null }, - "start": 20639, - "end": 20640, + "start": 20950, + "end": 20951, "loc": { "start": { - "line": 617, + "line": 629, "column": 40 }, "end": { - "line": 617, + "line": 629, "column": 41 } } @@ -126300,68 +128627,16 @@ "binop": null }, "value": "geometryId", - "start": 20665, - "end": 20675, + "start": 20976, + "end": 20986, "loc": { "start": { - "line": 618, + "line": 630, "column": 24 }, "end": { - "line": 618, - "column": 34 - } - } - }, - { - "type": { - "label": ":", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 20675, - "end": 20676, - "loc": { - "start": { - "line": 618, + "line": 630, "column": 34 - }, - "end": { - "line": 618, - "column": 35 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "xktGeometryId", - "start": 20677, - "end": 20690, - "loc": { - "start": { - "line": 618, - "column": 36 - }, - "end": { - "line": 618, - "column": 49 } } }, @@ -126377,15 +128652,15 @@ "postfix": false, "binop": null }, - "start": 20711, - "end": 20712, + "start": 21007, + "end": 21008, "loc": { "start": { - "line": 619, + "line": 631, "column": 20 }, "end": { - "line": 619, + "line": 631, "column": 21 } } @@ -126403,15 +128678,15 @@ "binop": null, "updateContext": null }, - "start": 20712, - "end": 20713, + "start": 21008, + "end": 21009, "loc": { "start": { - "line": 619, + "line": 631, "column": 21 }, "end": { - "line": 619, + "line": 631, "column": 22 } } @@ -126431,15 +128706,15 @@ "updateContext": null }, "value": "switch", - "start": 20734, - "end": 20740, + "start": 21030, + "end": 21036, "loc": { "start": { - "line": 620, + "line": 632, "column": 20 }, "end": { - "line": 620, + "line": 632, "column": 26 } } @@ -126456,15 +128731,15 @@ "postfix": false, "binop": null }, - "start": 20741, - "end": 20742, + "start": 21037, + "end": 21038, "loc": { "start": { - "line": 620, + "line": 632, "column": 27 }, "end": { - "line": 620, + "line": 632, "column": 28 } } @@ -126482,15 +128757,15 @@ "binop": null }, "value": "primitive", - "start": 20742, - "end": 20751, + "start": 21038, + "end": 21047, "loc": { "start": { - "line": 620, + "line": 632, "column": 28 }, "end": { - "line": 620, + "line": 632, "column": 37 } } @@ -126508,15 +128783,15 @@ "binop": null, "updateContext": null }, - "start": 20751, - "end": 20752, + "start": 21047, + "end": 21048, "loc": { "start": { - "line": 620, + "line": 632, "column": 37 }, "end": { - "line": 620, + "line": 632, "column": 38 } } @@ -126534,15 +128809,15 @@ "binop": null }, "value": "mode", - "start": 20752, - "end": 20756, + "start": 21048, + "end": 21052, "loc": { "start": { - "line": 620, + "line": 632, "column": 38 }, "end": { - "line": 620, + "line": 632, "column": 42 } } @@ -126559,15 +128834,15 @@ "postfix": false, "binop": null }, - "start": 20756, - "end": 20757, + "start": 21052, + "end": 21053, "loc": { "start": { - "line": 620, + "line": 632, "column": 42 }, "end": { - "line": 620, + "line": 632, "column": 43 } } @@ -126584,15 +128859,15 @@ "postfix": false, "binop": null }, - "start": 20758, - "end": 20759, + "start": 21054, + "end": 21055, "loc": { "start": { - "line": 620, + "line": 632, "column": 44 }, "end": { - "line": 620, + "line": 632, "column": 45 } } @@ -126612,15 +128887,15 @@ "updateContext": null }, "value": "case", - "start": 20784, - "end": 20788, + "start": 21080, + "end": 21084, "loc": { "start": { - "line": 621, + "line": 633, "column": 24 }, "end": { - "line": 621, + "line": 633, "column": 28 } } @@ -126639,15 +128914,15 @@ "updateContext": null }, "value": 0, - "start": 20789, - "end": 20790, + "start": 21085, + "end": 21086, "loc": { "start": { - "line": 621, + "line": 633, "column": 29 }, "end": { - "line": 621, + "line": 633, "column": 30 } } @@ -126665,15 +128940,15 @@ "binop": null, "updateContext": null }, - "start": 20790, - "end": 20791, + "start": 21086, + "end": 21087, "loc": { "start": { - "line": 621, + "line": 633, "column": 30 }, "end": { - "line": 621, + "line": 633, "column": 31 } } @@ -126681,15 +128956,15 @@ { "type": "CommentLine", "value": " POINTS", - "start": 20792, - "end": 20801, + "start": 21088, + "end": 21097, "loc": { "start": { - "line": 621, + "line": 633, "column": 32 }, "end": { - "line": 621, + "line": 633, "column": 41 } } @@ -126707,15 +128982,15 @@ "binop": null }, "value": "geometryCfg", - "start": 20830, - "end": 20841, + "start": 21126, + "end": 21137, "loc": { "start": { - "line": 622, + "line": 634, "column": 28 }, "end": { - "line": 622, + "line": 634, "column": 39 } } @@ -126733,15 +129008,15 @@ "binop": null, "updateContext": null }, - "start": 20841, - "end": 20842, + "start": 21137, + "end": 21138, "loc": { "start": { - "line": 622, + "line": 634, "column": 39 }, "end": { - "line": 622, + "line": 634, "column": 40 } } @@ -126759,15 +129034,15 @@ "binop": null }, "value": "primitiveType", - "start": 20842, - "end": 20855, + "start": 21138, + "end": 21151, "loc": { "start": { - "line": 622, + "line": 634, "column": 40 }, "end": { - "line": 622, + "line": 634, "column": 53 } } @@ -126786,15 +129061,15 @@ "updateContext": null }, "value": "=", - "start": 20856, - "end": 20857, + "start": 21152, + "end": 21153, "loc": { "start": { - "line": 622, + "line": 634, "column": 54 }, "end": { - "line": 622, + "line": 634, "column": 55 } } @@ -126813,15 +129088,15 @@ "updateContext": null }, "value": "points", - "start": 20858, - "end": 20866, + "start": 21154, + "end": 21162, "loc": { "start": { - "line": 622, + "line": 634, "column": 56 }, "end": { - "line": 622, + "line": 634, "column": 64 } } @@ -126839,15 +129114,15 @@ "binop": null, "updateContext": null }, - "start": 20866, - "end": 20867, + "start": 21162, + "end": 21163, "loc": { "start": { - "line": 622, + "line": 634, "column": 64 }, "end": { - "line": 622, + "line": 634, "column": 65 } } @@ -126867,15 +129142,15 @@ "updateContext": null }, "value": "break", - "start": 20896, - "end": 20901, + "start": 21192, + "end": 21197, "loc": { "start": { - "line": 623, + "line": 635, "column": 28 }, "end": { - "line": 623, + "line": 635, "column": 33 } } @@ -126893,15 +129168,15 @@ "binop": null, "updateContext": null }, - "start": 20901, - "end": 20902, + "start": 21197, + "end": 21198, "loc": { "start": { - "line": 623, + "line": 635, "column": 33 }, "end": { - "line": 623, + "line": 635, "column": 34 } } @@ -126921,15 +129196,15 @@ "updateContext": null }, "value": "case", - "start": 20927, - "end": 20931, + "start": 21223, + "end": 21227, "loc": { "start": { - "line": 624, + "line": 636, "column": 24 }, "end": { - "line": 624, + "line": 636, "column": 28 } } @@ -126948,15 +129223,15 @@ "updateContext": null }, "value": 1, - "start": 20932, - "end": 20933, + "start": 21228, + "end": 21229, "loc": { "start": { - "line": 624, + "line": 636, "column": 29 }, "end": { - "line": 624, + "line": 636, "column": 30 } } @@ -126974,15 +129249,15 @@ "binop": null, "updateContext": null }, - "start": 20933, - "end": 20934, + "start": 21229, + "end": 21230, "loc": { "start": { - "line": 624, + "line": 636, "column": 30 }, "end": { - "line": 624, + "line": 636, "column": 31 } } @@ -126990,15 +129265,15 @@ { "type": "CommentLine", "value": " LINES", - "start": 20935, - "end": 20943, + "start": 21231, + "end": 21239, "loc": { "start": { - "line": 624, + "line": 636, "column": 32 }, "end": { - "line": 624, + "line": 636, "column": 40 } } @@ -127016,15 +129291,15 @@ "binop": null }, "value": "geometryCfg", - "start": 20972, - "end": 20983, + "start": 21268, + "end": 21279, "loc": { "start": { - "line": 625, + "line": 637, "column": 28 }, "end": { - "line": 625, + "line": 637, "column": 39 } } @@ -127042,15 +129317,15 @@ "binop": null, "updateContext": null }, - "start": 20983, - "end": 20984, + "start": 21279, + "end": 21280, "loc": { "start": { - "line": 625, + "line": 637, "column": 39 }, "end": { - "line": 625, + "line": 637, "column": 40 } } @@ -127068,15 +129343,15 @@ "binop": null }, "value": "primitiveType", - "start": 20984, - "end": 20997, + "start": 21280, + "end": 21293, "loc": { "start": { - "line": 625, + "line": 637, "column": 40 }, "end": { - "line": 625, + "line": 637, "column": 53 } } @@ -127095,15 +129370,15 @@ "updateContext": null }, "value": "=", - "start": 20998, - "end": 20999, + "start": 21294, + "end": 21295, "loc": { "start": { - "line": 625, + "line": 637, "column": 54 }, "end": { - "line": 625, + "line": 637, "column": 55 } } @@ -127122,15 +129397,15 @@ "updateContext": null }, "value": "lines", - "start": 21000, - "end": 21007, + "start": 21296, + "end": 21303, "loc": { "start": { - "line": 625, + "line": 637, "column": 56 }, "end": { - "line": 625, + "line": 637, "column": 63 } } @@ -127148,15 +129423,15 @@ "binop": null, "updateContext": null }, - "start": 21007, - "end": 21008, + "start": 21303, + "end": 21304, "loc": { "start": { - "line": 625, + "line": 637, "column": 63 }, "end": { - "line": 625, + "line": 637, "column": 64 } } @@ -127176,15 +129451,15 @@ "updateContext": null }, "value": "break", - "start": 21037, - "end": 21042, + "start": 21333, + "end": 21338, "loc": { "start": { - "line": 626, + "line": 638, "column": 28 }, "end": { - "line": 626, + "line": 638, "column": 33 } } @@ -127202,15 +129477,15 @@ "binop": null, "updateContext": null }, - "start": 21042, - "end": 21043, + "start": 21338, + "end": 21339, "loc": { "start": { - "line": 626, + "line": 638, "column": 33 }, "end": { - "line": 626, + "line": 638, "column": 34 } } @@ -127230,15 +129505,15 @@ "updateContext": null }, "value": "case", - "start": 21068, - "end": 21072, + "start": 21364, + "end": 21368, "loc": { "start": { - "line": 627, + "line": 639, "column": 24 }, "end": { - "line": 627, + "line": 639, "column": 28 } } @@ -127257,15 +129532,15 @@ "updateContext": null }, "value": 2, - "start": 21073, - "end": 21074, + "start": 21369, + "end": 21370, "loc": { "start": { - "line": 627, + "line": 639, "column": 29 }, "end": { - "line": 627, + "line": 639, "column": 30 } } @@ -127283,15 +129558,15 @@ "binop": null, "updateContext": null }, - "start": 21074, - "end": 21075, + "start": 21370, + "end": 21371, "loc": { "start": { - "line": 627, + "line": 639, "column": 30 }, "end": { - "line": 627, + "line": 639, "column": 31 } } @@ -127299,15 +129574,15 @@ { "type": "CommentLine", "value": " LINE_LOOP", - "start": 21076, - "end": 21088, + "start": 21372, + "end": 21384, "loc": { "start": { - "line": 627, + "line": 639, "column": 32 }, "end": { - "line": 627, + "line": 639, "column": 44 } } @@ -127325,15 +129600,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21117, - "end": 21128, + "start": 21413, + "end": 21424, "loc": { "start": { - "line": 628, + "line": 640, "column": 28 }, "end": { - "line": 628, + "line": 640, "column": 39 } } @@ -127351,15 +129626,15 @@ "binop": null, "updateContext": null }, - "start": 21128, - "end": 21129, + "start": 21424, + "end": 21425, "loc": { "start": { - "line": 628, + "line": 640, "column": 39 }, "end": { - "line": 628, + "line": 640, "column": 40 } } @@ -127377,15 +129652,15 @@ "binop": null }, "value": "primitiveType", - "start": 21129, - "end": 21142, + "start": 21425, + "end": 21438, "loc": { "start": { - "line": 628, + "line": 640, "column": 40 }, "end": { - "line": 628, + "line": 640, "column": 53 } } @@ -127404,15 +129679,15 @@ "updateContext": null }, "value": "=", - "start": 21143, - "end": 21144, + "start": 21439, + "end": 21440, "loc": { "start": { - "line": 628, + "line": 640, "column": 54 }, "end": { - "line": 628, + "line": 640, "column": 55 } } @@ -127431,15 +129706,15 @@ "updateContext": null }, "value": "line-loop", - "start": 21145, - "end": 21156, + "start": 21441, + "end": 21452, "loc": { "start": { - "line": 628, + "line": 640, "column": 56 }, "end": { - "line": 628, + "line": 640, "column": 67 } } @@ -127457,15 +129732,15 @@ "binop": null, "updateContext": null }, - "start": 21156, - "end": 21157, + "start": 21452, + "end": 21453, "loc": { "start": { - "line": 628, + "line": 640, "column": 67 }, "end": { - "line": 628, + "line": 640, "column": 68 } } @@ -127485,15 +129760,15 @@ "updateContext": null }, "value": "break", - "start": 21186, - "end": 21191, + "start": 21482, + "end": 21487, "loc": { "start": { - "line": 629, + "line": 641, "column": 28 }, "end": { - "line": 629, + "line": 641, "column": 33 } } @@ -127511,15 +129786,15 @@ "binop": null, "updateContext": null }, - "start": 21191, - "end": 21192, + "start": 21487, + "end": 21488, "loc": { "start": { - "line": 629, + "line": 641, "column": 33 }, "end": { - "line": 629, + "line": 641, "column": 34 } } @@ -127539,15 +129814,15 @@ "updateContext": null }, "value": "case", - "start": 21217, - "end": 21221, + "start": 21513, + "end": 21517, "loc": { "start": { - "line": 630, + "line": 642, "column": 24 }, "end": { - "line": 630, + "line": 642, "column": 28 } } @@ -127566,15 +129841,15 @@ "updateContext": null }, "value": 3, - "start": 21222, - "end": 21223, + "start": 21518, + "end": 21519, "loc": { "start": { - "line": 630, + "line": 642, "column": 29 }, "end": { - "line": 630, + "line": 642, "column": 30 } } @@ -127592,15 +129867,15 @@ "binop": null, "updateContext": null }, - "start": 21223, - "end": 21224, + "start": 21519, + "end": 21520, "loc": { "start": { - "line": 630, + "line": 642, "column": 30 }, "end": { - "line": 630, + "line": 642, "column": 31 } } @@ -127608,15 +129883,15 @@ { "type": "CommentLine", "value": " LINE_STRIP", - "start": 21225, - "end": 21238, + "start": 21521, + "end": 21534, "loc": { "start": { - "line": 630, + "line": 642, "column": 32 }, "end": { - "line": 630, + "line": 642, "column": 45 } } @@ -127634,15 +129909,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21267, - "end": 21278, + "start": 21563, + "end": 21574, "loc": { "start": { - "line": 631, + "line": 643, "column": 28 }, "end": { - "line": 631, + "line": 643, "column": 39 } } @@ -127660,15 +129935,15 @@ "binop": null, "updateContext": null }, - "start": 21278, - "end": 21279, + "start": 21574, + "end": 21575, "loc": { "start": { - "line": 631, + "line": 643, "column": 39 }, "end": { - "line": 631, + "line": 643, "column": 40 } } @@ -127686,15 +129961,15 @@ "binop": null }, "value": "primitiveType", - "start": 21279, - "end": 21292, + "start": 21575, + "end": 21588, "loc": { "start": { - "line": 631, + "line": 643, "column": 40 }, "end": { - "line": 631, + "line": 643, "column": 53 } } @@ -127713,15 +129988,15 @@ "updateContext": null }, "value": "=", - "start": 21293, - "end": 21294, + "start": 21589, + "end": 21590, "loc": { "start": { - "line": 631, + "line": 643, "column": 54 }, "end": { - "line": 631, + "line": 643, "column": 55 } } @@ -127740,15 +130015,15 @@ "updateContext": null }, "value": "line-strip", - "start": 21295, - "end": 21307, + "start": 21591, + "end": 21603, "loc": { "start": { - "line": 631, + "line": 643, "column": 56 }, "end": { - "line": 631, + "line": 643, "column": 68 } } @@ -127766,15 +130041,15 @@ "binop": null, "updateContext": null }, - "start": 21307, - "end": 21308, + "start": 21603, + "end": 21604, "loc": { "start": { - "line": 631, + "line": 643, "column": 68 }, "end": { - "line": 631, + "line": 643, "column": 69 } } @@ -127794,15 +130069,15 @@ "updateContext": null }, "value": "break", - "start": 21337, - "end": 21342, + "start": 21633, + "end": 21638, "loc": { "start": { - "line": 632, + "line": 644, "column": 28 }, "end": { - "line": 632, + "line": 644, "column": 33 } } @@ -127820,15 +130095,15 @@ "binop": null, "updateContext": null }, - "start": 21342, - "end": 21343, + "start": 21638, + "end": 21639, "loc": { "start": { - "line": 632, + "line": 644, "column": 33 }, "end": { - "line": 632, + "line": 644, "column": 34 } } @@ -127848,15 +130123,15 @@ "updateContext": null }, "value": "case", - "start": 21368, - "end": 21372, + "start": 21664, + "end": 21668, "loc": { "start": { - "line": 633, + "line": 645, "column": 24 }, "end": { - "line": 633, + "line": 645, "column": 28 } } @@ -127875,15 +130150,15 @@ "updateContext": null }, "value": 4, - "start": 21373, - "end": 21374, + "start": 21669, + "end": 21670, "loc": { "start": { - "line": 633, + "line": 645, "column": 29 }, "end": { - "line": 633, + "line": 645, "column": 30 } } @@ -127901,15 +130176,15 @@ "binop": null, "updateContext": null }, - "start": 21374, - "end": 21375, + "start": 21670, + "end": 21671, "loc": { "start": { - "line": 633, + "line": 645, "column": 30 }, "end": { - "line": 633, + "line": 645, "column": 31 } } @@ -127917,15 +130192,15 @@ { "type": "CommentLine", "value": " TRIANGLES", - "start": 21376, - "end": 21388, + "start": 21672, + "end": 21684, "loc": { "start": { - "line": 633, + "line": 645, "column": 32 }, "end": { - "line": 633, + "line": 645, "column": 44 } } @@ -127943,15 +130218,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21417, - "end": 21428, + "start": 21713, + "end": 21724, "loc": { "start": { - "line": 634, + "line": 646, "column": 28 }, "end": { - "line": 634, + "line": 646, "column": 39 } } @@ -127969,15 +130244,15 @@ "binop": null, "updateContext": null }, - "start": 21428, - "end": 21429, + "start": 21724, + "end": 21725, "loc": { "start": { - "line": 634, + "line": 646, "column": 39 }, "end": { - "line": 634, + "line": 646, "column": 40 } } @@ -127995,15 +130270,15 @@ "binop": null }, "value": "primitiveType", - "start": 21429, - "end": 21442, + "start": 21725, + "end": 21738, "loc": { "start": { - "line": 634, + "line": 646, "column": 40 }, "end": { - "line": 634, + "line": 646, "column": 53 } } @@ -128022,15 +130297,15 @@ "updateContext": null }, "value": "=", - "start": 21443, - "end": 21444, + "start": 21739, + "end": 21740, "loc": { "start": { - "line": 634, + "line": 646, "column": 54 }, "end": { - "line": 634, + "line": 646, "column": 55 } } @@ -128049,15 +130324,15 @@ "updateContext": null }, "value": "triangles", - "start": 21445, - "end": 21456, + "start": 21741, + "end": 21752, "loc": { "start": { - "line": 634, + "line": 646, "column": 56 }, "end": { - "line": 634, + "line": 646, "column": 67 } } @@ -128075,15 +130350,15 @@ "binop": null, "updateContext": null }, - "start": 21456, - "end": 21457, + "start": 21752, + "end": 21753, "loc": { "start": { - "line": 634, + "line": 646, "column": 67 }, "end": { - "line": 634, + "line": 646, "column": 68 } } @@ -128103,15 +130378,15 @@ "updateContext": null }, "value": "break", - "start": 21486, - "end": 21491, + "start": 21782, + "end": 21787, "loc": { "start": { - "line": 635, + "line": 647, "column": 28 }, "end": { - "line": 635, + "line": 647, "column": 33 } } @@ -128129,15 +130404,15 @@ "binop": null, "updateContext": null }, - "start": 21491, - "end": 21492, + "start": 21787, + "end": 21788, "loc": { "start": { - "line": 635, + "line": 647, "column": 33 }, "end": { - "line": 635, + "line": 647, "column": 34 } } @@ -128157,15 +130432,15 @@ "updateContext": null }, "value": "case", - "start": 21517, - "end": 21521, + "start": 21813, + "end": 21817, "loc": { "start": { - "line": 636, + "line": 648, "column": 24 }, "end": { - "line": 636, + "line": 648, "column": 28 } } @@ -128184,15 +130459,15 @@ "updateContext": null }, "value": 5, - "start": 21522, - "end": 21523, + "start": 21818, + "end": 21819, "loc": { "start": { - "line": 636, + "line": 648, "column": 29 }, "end": { - "line": 636, + "line": 648, "column": 30 } } @@ -128210,15 +130485,15 @@ "binop": null, "updateContext": null }, - "start": 21523, - "end": 21524, + "start": 21819, + "end": 21820, "loc": { "start": { - "line": 636, + "line": 648, "column": 30 }, "end": { - "line": 636, + "line": 648, "column": 31 } } @@ -128226,15 +130501,15 @@ { "type": "CommentLine", "value": " TRIANGLE_STRIP", - "start": 21525, - "end": 21542, + "start": 21821, + "end": 21838, "loc": { "start": { - "line": 636, + "line": 648, "column": 32 }, "end": { - "line": 636, + "line": 648, "column": 49 } } @@ -128252,15 +130527,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21571, - "end": 21582, + "start": 21867, + "end": 21878, "loc": { "start": { - "line": 637, + "line": 649, "column": 28 }, "end": { - "line": 637, + "line": 649, "column": 39 } } @@ -128278,15 +130553,15 @@ "binop": null, "updateContext": null }, - "start": 21582, - "end": 21583, + "start": 21878, + "end": 21879, "loc": { "start": { - "line": 637, + "line": 649, "column": 39 }, "end": { - "line": 637, + "line": 649, "column": 40 } } @@ -128304,15 +130579,15 @@ "binop": null }, "value": "primitiveType", - "start": 21583, - "end": 21596, + "start": 21879, + "end": 21892, "loc": { "start": { - "line": 637, + "line": 649, "column": 40 }, "end": { - "line": 637, + "line": 649, "column": 53 } } @@ -128331,15 +130606,15 @@ "updateContext": null }, "value": "=", - "start": 21597, - "end": 21598, + "start": 21893, + "end": 21894, "loc": { "start": { - "line": 637, + "line": 649, "column": 54 }, "end": { - "line": 637, + "line": 649, "column": 55 } } @@ -128358,15 +130633,15 @@ "updateContext": null }, "value": "triangle-strip", - "start": 21599, - "end": 21615, + "start": 21895, + "end": 21911, "loc": { "start": { - "line": 637, + "line": 649, "column": 56 }, "end": { - "line": 637, + "line": 649, "column": 72 } } @@ -128384,15 +130659,15 @@ "binop": null, "updateContext": null }, - "start": 21615, - "end": 21616, + "start": 21911, + "end": 21912, "loc": { "start": { - "line": 637, + "line": 649, "column": 72 }, "end": { - "line": 637, + "line": 649, "column": 73 } } @@ -128412,15 +130687,15 @@ "updateContext": null }, "value": "break", - "start": 21645, - "end": 21650, + "start": 21941, + "end": 21946, "loc": { "start": { - "line": 638, + "line": 650, "column": 28 }, "end": { - "line": 638, + "line": 650, "column": 33 } } @@ -128438,15 +130713,15 @@ "binop": null, "updateContext": null }, - "start": 21650, - "end": 21651, + "start": 21946, + "end": 21947, "loc": { "start": { - "line": 638, + "line": 650, "column": 33 }, "end": { - "line": 638, + "line": 650, "column": 34 } } @@ -128466,15 +130741,15 @@ "updateContext": null }, "value": "case", - "start": 21676, - "end": 21680, + "start": 21972, + "end": 21976, "loc": { "start": { - "line": 639, + "line": 651, "column": 24 }, "end": { - "line": 639, + "line": 651, "column": 28 } } @@ -128493,15 +130768,15 @@ "updateContext": null }, "value": 6, - "start": 21681, - "end": 21682, + "start": 21977, + "end": 21978, "loc": { "start": { - "line": 639, + "line": 651, "column": 29 }, "end": { - "line": 639, + "line": 651, "column": 30 } } @@ -128519,15 +130794,15 @@ "binop": null, "updateContext": null }, - "start": 21682, - "end": 21683, + "start": 21978, + "end": 21979, "loc": { "start": { - "line": 639, + "line": 651, "column": 30 }, "end": { - "line": 639, + "line": 651, "column": 31 } } @@ -128535,15 +130810,15 @@ { "type": "CommentLine", "value": " TRIANGLE_FAN", - "start": 21684, - "end": 21699, + "start": 21980, + "end": 21995, "loc": { "start": { - "line": 639, + "line": 651, "column": 32 }, "end": { - "line": 639, + "line": 651, "column": 47 } } @@ -128561,15 +130836,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21728, - "end": 21739, + "start": 22024, + "end": 22035, "loc": { "start": { - "line": 640, + "line": 652, "column": 28 }, "end": { - "line": 640, + "line": 652, "column": 39 } } @@ -128587,15 +130862,15 @@ "binop": null, "updateContext": null }, - "start": 21739, - "end": 21740, + "start": 22035, + "end": 22036, "loc": { "start": { - "line": 640, + "line": 652, "column": 39 }, "end": { - "line": 640, + "line": 652, "column": 40 } } @@ -128613,15 +130888,15 @@ "binop": null }, "value": "primitiveType", - "start": 21740, - "end": 21753, + "start": 22036, + "end": 22049, "loc": { "start": { - "line": 640, + "line": 652, "column": 40 }, "end": { - "line": 640, + "line": 652, "column": 53 } } @@ -128640,15 +130915,15 @@ "updateContext": null }, "value": "=", - "start": 21754, - "end": 21755, + "start": 22050, + "end": 22051, "loc": { "start": { - "line": 640, + "line": 652, "column": 54 }, "end": { - "line": 640, + "line": 652, "column": 55 } } @@ -128667,15 +130942,15 @@ "updateContext": null }, "value": "triangle-fan", - "start": 21756, - "end": 21770, + "start": 22052, + "end": 22066, "loc": { "start": { - "line": 640, + "line": 652, "column": 56 }, "end": { - "line": 640, + "line": 652, "column": 70 } } @@ -128693,15 +130968,15 @@ "binop": null, "updateContext": null }, - "start": 21770, - "end": 21771, + "start": 22066, + "end": 22067, "loc": { "start": { - "line": 640, + "line": 652, "column": 70 }, "end": { - "line": 640, + "line": 652, "column": 71 } } @@ -128721,15 +130996,15 @@ "updateContext": null }, "value": "break", - "start": 21800, - "end": 21805, + "start": 22096, + "end": 22101, "loc": { "start": { - "line": 641, + "line": 653, "column": 28 }, "end": { - "line": 641, + "line": 653, "column": 33 } } @@ -128747,15 +131022,15 @@ "binop": null, "updateContext": null }, - "start": 21805, - "end": 21806, + "start": 22101, + "end": 22102, "loc": { "start": { - "line": 641, + "line": 653, "column": 33 }, "end": { - "line": 641, + "line": 653, "column": 34 } } @@ -128775,15 +131050,15 @@ "updateContext": null }, "value": "default", - "start": 21831, - "end": 21838, + "start": 22127, + "end": 22134, "loc": { "start": { - "line": 642, + "line": 654, "column": 24 }, "end": { - "line": 642, + "line": 654, "column": 31 } } @@ -128801,15 +131076,15 @@ "binop": null, "updateContext": null }, - "start": 21838, - "end": 21839, + "start": 22134, + "end": 22135, "loc": { "start": { - "line": 642, + "line": 654, "column": 31 }, "end": { - "line": 642, + "line": 654, "column": 32 } } @@ -128827,15 +131102,15 @@ "binop": null }, "value": "geometryCfg", - "start": 21868, - "end": 21879, + "start": 22164, + "end": 22175, "loc": { "start": { - "line": 643, + "line": 655, "column": 28 }, "end": { - "line": 643, + "line": 655, "column": 39 } } @@ -128853,15 +131128,15 @@ "binop": null, "updateContext": null }, - "start": 21879, - "end": 21880, + "start": 22175, + "end": 22176, "loc": { "start": { - "line": 643, + "line": 655, "column": 39 }, "end": { - "line": 643, + "line": 655, "column": 40 } } @@ -128879,15 +131154,15 @@ "binop": null }, "value": "primitiveType", - "start": 21880, - "end": 21893, + "start": 22176, + "end": 22189, "loc": { "start": { - "line": 643, + "line": 655, "column": 40 }, "end": { - "line": 643, + "line": 655, "column": 53 } } @@ -128906,15 +131181,15 @@ "updateContext": null }, "value": "=", - "start": 21894, - "end": 21895, + "start": 22190, + "end": 22191, "loc": { "start": { - "line": 643, + "line": 655, "column": 54 }, "end": { - "line": 643, + "line": 655, "column": 55 } } @@ -128933,15 +131208,15 @@ "updateContext": null }, "value": "triangles", - "start": 21896, - "end": 21907, + "start": 22192, + "end": 22203, "loc": { "start": { - "line": 643, + "line": 655, "column": 56 }, "end": { - "line": 643, + "line": 655, "column": 67 } } @@ -128959,15 +131234,15 @@ "binop": null, "updateContext": null }, - "start": 21907, - "end": 21908, + "start": 22203, + "end": 22204, "loc": { "start": { - "line": 643, + "line": 655, "column": 67 }, "end": { - "line": 643, + "line": 655, "column": 68 } } @@ -128984,15 +131259,15 @@ "postfix": false, "binop": null }, - "start": 21929, - "end": 21930, + "start": 22225, + "end": 22226, "loc": { "start": { - "line": 644, + "line": 656, "column": 20 }, "end": { - "line": 644, + "line": 656, "column": 21 } } @@ -129012,15 +131287,15 @@ "updateContext": null }, "value": "const", - "start": 21951, - "end": 21956, + "start": 22247, + "end": 22252, "loc": { "start": { - "line": 645, + "line": 657, "column": 20 }, "end": { - "line": 645, + "line": 657, "column": 25 } } @@ -129038,15 +131313,15 @@ "binop": null }, "value": "POSITION", - "start": 21957, - "end": 21965, + "start": 22253, + "end": 22261, "loc": { "start": { - "line": 645, + "line": 657, "column": 26 }, "end": { - "line": 645, + "line": 657, "column": 34 } } @@ -129065,15 +131340,15 @@ "updateContext": null }, "value": "=", - "start": 21966, - "end": 21967, + "start": 22262, + "end": 22263, "loc": { "start": { - "line": 645, + "line": 657, "column": 35 }, "end": { - "line": 645, + "line": 657, "column": 36 } } @@ -129091,15 +131366,15 @@ "binop": null }, "value": "primitive", - "start": 21968, - "end": 21977, + "start": 22264, + "end": 22273, "loc": { "start": { - "line": 645, + "line": 657, "column": 37 }, "end": { - "line": 645, + "line": 657, "column": 46 } } @@ -129117,15 +131392,15 @@ "binop": null, "updateContext": null }, - "start": 21977, - "end": 21978, + "start": 22273, + "end": 22274, "loc": { "start": { - "line": 645, + "line": 657, "column": 46 }, "end": { - "line": 645, + "line": 657, "column": 47 } } @@ -129143,15 +131418,15 @@ "binop": null }, "value": "attributes", - "start": 21978, - "end": 21988, + "start": 22274, + "end": 22284, "loc": { "start": { - "line": 645, + "line": 657, "column": 47 }, "end": { - "line": 645, + "line": 657, "column": 57 } } @@ -129169,15 +131444,15 @@ "binop": null, "updateContext": null }, - "start": 21988, - "end": 21989, + "start": 22284, + "end": 22285, "loc": { "start": { - "line": 645, + "line": 657, "column": 57 }, "end": { - "line": 645, + "line": 657, "column": 58 } } @@ -129195,15 +131470,15 @@ "binop": null }, "value": "POSITION", - "start": 21989, - "end": 21997, + "start": 22285, + "end": 22293, "loc": { "start": { - "line": 645, + "line": 657, "column": 58 }, "end": { - "line": 645, + "line": 657, "column": 66 } } @@ -129221,15 +131496,15 @@ "binop": null, "updateContext": null }, - "start": 21997, - "end": 21998, + "start": 22293, + "end": 22294, "loc": { "start": { - "line": 645, + "line": 657, "column": 66 }, "end": { - "line": 645, + "line": 657, "column": 67 } } @@ -129249,15 +131524,15 @@ "updateContext": null }, "value": "if", - "start": 22019, - "end": 22021, + "start": 22315, + "end": 22317, "loc": { "start": { - "line": 646, + "line": 658, "column": 20 }, "end": { - "line": 646, + "line": 658, "column": 22 } } @@ -129274,15 +131549,15 @@ "postfix": false, "binop": null }, - "start": 22022, - "end": 22023, + "start": 22318, + "end": 22319, "loc": { "start": { - "line": 646, + "line": 658, "column": 23 }, "end": { - "line": 646, + "line": 658, "column": 24 } } @@ -129301,15 +131576,15 @@ "updateContext": null }, "value": "!", - "start": 22023, - "end": 22024, + "start": 22319, + "end": 22320, "loc": { "start": { - "line": 646, + "line": 658, "column": 24 }, "end": { - "line": 646, + "line": 658, "column": 25 } } @@ -129327,15 +131602,15 @@ "binop": null }, "value": "POSITION", - "start": 22024, - "end": 22032, + "start": 22320, + "end": 22328, "loc": { "start": { - "line": 646, + "line": 658, "column": 25 }, "end": { - "line": 646, + "line": 658, "column": 33 } } @@ -129352,15 +131627,15 @@ "postfix": false, "binop": null }, - "start": 22032, - "end": 22033, + "start": 22328, + "end": 22329, "loc": { "start": { - "line": 646, + "line": 658, "column": 33 }, "end": { - "line": 646, + "line": 658, "column": 34 } } @@ -129377,15 +131652,15 @@ "postfix": false, "binop": null }, - "start": 22034, - "end": 22035, + "start": 22330, + "end": 22331, "loc": { "start": { - "line": 646, + "line": 658, "column": 35 }, "end": { - "line": 646, + "line": 658, "column": 36 } } @@ -129405,15 +131680,15 @@ "updateContext": null }, "value": "continue", - "start": 22060, - "end": 22068, + "start": 22356, + "end": 22364, "loc": { "start": { - "line": 647, + "line": 659, "column": 24 }, "end": { - "line": 647, + "line": 659, "column": 32 } } @@ -129431,15 +131706,15 @@ "binop": null, "updateContext": null }, - "start": 22068, - "end": 22069, + "start": 22364, + "end": 22365, "loc": { "start": { - "line": 647, + "line": 659, "column": 32 }, "end": { - "line": 647, + "line": 659, "column": 33 } } @@ -129456,15 +131731,15 @@ "postfix": false, "binop": null }, - "start": 22090, - "end": 22091, + "start": 22386, + "end": 22387, "loc": { "start": { - "line": 648, + "line": 660, "column": 20 }, "end": { - "line": 648, + "line": 660, "column": 21 } } @@ -129482,15 +131757,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22112, - "end": 22123, + "start": 22408, + "end": 22419, "loc": { "start": { - "line": 649, + "line": 661, "column": 20 }, "end": { - "line": 649, + "line": 661, "column": 31 } } @@ -129508,15 +131783,15 @@ "binop": null, "updateContext": null }, - "start": 22123, - "end": 22124, + "start": 22419, + "end": 22420, "loc": { "start": { - "line": 649, + "line": 661, "column": 31 }, "end": { - "line": 649, + "line": 661, "column": 32 } } @@ -129534,15 +131809,15 @@ "binop": null }, "value": "positions", - "start": 22124, - "end": 22133, + "start": 22420, + "end": 22429, "loc": { "start": { - "line": 649, + "line": 661, "column": 32 }, "end": { - "line": 649, + "line": 661, "column": 41 } } @@ -129561,15 +131836,15 @@ "updateContext": null }, "value": "=", - "start": 22134, - "end": 22135, + "start": 22430, + "end": 22431, "loc": { "start": { - "line": 649, + "line": 661, "column": 42 }, "end": { - "line": 649, + "line": 661, "column": 43 } } @@ -129587,15 +131862,15 @@ "binop": null }, "value": "primitive", - "start": 22136, - "end": 22145, + "start": 22432, + "end": 22441, "loc": { "start": { - "line": 649, + "line": 661, "column": 44 }, "end": { - "line": 649, + "line": 661, "column": 53 } } @@ -129613,15 +131888,15 @@ "binop": null, "updateContext": null }, - "start": 22145, - "end": 22146, + "start": 22441, + "end": 22442, "loc": { "start": { - "line": 649, + "line": 661, "column": 53 }, "end": { - "line": 649, + "line": 661, "column": 54 } } @@ -129639,15 +131914,15 @@ "binop": null }, "value": "attributes", - "start": 22146, - "end": 22156, + "start": 22442, + "end": 22452, "loc": { "start": { - "line": 649, + "line": 661, "column": 54 }, "end": { - "line": 649, + "line": 661, "column": 64 } } @@ -129665,15 +131940,15 @@ "binop": null, "updateContext": null }, - "start": 22156, - "end": 22157, + "start": 22452, + "end": 22453, "loc": { "start": { - "line": 649, + "line": 661, "column": 64 }, "end": { - "line": 649, + "line": 661, "column": 65 } } @@ -129691,15 +131966,15 @@ "binop": null }, "value": "POSITION", - "start": 22157, - "end": 22165, + "start": 22453, + "end": 22461, "loc": { "start": { - "line": 649, + "line": 661, "column": 65 }, "end": { - "line": 649, + "line": 661, "column": 73 } } @@ -129717,15 +131992,15 @@ "binop": null, "updateContext": null }, - "start": 22165, - "end": 22166, + "start": 22461, + "end": 22462, "loc": { "start": { - "line": 649, + "line": 661, "column": 73 }, "end": { - "line": 649, + "line": 661, "column": 74 } } @@ -129743,15 +132018,15 @@ "binop": null }, "value": "value", - "start": 22166, - "end": 22171, + "start": 22462, + "end": 22467, "loc": { "start": { - "line": 649, + "line": 661, "column": 74 }, "end": { - "line": 649, + "line": 661, "column": 79 } } @@ -129769,15 +132044,15 @@ "binop": null, "updateContext": null }, - "start": 22171, - "end": 22172, + "start": 22467, + "end": 22468, "loc": { "start": { - "line": 649, + "line": 661, "column": 79 }, "end": { - "line": 649, + "line": 661, "column": 80 } } @@ -129795,15 +132070,15 @@ "binop": null }, "value": "ctx", - "start": 22193, - "end": 22196, + "start": 22489, + "end": 22492, "loc": { "start": { - "line": 650, + "line": 662, "column": 20 }, "end": { - "line": 650, + "line": 662, "column": 23 } } @@ -129821,15 +132096,15 @@ "binop": null, "updateContext": null }, - "start": 22196, - "end": 22197, + "start": 22492, + "end": 22493, "loc": { "start": { - "line": 650, + "line": 662, "column": 23 }, "end": { - "line": 650, + "line": 662, "column": 24 } } @@ -129847,15 +132122,15 @@ "binop": null }, "value": "stats", - "start": 22197, - "end": 22202, + "start": 22493, + "end": 22498, "loc": { "start": { - "line": 650, + "line": 662, "column": 24 }, "end": { - "line": 650, + "line": 662, "column": 29 } } @@ -129873,15 +132148,15 @@ "binop": null, "updateContext": null }, - "start": 22202, - "end": 22203, + "start": 22498, + "end": 22499, "loc": { "start": { - "line": 650, + "line": 662, "column": 29 }, "end": { - "line": 650, + "line": 662, "column": 30 } } @@ -129899,15 +132174,15 @@ "binop": null }, "value": "numVertices", - "start": 22203, - "end": 22214, + "start": 22499, + "end": 22510, "loc": { "start": { - "line": 650, + "line": 662, "column": 30 }, "end": { - "line": 650, + "line": 662, "column": 41 } } @@ -129926,15 +132201,15 @@ "updateContext": null }, "value": "+=", - "start": 22215, - "end": 22217, + "start": 22511, + "end": 22513, "loc": { "start": { - "line": 650, + "line": 662, "column": 42 }, "end": { - "line": 650, + "line": 662, "column": 44 } } @@ -129952,15 +132227,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22218, - "end": 22229, + "start": 22514, + "end": 22525, "loc": { "start": { - "line": 650, + "line": 662, "column": 45 }, "end": { - "line": 650, + "line": 662, "column": 56 } } @@ -129978,15 +132253,15 @@ "binop": null, "updateContext": null }, - "start": 22229, - "end": 22230, + "start": 22525, + "end": 22526, "loc": { "start": { - "line": 650, + "line": 662, "column": 56 }, "end": { - "line": 650, + "line": 662, "column": 57 } } @@ -130004,15 +132279,15 @@ "binop": null }, "value": "positions", - "start": 22230, - "end": 22239, + "start": 22526, + "end": 22535, "loc": { "start": { - "line": 650, + "line": 662, "column": 57 }, "end": { - "line": 650, + "line": 662, "column": 66 } } @@ -130030,15 +132305,15 @@ "binop": null, "updateContext": null }, - "start": 22239, - "end": 22240, + "start": 22535, + "end": 22536, "loc": { "start": { - "line": 650, + "line": 662, "column": 66 }, "end": { - "line": 650, + "line": 662, "column": 67 } } @@ -130056,15 +132331,15 @@ "binop": null }, "value": "length", - "start": 22240, - "end": 22246, + "start": 22536, + "end": 22542, "loc": { "start": { - "line": 650, + "line": 662, "column": 67 }, "end": { - "line": 650, + "line": 662, "column": 73 } } @@ -130083,15 +132358,15 @@ "updateContext": null }, "value": "/", - "start": 22247, - "end": 22248, + "start": 22543, + "end": 22544, "loc": { "start": { - "line": 650, + "line": 662, "column": 74 }, "end": { - "line": 650, + "line": 662, "column": 75 } } @@ -130110,15 +132385,15 @@ "updateContext": null }, "value": 3, - "start": 22249, - "end": 22250, + "start": 22545, + "end": 22546, "loc": { "start": { - "line": 650, + "line": 662, "column": 76 }, "end": { - "line": 650, + "line": 662, "column": 77 } } @@ -130136,15 +132411,15 @@ "binop": null, "updateContext": null }, - "start": 22250, - "end": 22251, + "start": 22546, + "end": 22547, "loc": { "start": { - "line": 650, + "line": 662, "column": 77 }, "end": { - "line": 650, + "line": 662, "column": 78 } } @@ -130164,15 +132439,15 @@ "updateContext": null }, "value": "if", - "start": 22272, - "end": 22274, + "start": 22568, + "end": 22570, "loc": { "start": { - "line": 651, + "line": 663, "column": 20 }, "end": { - "line": 651, + "line": 663, "column": 22 } } @@ -130189,15 +132464,15 @@ "postfix": false, "binop": null }, - "start": 22275, - "end": 22276, + "start": 22571, + "end": 22572, "loc": { "start": { - "line": 651, + "line": 663, "column": 23 }, "end": { - "line": 651, + "line": 663, "column": 24 } } @@ -130215,15 +132490,15 @@ "binop": null }, "value": "ctx", - "start": 22276, - "end": 22279, + "start": 22572, + "end": 22575, "loc": { "start": { - "line": 651, + "line": 663, "column": 24 }, "end": { - "line": 651, + "line": 663, "column": 27 } } @@ -130241,15 +132516,15 @@ "binop": null, "updateContext": null }, - "start": 22279, - "end": 22280, + "start": 22575, + "end": 22576, "loc": { "start": { - "line": 651, + "line": 663, "column": 27 }, "end": { - "line": 651, + "line": 663, "column": 28 } } @@ -130267,15 +132542,15 @@ "binop": null }, "value": "includeNormals", - "start": 22280, - "end": 22294, + "start": 22576, + "end": 22590, "loc": { "start": { - "line": 651, + "line": 663, "column": 28 }, "end": { - "line": 651, + "line": 663, "column": 42 } } @@ -130292,15 +132567,15 @@ "postfix": false, "binop": null }, - "start": 22294, - "end": 22295, + "start": 22590, + "end": 22591, "loc": { "start": { - "line": 651, + "line": 663, "column": 42 }, "end": { - "line": 651, + "line": 663, "column": 43 } } @@ -130317,15 +132592,15 @@ "postfix": false, "binop": null }, - "start": 22296, - "end": 22297, + "start": 22592, + "end": 22593, "loc": { "start": { - "line": 651, + "line": 663, "column": 44 }, "end": { - "line": 651, + "line": 663, "column": 45 } } @@ -130345,15 +132620,15 @@ "updateContext": null }, "value": "if", - "start": 22322, - "end": 22324, + "start": 22618, + "end": 22620, "loc": { "start": { - "line": 652, + "line": 664, "column": 24 }, "end": { - "line": 652, + "line": 664, "column": 26 } } @@ -130370,15 +132645,15 @@ "postfix": false, "binop": null }, - "start": 22325, - "end": 22326, + "start": 22621, + "end": 22622, "loc": { "start": { - "line": 652, + "line": 664, "column": 27 }, "end": { - "line": 652, + "line": 664, "column": 28 } } @@ -130396,15 +132671,15 @@ "binop": null }, "value": "primitive", - "start": 22326, - "end": 22335, + "start": 22622, + "end": 22631, "loc": { "start": { - "line": 652, + "line": 664, "column": 28 }, "end": { - "line": 652, + "line": 664, "column": 37 } } @@ -130422,15 +132697,15 @@ "binop": null, "updateContext": null }, - "start": 22335, - "end": 22336, + "start": 22631, + "end": 22632, "loc": { "start": { - "line": 652, + "line": 664, "column": 37 }, "end": { - "line": 652, + "line": 664, "column": 38 } } @@ -130448,15 +132723,15 @@ "binop": null }, "value": "attributes", - "start": 22336, - "end": 22346, + "start": 22632, + "end": 22642, "loc": { "start": { - "line": 652, + "line": 664, "column": 38 }, "end": { - "line": 652, + "line": 664, "column": 48 } } @@ -130474,15 +132749,15 @@ "binop": null, "updateContext": null }, - "start": 22346, - "end": 22347, + "start": 22642, + "end": 22643, "loc": { "start": { - "line": 652, + "line": 664, "column": 48 }, "end": { - "line": 652, + "line": 664, "column": 49 } } @@ -130500,15 +132775,15 @@ "binop": null }, "value": "NORMAL", - "start": 22347, - "end": 22353, + "start": 22643, + "end": 22649, "loc": { "start": { - "line": 652, + "line": 664, "column": 49 }, "end": { - "line": 652, + "line": 664, "column": 55 } } @@ -130525,15 +132800,15 @@ "postfix": false, "binop": null }, - "start": 22353, - "end": 22354, + "start": 22649, + "end": 22650, "loc": { "start": { - "line": 652, + "line": 664, "column": 55 }, "end": { - "line": 652, + "line": 664, "column": 56 } } @@ -130550,15 +132825,15 @@ "postfix": false, "binop": null }, - "start": 22355, - "end": 22356, + "start": 22651, + "end": 22652, "loc": { "start": { - "line": 652, + "line": 664, "column": 57 }, "end": { - "line": 652, + "line": 664, "column": 58 } } @@ -130576,15 +132851,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22385, - "end": 22396, + "start": 22681, + "end": 22692, "loc": { "start": { - "line": 653, + "line": 665, "column": 28 }, "end": { - "line": 653, + "line": 665, "column": 39 } } @@ -130602,15 +132877,15 @@ "binop": null, "updateContext": null }, - "start": 22396, - "end": 22397, + "start": 22692, + "end": 22693, "loc": { "start": { - "line": 653, + "line": 665, "column": 39 }, "end": { - "line": 653, + "line": 665, "column": 40 } } @@ -130628,15 +132903,15 @@ "binop": null }, "value": "normals", - "start": 22397, - "end": 22404, + "start": 22693, + "end": 22700, "loc": { "start": { - "line": 653, + "line": 665, "column": 40 }, "end": { - "line": 653, + "line": 665, "column": 47 } } @@ -130655,15 +132930,15 @@ "updateContext": null }, "value": "=", - "start": 22405, - "end": 22406, + "start": 22701, + "end": 22702, "loc": { "start": { - "line": 653, + "line": 665, "column": 48 }, "end": { - "line": 653, + "line": 665, "column": 49 } } @@ -130681,15 +132956,15 @@ "binop": null }, "value": "primitive", - "start": 22407, - "end": 22416, + "start": 22703, + "end": 22712, "loc": { "start": { - "line": 653, + "line": 665, "column": 50 }, "end": { - "line": 653, + "line": 665, "column": 59 } } @@ -130707,15 +132982,15 @@ "binop": null, "updateContext": null }, - "start": 22416, - "end": 22417, + "start": 22712, + "end": 22713, "loc": { "start": { - "line": 653, + "line": 665, "column": 59 }, "end": { - "line": 653, + "line": 665, "column": 60 } } @@ -130733,15 +133008,15 @@ "binop": null }, "value": "attributes", - "start": 22417, - "end": 22427, + "start": 22713, + "end": 22723, "loc": { "start": { - "line": 653, + "line": 665, "column": 60 }, "end": { - "line": 653, + "line": 665, "column": 70 } } @@ -130759,15 +133034,15 @@ "binop": null, "updateContext": null }, - "start": 22427, - "end": 22428, + "start": 22723, + "end": 22724, "loc": { "start": { - "line": 653, + "line": 665, "column": 70 }, "end": { - "line": 653, + "line": 665, "column": 71 } } @@ -130785,15 +133060,15 @@ "binop": null }, "value": "NORMAL", - "start": 22428, - "end": 22434, + "start": 22724, + "end": 22730, "loc": { "start": { - "line": 653, + "line": 665, "column": 71 }, "end": { - "line": 653, + "line": 665, "column": 77 } } @@ -130811,15 +133086,15 @@ "binop": null, "updateContext": null }, - "start": 22434, - "end": 22435, + "start": 22730, + "end": 22731, "loc": { "start": { - "line": 653, + "line": 665, "column": 77 }, "end": { - "line": 653, + "line": 665, "column": 78 } } @@ -130837,15 +133112,15 @@ "binop": null }, "value": "value", - "start": 22435, - "end": 22440, + "start": 22731, + "end": 22736, "loc": { "start": { - "line": 653, + "line": 665, "column": 78 }, "end": { - "line": 653, + "line": 665, "column": 83 } } @@ -130863,15 +133138,15 @@ "binop": null, "updateContext": null }, - "start": 22440, - "end": 22441, + "start": 22736, + "end": 22737, "loc": { "start": { - "line": 653, + "line": 665, "column": 83 }, "end": { - "line": 653, + "line": 665, "column": 84 } } @@ -130889,15 +133164,15 @@ "binop": null }, "value": "ctx", - "start": 22470, - "end": 22473, + "start": 22766, + "end": 22769, "loc": { "start": { - "line": 654, + "line": 666, "column": 28 }, "end": { - "line": 654, + "line": 666, "column": 31 } } @@ -130915,15 +133190,15 @@ "binop": null, "updateContext": null }, - "start": 22473, - "end": 22474, + "start": 22769, + "end": 22770, "loc": { "start": { - "line": 654, + "line": 666, "column": 31 }, "end": { - "line": 654, + "line": 666, "column": 32 } } @@ -130941,15 +133216,15 @@ "binop": null }, "value": "stats", - "start": 22474, - "end": 22479, + "start": 22770, + "end": 22775, "loc": { "start": { - "line": 654, + "line": 666, "column": 32 }, "end": { - "line": 654, + "line": 666, "column": 37 } } @@ -130967,15 +133242,15 @@ "binop": null, "updateContext": null }, - "start": 22479, - "end": 22480, + "start": 22775, + "end": 22776, "loc": { "start": { - "line": 654, + "line": 666, "column": 37 }, "end": { - "line": 654, + "line": 666, "column": 38 } } @@ -130993,15 +133268,15 @@ "binop": null }, "value": "numNormals", - "start": 22480, - "end": 22490, + "start": 22776, + "end": 22786, "loc": { "start": { - "line": 654, + "line": 666, "column": 38 }, "end": { - "line": 654, + "line": 666, "column": 48 } } @@ -131020,15 +133295,15 @@ "updateContext": null }, "value": "+=", - "start": 22491, - "end": 22493, + "start": 22787, + "end": 22789, "loc": { "start": { - "line": 654, + "line": 666, "column": 49 }, "end": { - "line": 654, + "line": 666, "column": 51 } } @@ -131046,15 +133321,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22494, - "end": 22505, + "start": 22790, + "end": 22801, "loc": { "start": { - "line": 654, + "line": 666, "column": 52 }, "end": { - "line": 654, + "line": 666, "column": 63 } } @@ -131072,15 +133347,15 @@ "binop": null, "updateContext": null }, - "start": 22505, - "end": 22506, + "start": 22801, + "end": 22802, "loc": { "start": { - "line": 654, + "line": 666, "column": 63 }, "end": { - "line": 654, + "line": 666, "column": 64 } } @@ -131098,15 +133373,15 @@ "binop": null }, "value": "normals", - "start": 22506, - "end": 22513, + "start": 22802, + "end": 22809, "loc": { "start": { - "line": 654, + "line": 666, "column": 64 }, "end": { - "line": 654, + "line": 666, "column": 71 } } @@ -131124,15 +133399,15 @@ "binop": null, "updateContext": null }, - "start": 22513, - "end": 22514, + "start": 22809, + "end": 22810, "loc": { "start": { - "line": 654, + "line": 666, "column": 71 }, "end": { - "line": 654, + "line": 666, "column": 72 } } @@ -131150,15 +133425,15 @@ "binop": null }, "value": "length", - "start": 22514, - "end": 22520, + "start": 22810, + "end": 22816, "loc": { "start": { - "line": 654, + "line": 666, "column": 72 }, "end": { - "line": 654, + "line": 666, "column": 78 } } @@ -131177,15 +133452,15 @@ "updateContext": null }, "value": "/", - "start": 22521, - "end": 22522, + "start": 22817, + "end": 22818, "loc": { "start": { - "line": 654, + "line": 666, "column": 79 }, "end": { - "line": 654, + "line": 666, "column": 80 } } @@ -131204,15 +133479,15 @@ "updateContext": null }, "value": 3, - "start": 22523, - "end": 22524, + "start": 22819, + "end": 22820, "loc": { "start": { - "line": 654, + "line": 666, "column": 81 }, "end": { - "line": 654, + "line": 666, "column": 82 } } @@ -131230,15 +133505,15 @@ "binop": null, "updateContext": null }, - "start": 22524, - "end": 22525, + "start": 22820, + "end": 22821, "loc": { "start": { - "line": 654, + "line": 666, "column": 82 }, "end": { - "line": 654, + "line": 666, "column": 83 } } @@ -131255,15 +133530,15 @@ "postfix": false, "binop": null }, - "start": 22550, - "end": 22551, + "start": 22846, + "end": 22847, "loc": { "start": { - "line": 655, + "line": 667, "column": 24 }, "end": { - "line": 655, + "line": 667, "column": 25 } } @@ -131280,15 +133555,15 @@ "postfix": false, "binop": null }, - "start": 22572, - "end": 22573, + "start": 22868, + "end": 22869, "loc": { "start": { - "line": 656, + "line": 668, "column": 20 }, "end": { - "line": 656, + "line": 668, "column": 21 } } @@ -131308,15 +133583,15 @@ "updateContext": null }, "value": "if", - "start": 22594, - "end": 22596, + "start": 22890, + "end": 22892, "loc": { "start": { - "line": 657, + "line": 669, "column": 20 }, "end": { - "line": 657, + "line": 669, "column": 22 } } @@ -131333,15 +133608,15 @@ "postfix": false, "binop": null }, - "start": 22597, - "end": 22598, + "start": 22893, + "end": 22894, "loc": { "start": { - "line": 657, + "line": 669, "column": 23 }, "end": { - "line": 657, + "line": 669, "column": 24 } } @@ -131359,15 +133634,15 @@ "binop": null }, "value": "primitive", - "start": 22598, - "end": 22607, + "start": 22894, + "end": 22903, "loc": { "start": { - "line": 657, + "line": 669, "column": 24 }, "end": { - "line": 657, + "line": 669, "column": 33 } } @@ -131385,15 +133660,15 @@ "binop": null, "updateContext": null }, - "start": 22607, - "end": 22608, + "start": 22903, + "end": 22904, "loc": { "start": { - "line": 657, + "line": 669, "column": 33 }, "end": { - "line": 657, + "line": 669, "column": 34 } } @@ -131411,15 +133686,15 @@ "binop": null }, "value": "attributes", - "start": 22608, - "end": 22618, + "start": 22904, + "end": 22914, "loc": { "start": { - "line": 657, + "line": 669, "column": 34 }, "end": { - "line": 657, + "line": 669, "column": 44 } } @@ -131437,15 +133712,15 @@ "binop": null, "updateContext": null }, - "start": 22618, - "end": 22619, + "start": 22914, + "end": 22915, "loc": { "start": { - "line": 657, + "line": 669, "column": 44 }, "end": { - "line": 657, + "line": 669, "column": 45 } } @@ -131463,15 +133738,15 @@ "binop": null }, "value": "COLOR_0", - "start": 22619, - "end": 22626, + "start": 22915, + "end": 22922, "loc": { "start": { - "line": 657, + "line": 669, "column": 45 }, "end": { - "line": 657, + "line": 669, "column": 52 } } @@ -131488,15 +133763,15 @@ "postfix": false, "binop": null }, - "start": 22626, - "end": 22627, + "start": 22922, + "end": 22923, "loc": { "start": { - "line": 657, + "line": 669, "column": 52 }, "end": { - "line": 657, + "line": 669, "column": 53 } } @@ -131513,15 +133788,15 @@ "postfix": false, "binop": null }, - "start": 22628, - "end": 22629, + "start": 22924, + "end": 22925, "loc": { "start": { - "line": 657, + "line": 669, "column": 54 }, "end": { - "line": 657, + "line": 669, "column": 55 } } @@ -131539,15 +133814,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22654, - "end": 22665, + "start": 22950, + "end": 22961, "loc": { "start": { - "line": 658, + "line": 670, "column": 24 }, "end": { - "line": 658, + "line": 670, "column": 35 } } @@ -131565,15 +133840,15 @@ "binop": null, "updateContext": null }, - "start": 22665, - "end": 22666, + "start": 22961, + "end": 22962, "loc": { "start": { - "line": 658, + "line": 670, "column": 35 }, "end": { - "line": 658, + "line": 670, "column": 36 } } @@ -131591,15 +133866,15 @@ "binop": null }, "value": "colorsCompressed", - "start": 22666, - "end": 22682, + "start": 22962, + "end": 22978, "loc": { "start": { - "line": 658, + "line": 670, "column": 36 }, "end": { - "line": 658, + "line": 670, "column": 52 } } @@ -131618,15 +133893,15 @@ "updateContext": null }, "value": "=", - "start": 22683, - "end": 22684, + "start": 22979, + "end": 22980, "loc": { "start": { - "line": 658, + "line": 670, "column": 53 }, "end": { - "line": 658, + "line": 670, "column": 54 } } @@ -131644,15 +133919,15 @@ "binop": null }, "value": "primitive", - "start": 22685, - "end": 22694, + "start": 22981, + "end": 22990, "loc": { "start": { - "line": 658, + "line": 670, "column": 55 }, "end": { - "line": 658, + "line": 670, "column": 64 } } @@ -131670,15 +133945,15 @@ "binop": null, "updateContext": null }, - "start": 22694, - "end": 22695, + "start": 22990, + "end": 22991, "loc": { "start": { - "line": 658, + "line": 670, "column": 64 }, "end": { - "line": 658, + "line": 670, "column": 65 } } @@ -131696,15 +133971,15 @@ "binop": null }, "value": "attributes", - "start": 22695, - "end": 22705, + "start": 22991, + "end": 23001, "loc": { "start": { - "line": 658, + "line": 670, "column": 65 }, "end": { - "line": 658, + "line": 670, "column": 75 } } @@ -131722,15 +133997,15 @@ "binop": null, "updateContext": null }, - "start": 22705, - "end": 22706, + "start": 23001, + "end": 23002, "loc": { "start": { - "line": 658, + "line": 670, "column": 75 }, "end": { - "line": 658, + "line": 670, "column": 76 } } @@ -131748,15 +134023,15 @@ "binop": null }, "value": "COLOR_0", - "start": 22706, - "end": 22713, + "start": 23002, + "end": 23009, "loc": { "start": { - "line": 658, + "line": 670, "column": 76 }, "end": { - "line": 658, + "line": 670, "column": 83 } } @@ -131774,15 +134049,15 @@ "binop": null, "updateContext": null }, - "start": 22713, - "end": 22714, + "start": 23009, + "end": 23010, "loc": { "start": { - "line": 658, + "line": 670, "column": 83 }, "end": { - "line": 658, + "line": 670, "column": 84 } } @@ -131800,15 +134075,15 @@ "binop": null }, "value": "value", - "start": 22714, - "end": 22719, + "start": 23010, + "end": 23015, "loc": { "start": { - "line": 658, + "line": 670, "column": 84 }, "end": { - "line": 658, + "line": 670, "column": 89 } } @@ -131826,15 +134101,15 @@ "binop": null, "updateContext": null }, - "start": 22719, - "end": 22720, + "start": 23015, + "end": 23016, "loc": { "start": { - "line": 658, + "line": 670, "column": 89 }, "end": { - "line": 658, + "line": 670, "column": 90 } } @@ -131851,15 +134126,15 @@ "postfix": false, "binop": null }, - "start": 22741, - "end": 22742, + "start": 23037, + "end": 23038, "loc": { "start": { - "line": 659, + "line": 671, "column": 20 }, "end": { - "line": 659, + "line": 671, "column": 21 } } @@ -131879,15 +134154,15 @@ "updateContext": null }, "value": "if", - "start": 22763, - "end": 22765, + "start": 23059, + "end": 23061, "loc": { "start": { - "line": 660, + "line": 672, "column": 20 }, "end": { - "line": 660, + "line": 672, "column": 22 } } @@ -131904,15 +134179,15 @@ "postfix": false, "binop": null }, - "start": 22766, - "end": 22767, + "start": 23062, + "end": 23063, "loc": { "start": { - "line": 660, + "line": 672, "column": 23 }, "end": { - "line": 660, + "line": 672, "column": 24 } } @@ -131930,15 +134205,15 @@ "binop": null }, "value": "ctx", - "start": 22767, - "end": 22770, + "start": 23063, + "end": 23066, "loc": { "start": { - "line": 660, + "line": 672, "column": 24 }, "end": { - "line": 660, + "line": 672, "column": 27 } } @@ -131956,15 +134231,15 @@ "binop": null, "updateContext": null }, - "start": 22770, - "end": 22771, + "start": 23066, + "end": 23067, "loc": { "start": { - "line": 660, + "line": 672, "column": 27 }, "end": { - "line": 660, + "line": 672, "column": 28 } } @@ -131982,15 +134257,15 @@ "binop": null }, "value": "includeTextures", - "start": 22771, - "end": 22786, + "start": 23067, + "end": 23082, "loc": { "start": { - "line": 660, + "line": 672, "column": 28 }, "end": { - "line": 660, + "line": 672, "column": 43 } } @@ -132007,15 +134282,15 @@ "postfix": false, "binop": null }, - "start": 22786, - "end": 22787, + "start": 23082, + "end": 23083, "loc": { "start": { - "line": 660, + "line": 672, "column": 43 }, "end": { - "line": 660, + "line": 672, "column": 44 } } @@ -132032,15 +134307,15 @@ "postfix": false, "binop": null }, - "start": 22788, - "end": 22789, + "start": 23084, + "end": 23085, "loc": { "start": { - "line": 660, + "line": 672, "column": 45 }, "end": { - "line": 660, + "line": 672, "column": 46 } } @@ -132060,15 +134335,15 @@ "updateContext": null }, "value": "if", - "start": 22814, - "end": 22816, + "start": 23110, + "end": 23112, "loc": { "start": { - "line": 661, + "line": 673, "column": 24 }, "end": { - "line": 661, + "line": 673, "column": 26 } } @@ -132085,15 +134360,15 @@ "postfix": false, "binop": null }, - "start": 22817, - "end": 22818, + "start": 23113, + "end": 23114, "loc": { "start": { - "line": 661, + "line": 673, "column": 27 }, "end": { - "line": 661, + "line": 673, "column": 28 } } @@ -132111,15 +134386,15 @@ "binop": null }, "value": "primitive", - "start": 22818, - "end": 22827, + "start": 23114, + "end": 23123, "loc": { "start": { - "line": 661, + "line": 673, "column": 28 }, "end": { - "line": 661, + "line": 673, "column": 37 } } @@ -132137,15 +134412,15 @@ "binop": null, "updateContext": null }, - "start": 22827, - "end": 22828, + "start": 23123, + "end": 23124, "loc": { "start": { - "line": 661, + "line": 673, "column": 37 }, "end": { - "line": 661, + "line": 673, "column": 38 } } @@ -132163,15 +134438,15 @@ "binop": null }, "value": "attributes", - "start": 22828, - "end": 22838, + "start": 23124, + "end": 23134, "loc": { "start": { - "line": 661, + "line": 673, "column": 38 }, "end": { - "line": 661, + "line": 673, "column": 48 } } @@ -132189,15 +134464,15 @@ "binop": null, "updateContext": null }, - "start": 22838, - "end": 22839, + "start": 23134, + "end": 23135, "loc": { "start": { - "line": 661, + "line": 673, "column": 48 }, "end": { - "line": 661, + "line": 673, "column": 49 } } @@ -132215,15 +134490,15 @@ "binop": null }, "value": "TEXCOORD_0", - "start": 22839, - "end": 22849, + "start": 23135, + "end": 23145, "loc": { "start": { - "line": 661, + "line": 673, "column": 49 }, "end": { - "line": 661, + "line": 673, "column": 59 } } @@ -132240,15 +134515,15 @@ "postfix": false, "binop": null }, - "start": 22849, - "end": 22850, + "start": 23145, + "end": 23146, "loc": { "start": { - "line": 661, + "line": 673, "column": 59 }, "end": { - "line": 661, + "line": 673, "column": 60 } } @@ -132265,15 +134540,15 @@ "postfix": false, "binop": null }, - "start": 22851, - "end": 22852, + "start": 23147, + "end": 23148, "loc": { "start": { - "line": 661, + "line": 673, "column": 61 }, "end": { - "line": 661, + "line": 673, "column": 62 } } @@ -132291,15 +134566,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22881, - "end": 22892, + "start": 23177, + "end": 23188, "loc": { "start": { - "line": 662, + "line": 674, "column": 28 }, "end": { - "line": 662, + "line": 674, "column": 39 } } @@ -132317,15 +134592,15 @@ "binop": null, "updateContext": null }, - "start": 22892, - "end": 22893, + "start": 23188, + "end": 23189, "loc": { "start": { - "line": 662, + "line": 674, "column": 39 }, "end": { - "line": 662, + "line": 674, "column": 40 } } @@ -132343,15 +134618,15 @@ "binop": null }, "value": "uvs", - "start": 22893, - "end": 22896, + "start": 23189, + "end": 23192, "loc": { "start": { - "line": 662, + "line": 674, "column": 40 }, "end": { - "line": 662, + "line": 674, "column": 43 } } @@ -132370,15 +134645,15 @@ "updateContext": null }, "value": "=", - "start": 22897, - "end": 22898, + "start": 23193, + "end": 23194, "loc": { "start": { - "line": 662, + "line": 674, "column": 44 }, "end": { - "line": 662, + "line": 674, "column": 45 } } @@ -132396,15 +134671,15 @@ "binop": null }, "value": "primitive", - "start": 22899, - "end": 22908, + "start": 23195, + "end": 23204, "loc": { "start": { - "line": 662, + "line": 674, "column": 46 }, "end": { - "line": 662, + "line": 674, "column": 55 } } @@ -132422,15 +134697,15 @@ "binop": null, "updateContext": null }, - "start": 22908, - "end": 22909, + "start": 23204, + "end": 23205, "loc": { "start": { - "line": 662, + "line": 674, "column": 55 }, "end": { - "line": 662, + "line": 674, "column": 56 } } @@ -132448,15 +134723,15 @@ "binop": null }, "value": "attributes", - "start": 22909, - "end": 22919, + "start": 23205, + "end": 23215, "loc": { "start": { - "line": 662, + "line": 674, "column": 56 }, "end": { - "line": 662, + "line": 674, "column": 66 } } @@ -132474,15 +134749,15 @@ "binop": null, "updateContext": null }, - "start": 22919, - "end": 22920, + "start": 23215, + "end": 23216, "loc": { "start": { - "line": 662, + "line": 674, "column": 66 }, "end": { - "line": 662, + "line": 674, "column": 67 } } @@ -132500,15 +134775,15 @@ "binop": null }, "value": "TEXCOORD_0", - "start": 22920, - "end": 22930, + "start": 23216, + "end": 23226, "loc": { "start": { - "line": 662, + "line": 674, "column": 67 }, "end": { - "line": 662, + "line": 674, "column": 77 } } @@ -132526,15 +134801,15 @@ "binop": null, "updateContext": null }, - "start": 22930, - "end": 22931, + "start": 23226, + "end": 23227, "loc": { "start": { - "line": 662, + "line": 674, "column": 77 }, "end": { - "line": 662, + "line": 674, "column": 78 } } @@ -132552,15 +134827,15 @@ "binop": null }, "value": "value", - "start": 22931, - "end": 22936, + "start": 23227, + "end": 23232, "loc": { "start": { - "line": 662, + "line": 674, "column": 78 }, "end": { - "line": 662, + "line": 674, "column": 83 } } @@ -132578,15 +134853,15 @@ "binop": null, "updateContext": null }, - "start": 22936, - "end": 22937, + "start": 23232, + "end": 23233, "loc": { "start": { - "line": 662, + "line": 674, "column": 83 }, "end": { - "line": 662, + "line": 674, "column": 84 } } @@ -132604,15 +134879,15 @@ "binop": null }, "value": "ctx", - "start": 22966, - "end": 22969, + "start": 23262, + "end": 23265, "loc": { "start": { - "line": 663, + "line": 675, "column": 28 }, "end": { - "line": 663, + "line": 675, "column": 31 } } @@ -132630,15 +134905,15 @@ "binop": null, "updateContext": null }, - "start": 22969, - "end": 22970, + "start": 23265, + "end": 23266, "loc": { "start": { - "line": 663, + "line": 675, "column": 31 }, "end": { - "line": 663, + "line": 675, "column": 32 } } @@ -132656,15 +134931,15 @@ "binop": null }, "value": "stats", - "start": 22970, - "end": 22975, + "start": 23266, + "end": 23271, "loc": { "start": { - "line": 663, + "line": 675, "column": 32 }, "end": { - "line": 663, + "line": 675, "column": 37 } } @@ -132682,15 +134957,15 @@ "binop": null, "updateContext": null }, - "start": 22975, - "end": 22976, + "start": 23271, + "end": 23272, "loc": { "start": { - "line": 663, + "line": 675, "column": 37 }, "end": { - "line": 663, + "line": 675, "column": 38 } } @@ -132708,15 +134983,15 @@ "binop": null }, "value": "numUVs", - "start": 22976, - "end": 22982, + "start": 23272, + "end": 23278, "loc": { "start": { - "line": 663, + "line": 675, "column": 38 }, "end": { - "line": 663, + "line": 675, "column": 44 } } @@ -132735,15 +135010,15 @@ "updateContext": null }, "value": "+=", - "start": 22983, - "end": 22985, + "start": 23279, + "end": 23281, "loc": { "start": { - "line": 663, + "line": 675, "column": 45 }, "end": { - "line": 663, + "line": 675, "column": 47 } } @@ -132761,15 +135036,15 @@ "binop": null }, "value": "geometryCfg", - "start": 22986, - "end": 22997, + "start": 23282, + "end": 23293, "loc": { "start": { - "line": 663, + "line": 675, "column": 48 }, "end": { - "line": 663, + "line": 675, "column": 59 } } @@ -132787,15 +135062,15 @@ "binop": null, "updateContext": null }, - "start": 22997, - "end": 22998, + "start": 23293, + "end": 23294, "loc": { "start": { - "line": 663, + "line": 675, "column": 59 }, "end": { - "line": 663, + "line": 675, "column": 60 } } @@ -132813,15 +135088,15 @@ "binop": null }, "value": "uvs", - "start": 22998, - "end": 23001, + "start": 23294, + "end": 23297, "loc": { "start": { - "line": 663, + "line": 675, "column": 60 }, "end": { - "line": 663, + "line": 675, "column": 63 } } @@ -132839,15 +135114,15 @@ "binop": null, "updateContext": null }, - "start": 23001, - "end": 23002, + "start": 23297, + "end": 23298, "loc": { "start": { - "line": 663, + "line": 675, "column": 63 }, "end": { - "line": 663, + "line": 675, "column": 64 } } @@ -132865,15 +135140,15 @@ "binop": null }, "value": "length", - "start": 23002, - "end": 23008, + "start": 23298, + "end": 23304, "loc": { "start": { - "line": 663, + "line": 675, "column": 64 }, "end": { - "line": 663, + "line": 675, "column": 70 } } @@ -132892,15 +135167,15 @@ "updateContext": null }, "value": "/", - "start": 23009, - "end": 23010, + "start": 23305, + "end": 23306, "loc": { "start": { - "line": 663, + "line": 675, "column": 71 }, "end": { - "line": 663, + "line": 675, "column": 72 } } @@ -132919,15 +135194,15 @@ "updateContext": null }, "value": 2, - "start": 23011, - "end": 23012, + "start": 23307, + "end": 23308, "loc": { "start": { - "line": 663, + "line": 675, "column": 73 }, "end": { - "line": 663, + "line": 675, "column": 74 } } @@ -132945,15 +135220,15 @@ "binop": null, "updateContext": null }, - "start": 23012, - "end": 23013, + "start": 23308, + "end": 23309, "loc": { "start": { - "line": 663, + "line": 675, "column": 74 }, "end": { - "line": 663, + "line": 675, "column": 75 } } @@ -132970,15 +135245,15 @@ "postfix": false, "binop": null }, - "start": 23038, - "end": 23039, + "start": 23334, + "end": 23335, "loc": { "start": { - "line": 664, + "line": 676, "column": 24 }, "end": { - "line": 664, + "line": 676, "column": 25 } } @@ -132995,15 +135270,15 @@ "postfix": false, "binop": null }, - "start": 23060, - "end": 23061, + "start": 23356, + "end": 23357, "loc": { "start": { - "line": 665, + "line": 677, "column": 20 }, "end": { - "line": 665, + "line": 677, "column": 21 } } @@ -133023,15 +135298,15 @@ "updateContext": null }, "value": "if", - "start": 23082, - "end": 23084, + "start": 23378, + "end": 23380, "loc": { "start": { - "line": 666, + "line": 678, "column": 20 }, "end": { - "line": 666, + "line": 678, "column": 22 } } @@ -133048,15 +135323,15 @@ "postfix": false, "binop": null }, - "start": 23085, - "end": 23086, + "start": 23381, + "end": 23382, "loc": { "start": { - "line": 666, + "line": 678, "column": 23 }, "end": { - "line": 666, + "line": 678, "column": 24 } } @@ -133074,15 +135349,15 @@ "binop": null }, "value": "primitive", - "start": 23086, - "end": 23095, + "start": 23382, + "end": 23391, "loc": { "start": { - "line": 666, + "line": 678, "column": 24 }, "end": { - "line": 666, + "line": 678, "column": 33 } } @@ -133100,15 +135375,15 @@ "binop": null, "updateContext": null }, - "start": 23095, - "end": 23096, + "start": 23391, + "end": 23392, "loc": { "start": { - "line": 666, + "line": 678, "column": 33 }, "end": { - "line": 666, + "line": 678, "column": 34 } } @@ -133126,15 +135401,15 @@ "binop": null }, "value": "indices", - "start": 23096, - "end": 23103, + "start": 23392, + "end": 23399, "loc": { "start": { - "line": 666, + "line": 678, "column": 34 }, "end": { - "line": 666, + "line": 678, "column": 41 } } @@ -133151,15 +135426,15 @@ "postfix": false, "binop": null }, - "start": 23103, - "end": 23104, + "start": 23399, + "end": 23400, "loc": { "start": { - "line": 666, + "line": 678, "column": 41 }, "end": { - "line": 666, + "line": 678, "column": 42 } } @@ -133176,15 +135451,15 @@ "postfix": false, "binop": null }, - "start": 23105, - "end": 23106, + "start": 23401, + "end": 23402, "loc": { "start": { - "line": 666, + "line": 678, "column": 43 }, "end": { - "line": 666, + "line": 678, "column": 44 } } @@ -133202,15 +135477,15 @@ "binop": null }, "value": "geometryCfg", - "start": 23131, - "end": 23142, + "start": 23427, + "end": 23438, "loc": { "start": { - "line": 667, + "line": 679, "column": 24 }, "end": { - "line": 667, + "line": 679, "column": 35 } } @@ -133228,15 +135503,15 @@ "binop": null, "updateContext": null }, - "start": 23142, - "end": 23143, + "start": 23438, + "end": 23439, "loc": { "start": { - "line": 667, + "line": 679, "column": 35 }, "end": { - "line": 667, + "line": 679, "column": 36 } } @@ -133254,15 +135529,15 @@ "binop": null }, "value": "indices", - "start": 23143, - "end": 23150, + "start": 23439, + "end": 23446, "loc": { "start": { - "line": 667, + "line": 679, "column": 36 }, "end": { - "line": 667, + "line": 679, "column": 43 } } @@ -133281,15 +135556,15 @@ "updateContext": null }, "value": "=", - "start": 23151, - "end": 23152, + "start": 23447, + "end": 23448, "loc": { "start": { - "line": 667, + "line": 679, "column": 44 }, "end": { - "line": 667, + "line": 679, "column": 45 } } @@ -133307,15 +135582,15 @@ "binop": null }, "value": "primitive", - "start": 23153, - "end": 23162, + "start": 23449, + "end": 23458, "loc": { "start": { - "line": 667, + "line": 679, "column": 46 }, "end": { - "line": 667, + "line": 679, "column": 55 } } @@ -133333,15 +135608,15 @@ "binop": null, "updateContext": null }, - "start": 23162, - "end": 23163, + "start": 23458, + "end": 23459, "loc": { "start": { - "line": 667, + "line": 679, "column": 55 }, "end": { - "line": 667, + "line": 679, "column": 56 } } @@ -133359,15 +135634,15 @@ "binop": null }, "value": "indices", - "start": 23163, - "end": 23170, + "start": 23459, + "end": 23466, "loc": { "start": { - "line": 667, + "line": 679, "column": 56 }, "end": { - "line": 667, + "line": 679, "column": 63 } } @@ -133385,15 +135660,15 @@ "binop": null, "updateContext": null }, - "start": 23170, - "end": 23171, + "start": 23466, + "end": 23467, "loc": { "start": { - "line": 667, + "line": 679, "column": 63 }, "end": { - "line": 667, + "line": 679, "column": 64 } } @@ -133411,15 +135686,15 @@ "binop": null }, "value": "value", - "start": 23171, - "end": 23176, + "start": 23467, + "end": 23472, "loc": { "start": { - "line": 667, + "line": 679, "column": 64 }, "end": { - "line": 667, + "line": 679, "column": 69 } } @@ -133437,15 +135712,15 @@ "binop": null, "updateContext": null }, - "start": 23176, - "end": 23177, + "start": 23472, + "end": 23473, "loc": { "start": { - "line": 667, + "line": 679, "column": 69 }, "end": { - "line": 667, + "line": 679, "column": 70 } } @@ -133465,15 +135740,15 @@ "updateContext": null }, "value": "if", - "start": 23202, - "end": 23204, + "start": 23498, + "end": 23500, "loc": { "start": { - "line": 668, + "line": 680, "column": 24 }, "end": { - "line": 668, + "line": 680, "column": 26 } } @@ -133490,15 +135765,15 @@ "postfix": false, "binop": null }, - "start": 23205, - "end": 23206, + "start": 23501, + "end": 23502, "loc": { "start": { - "line": 668, + "line": 680, "column": 27 }, "end": { - "line": 668, + "line": 680, "column": 28 } } @@ -133516,15 +135791,15 @@ "binop": null }, "value": "primitive", - "start": 23206, - "end": 23215, + "start": 23502, + "end": 23511, "loc": { "start": { - "line": 668, + "line": 680, "column": 28 }, "end": { - "line": 668, + "line": 680, "column": 37 } } @@ -133542,15 +135817,15 @@ "binop": null, "updateContext": null }, - "start": 23215, - "end": 23216, + "start": 23511, + "end": 23512, "loc": { "start": { - "line": 668, + "line": 680, "column": 37 }, "end": { - "line": 668, + "line": 680, "column": 38 } } @@ -133568,15 +135843,15 @@ "binop": null }, "value": "mode", - "start": 23216, - "end": 23220, + "start": 23512, + "end": 23516, "loc": { "start": { - "line": 668, + "line": 680, "column": 38 }, "end": { - "line": 668, + "line": 680, "column": 42 } } @@ -133595,15 +135870,15 @@ "updateContext": null }, "value": "===", - "start": 23221, - "end": 23224, + "start": 23517, + "end": 23520, "loc": { "start": { - "line": 668, + "line": 680, "column": 43 }, "end": { - "line": 668, + "line": 680, "column": 46 } } @@ -133622,15 +135897,15 @@ "updateContext": null }, "value": 4, - "start": 23225, - "end": 23226, + "start": 23521, + "end": 23522, "loc": { "start": { - "line": 668, + "line": 680, "column": 47 }, "end": { - "line": 668, + "line": 680, "column": 48 } } @@ -133647,15 +135922,15 @@ "postfix": false, "binop": null }, - "start": 23226, - "end": 23227, + "start": 23522, + "end": 23523, "loc": { "start": { - "line": 668, + "line": 680, "column": 48 }, "end": { - "line": 668, + "line": 680, "column": 49 } } @@ -133672,15 +135947,15 @@ "postfix": false, "binop": null }, - "start": 23228, - "end": 23229, + "start": 23524, + "end": 23525, "loc": { "start": { - "line": 668, + "line": 680, "column": 50 }, "end": { - "line": 668, + "line": 680, "column": 51 } } @@ -133698,15 +135973,15 @@ "binop": null }, "value": "ctx", - "start": 23258, - "end": 23261, + "start": 23554, + "end": 23557, "loc": { "start": { - "line": 669, + "line": 681, "column": 28 }, "end": { - "line": 669, + "line": 681, "column": 31 } } @@ -133724,15 +135999,15 @@ "binop": null, "updateContext": null }, - "start": 23261, - "end": 23262, + "start": 23557, + "end": 23558, "loc": { "start": { - "line": 669, + "line": 681, "column": 31 }, "end": { - "line": 669, + "line": 681, "column": 32 } } @@ -133750,15 +136025,15 @@ "binop": null }, "value": "stats", - "start": 23262, - "end": 23267, + "start": 23558, + "end": 23563, "loc": { "start": { - "line": 669, + "line": 681, "column": 32 }, "end": { - "line": 669, + "line": 681, "column": 37 } } @@ -133776,15 +136051,15 @@ "binop": null, "updateContext": null }, - "start": 23267, - "end": 23268, + "start": 23563, + "end": 23564, "loc": { "start": { - "line": 669, + "line": 681, "column": 37 }, "end": { - "line": 669, + "line": 681, "column": 38 } } @@ -133802,15 +136077,15 @@ "binop": null }, "value": "numTriangles", - "start": 23268, - "end": 23280, + "start": 23564, + "end": 23576, "loc": { "start": { - "line": 669, + "line": 681, "column": 38 }, "end": { - "line": 669, + "line": 681, "column": 50 } } @@ -133829,15 +136104,15 @@ "updateContext": null }, "value": "+=", - "start": 23281, - "end": 23283, + "start": 23577, + "end": 23579, "loc": { "start": { - "line": 669, + "line": 681, "column": 51 }, "end": { - "line": 669, + "line": 681, "column": 53 } } @@ -133855,15 +136130,15 @@ "binop": null }, "value": "geometryCfg", - "start": 23284, - "end": 23295, + "start": 23580, + "end": 23591, "loc": { "start": { - "line": 669, + "line": 681, "column": 54 }, "end": { - "line": 669, + "line": 681, "column": 65 } } @@ -133881,15 +136156,15 @@ "binop": null, "updateContext": null }, - "start": 23295, - "end": 23296, + "start": 23591, + "end": 23592, "loc": { "start": { - "line": 669, + "line": 681, "column": 65 }, "end": { - "line": 669, + "line": 681, "column": 66 } } @@ -133907,15 +136182,15 @@ "binop": null }, "value": "indices", - "start": 23296, - "end": 23303, + "start": 23592, + "end": 23599, "loc": { "start": { - "line": 669, + "line": 681, "column": 66 }, "end": { - "line": 669, + "line": 681, "column": 73 } } @@ -133933,15 +136208,15 @@ "binop": null, "updateContext": null }, - "start": 23303, - "end": 23304, + "start": 23599, + "end": 23600, "loc": { "start": { - "line": 669, + "line": 681, "column": 73 }, "end": { - "line": 669, + "line": 681, "column": 74 } } @@ -133959,15 +136234,15 @@ "binop": null }, "value": "length", - "start": 23304, - "end": 23310, + "start": 23600, + "end": 23606, "loc": { "start": { - "line": 669, + "line": 681, "column": 74 }, "end": { - "line": 669, + "line": 681, "column": 80 } } @@ -133986,15 +136261,15 @@ "updateContext": null }, "value": "/", - "start": 23311, - "end": 23312, + "start": 23607, + "end": 23608, "loc": { "start": { - "line": 669, + "line": 681, "column": 81 }, "end": { - "line": 669, + "line": 681, "column": 82 } } @@ -134013,15 +136288,15 @@ "updateContext": null }, "value": 3, - "start": 23313, - "end": 23314, + "start": 23609, + "end": 23610, "loc": { "start": { - "line": 669, + "line": 681, "column": 83 }, "end": { - "line": 669, + "line": 681, "column": 84 } } @@ -134039,15 +136314,15 @@ "binop": null, "updateContext": null }, - "start": 23314, - "end": 23315, + "start": 23610, + "end": 23611, "loc": { "start": { - "line": 669, + "line": 681, "column": 84 }, "end": { - "line": 669, + "line": 681, "column": 85 } } @@ -134064,15 +136339,15 @@ "postfix": false, "binop": null }, - "start": 23340, - "end": 23341, + "start": 23636, + "end": 23637, "loc": { "start": { - "line": 670, + "line": 682, "column": 24 }, "end": { - "line": 670, + "line": 682, "column": 25 } } @@ -134089,15 +136364,15 @@ "postfix": false, "binop": null }, - "start": 23362, - "end": 23363, + "start": 23658, + "end": 23659, "loc": { "start": { - "line": 671, + "line": 683, "column": 20 }, "end": { - "line": 671, + "line": 683, "column": 21 } } @@ -134115,15 +136390,15 @@ "binop": null }, "value": "ctx", - "start": 23384, - "end": 23387, + "start": 23680, + "end": 23683, "loc": { "start": { - "line": 672, + "line": 684, "column": 20 }, "end": { - "line": 672, + "line": 684, "column": 23 } } @@ -134141,15 +136416,15 @@ "binop": null, "updateContext": null }, - "start": 23387, - "end": 23388, + "start": 23683, + "end": 23684, "loc": { "start": { - "line": 672, + "line": 684, "column": 23 }, "end": { - "line": 672, + "line": 684, "column": 24 } } @@ -134167,15 +136442,15 @@ "binop": null }, "value": "xktModel", - "start": 23388, - "end": 23396, + "start": 23684, + "end": 23692, "loc": { "start": { - "line": 672, + "line": 684, "column": 24 }, "end": { - "line": 672, + "line": 684, "column": 32 } } @@ -134193,15 +136468,15 @@ "binop": null, "updateContext": null }, - "start": 23396, - "end": 23397, + "start": 23692, + "end": 23693, "loc": { "start": { - "line": 672, + "line": 684, "column": 32 }, "end": { - "line": 672, + "line": 684, "column": 33 } } @@ -134219,15 +136494,15 @@ "binop": null }, "value": "createGeometry", - "start": 23397, - "end": 23411, + "start": 23693, + "end": 23707, "loc": { "start": { - "line": 672, + "line": 684, "column": 33 }, "end": { - "line": 672, + "line": 684, "column": 47 } } @@ -134244,15 +136519,15 @@ "postfix": false, "binop": null }, - "start": 23411, - "end": 23412, + "start": 23707, + "end": 23708, "loc": { "start": { - "line": 672, + "line": 684, "column": 47 }, "end": { - "line": 672, + "line": 684, "column": 48 } } @@ -134270,15 +136545,15 @@ "binop": null }, "value": "geometryCfg", - "start": 23412, - "end": 23423, + "start": 23708, + "end": 23719, "loc": { "start": { - "line": 672, + "line": 684, "column": 48 }, "end": { - "line": 672, + "line": 684, "column": 59 } } @@ -134295,15 +136570,15 @@ "postfix": false, "binop": null }, - "start": 23423, - "end": 23424, + "start": 23719, + "end": 23720, "loc": { "start": { - "line": 672, + "line": 684, "column": 59 }, "end": { - "line": 672, + "line": 684, "column": 60 } } @@ -134321,15 +136596,15 @@ "binop": null, "updateContext": null }, - "start": 23424, - "end": 23425, + "start": 23720, + "end": 23721, "loc": { "start": { - "line": 672, + "line": 684, "column": 60 }, "end": { - "line": 672, + "line": 684, "column": 61 } } @@ -134346,17 +136621,17 @@ "postfix": false, "binop": null }, - "value": "primitive", - "start": 23446, - "end": 23455, + "value": "ctx", + "start": 23742, + "end": 23745, "loc": { "start": { - "line": 673, + "line": 685, "column": 20 }, "end": { - "line": 673, - "column": 29 + "line": 685, + "column": 23 } } }, @@ -134373,16 +136648,16 @@ "binop": null, "updateContext": null }, - "start": 23455, - "end": 23456, + "start": 23745, + "end": 23746, "loc": { "start": { - "line": 673, - "column": 29 + "line": 685, + "column": 23 }, "end": { - "line": 673, - "column": 30 + "line": 685, + "column": 24 } } }, @@ -134398,17 +136673,95 @@ "postfix": false, "binop": null }, - "value": "_xktGeometryId", - "start": 23456, - "end": 23470, + "value": "geometriesCreated", + "start": 23746, + "end": 23763, "loc": { "start": { - "line": 673, - "column": 30 + "line": 685, + "column": 24 }, "end": { - "line": 673, - "column": 44 + "line": 685, + "column": 41 + } + } + }, + { + "type": { + "label": "[", + "beforeExpr": true, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23763, + "end": 23764, + "loc": { + "start": { + "line": 685, + "column": 41 + }, + "end": { + "line": 685, + "column": 42 + } + } + }, + { + "type": { + "label": "name", + "beforeExpr": false, + "startsExpr": true, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null + }, + "value": "geometryId", + "start": 23764, + "end": 23774, + "loc": { + "start": { + "line": 685, + "column": 42 + }, + "end": { + "line": 685, + "column": 52 + } + } + }, + { + "type": { + "label": "]", + "beforeExpr": false, + "startsExpr": false, + "rightAssociative": false, + "isLoop": false, + "isAssign": false, + "prefix": false, + "postfix": false, + "binop": null, + "updateContext": null + }, + "start": 23774, + "end": 23775, + "loc": { + "start": { + "line": 685, + "column": 52 + }, + "end": { + "line": 685, + "column": 53 } } }, @@ -134426,22 +136779,23 @@ "updateContext": null }, "value": "=", - "start": 23471, - "end": 23472, + "start": 23776, + "end": 23777, "loc": { "start": { - "line": 673, - "column": 45 + "line": 685, + "column": 54 }, "end": { - "line": 673, - "column": 46 + "line": 685, + "column": 55 } } }, { "type": { - "label": "name", + "label": "true", + "keyword": "true", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, @@ -134449,18 +136803,19 @@ "isAssign": false, "prefix": false, "postfix": false, - "binop": null + "binop": null, + "updateContext": null }, - "value": "xktGeometryId", - "start": 23473, - "end": 23486, + "value": "true", + "start": 23778, + "end": 23782, "loc": { "start": { - "line": 673, - "column": 47 + "line": 685, + "column": 56 }, "end": { - "line": 673, + "line": 685, "column": 60 } } @@ -134478,15 +136833,15 @@ "binop": null, "updateContext": null }, - "start": 23486, - "end": 23487, + "start": 23782, + "end": 23783, "loc": { "start": { - "line": 673, + "line": 685, "column": 60 }, "end": { - "line": 673, + "line": 685, "column": 61 } } @@ -134504,15 +136859,15 @@ "binop": null }, "value": "ctx", - "start": 23508, - "end": 23511, + "start": 23804, + "end": 23807, "loc": { "start": { - "line": 674, + "line": 686, "column": 20 }, "end": { - "line": 674, + "line": 686, "column": 23 } } @@ -134530,15 +136885,15 @@ "binop": null, "updateContext": null }, - "start": 23511, - "end": 23512, + "start": 23807, + "end": 23808, "loc": { "start": { - "line": 674, + "line": 686, "column": 23 }, "end": { - "line": 674, + "line": 686, "column": 24 } } @@ -134556,15 +136911,15 @@ "binop": null }, "value": "stats", - "start": 23512, - "end": 23517, + "start": 23808, + "end": 23813, "loc": { "start": { - "line": 674, + "line": 686, "column": 24 }, "end": { - "line": 674, + "line": 686, "column": 29 } } @@ -134582,15 +136937,15 @@ "binop": null, "updateContext": null }, - "start": 23517, - "end": 23518, + "start": 23813, + "end": 23814, "loc": { "start": { - "line": 674, + "line": 686, "column": 29 }, "end": { - "line": 674, + "line": 686, "column": 30 } } @@ -134608,15 +136963,15 @@ "binop": null }, "value": "numGeometries", - "start": 23518, - "end": 23531, + "start": 23814, + "end": 23827, "loc": { "start": { - "line": 674, + "line": 686, "column": 30 }, "end": { - "line": 674, + "line": 686, "column": 43 } } @@ -134634,15 +136989,15 @@ "binop": null }, "value": "++", - "start": 23531, - "end": 23533, + "start": 23827, + "end": 23829, "loc": { "start": { - "line": 674, + "line": 686, "column": 43 }, "end": { - "line": 674, + "line": 686, "column": 45 } } @@ -134660,15 +137015,15 @@ "binop": null, "updateContext": null }, - "start": 23533, - "end": 23534, + "start": 23829, + "end": 23830, "loc": { "start": { - "line": 674, + "line": 686, "column": 45 }, "end": { - "line": 674, + "line": 686, "column": 46 } } @@ -134685,15 +137040,15 @@ "postfix": false, "binop": null }, - "start": 23551, - "end": 23552, + "start": 23847, + "end": 23848, "loc": { "start": { - "line": 675, + "line": 687, "column": 16 }, "end": { - "line": 675, + "line": 687, "column": 17 } } @@ -134713,15 +137068,15 @@ "updateContext": null }, "value": "const", - "start": 23569, - "end": 23574, + "start": 23865, + "end": 23870, "loc": { "start": { - "line": 676, + "line": 688, "column": 16 }, "end": { - "line": 676, + "line": 688, "column": 21 } } @@ -134739,15 +137094,15 @@ "binop": null }, "value": "xktMeshId", - "start": 23575, - "end": 23584, + "start": 23871, + "end": 23880, "loc": { "start": { - "line": 676, + "line": 688, "column": 22 }, "end": { - "line": 676, + "line": 688, "column": 31 } } @@ -134766,15 +137121,15 @@ "updateContext": null }, "value": "=", - "start": 23585, - "end": 23586, + "start": 23881, + "end": 23882, "loc": { "start": { - "line": 676, + "line": 688, "column": 32 }, "end": { - "line": 676, + "line": 688, "column": 33 } } @@ -134792,15 +137147,15 @@ "binop": null }, "value": "ctx", - "start": 23587, - "end": 23590, + "start": 23883, + "end": 23886, "loc": { "start": { - "line": 676, + "line": 688, "column": 34 }, "end": { - "line": 676, + "line": 688, "column": 37 } } @@ -134818,15 +137173,15 @@ "binop": null, "updateContext": null }, - "start": 23590, - "end": 23591, + "start": 23886, + "end": 23887, "loc": { "start": { - "line": 676, + "line": 688, "column": 37 }, "end": { - "line": 676, + "line": 688, "column": 38 } } @@ -134844,15 +137199,15 @@ "binop": null }, "value": "nextId", - "start": 23591, - "end": 23597, + "start": 23887, + "end": 23893, "loc": { "start": { - "line": 676, + "line": 688, "column": 38 }, "end": { - "line": 676, + "line": 688, "column": 44 } } @@ -134870,15 +137225,15 @@ "binop": null }, "value": "++", - "start": 23597, - "end": 23599, + "start": 23893, + "end": 23895, "loc": { "start": { - "line": 676, + "line": 688, "column": 44 }, "end": { - "line": 676, + "line": 688, "column": 46 } } @@ -134896,15 +137251,15 @@ "binop": null, "updateContext": null }, - "start": 23599, - "end": 23600, + "start": 23895, + "end": 23896, "loc": { "start": { - "line": 676, + "line": 688, "column": 46 }, "end": { - "line": 676, + "line": 688, "column": 47 } } @@ -134924,15 +137279,15 @@ "updateContext": null }, "value": "const", - "start": 23617, - "end": 23622, + "start": 23913, + "end": 23918, "loc": { "start": { - "line": 677, + "line": 689, "column": 16 }, "end": { - "line": 677, + "line": 689, "column": 21 } } @@ -134950,15 +137305,15 @@ "binop": null }, "value": "meshCfg", - "start": 23623, - "end": 23630, + "start": 23919, + "end": 23926, "loc": { "start": { - "line": 677, + "line": 689, "column": 22 }, "end": { - "line": 677, + "line": 689, "column": 29 } } @@ -134977,15 +137332,15 @@ "updateContext": null }, "value": "=", - "start": 23631, - "end": 23632, + "start": 23927, + "end": 23928, "loc": { "start": { - "line": 677, + "line": 689, "column": 30 }, "end": { - "line": 677, + "line": 689, "column": 31 } } @@ -135002,15 +137357,15 @@ "postfix": false, "binop": null }, - "start": 23633, - "end": 23634, + "start": 23929, + "end": 23930, "loc": { "start": { - "line": 677, + "line": 689, "column": 32 }, "end": { - "line": 677, + "line": 689, "column": 33 } } @@ -135028,15 +137383,15 @@ "binop": null }, "value": "meshId", - "start": 23655, - "end": 23661, + "start": 23951, + "end": 23957, "loc": { "start": { - "line": 678, + "line": 690, "column": 20 }, "end": { - "line": 678, + "line": 690, "column": 26 } } @@ -135054,15 +137409,15 @@ "binop": null, "updateContext": null }, - "start": 23661, - "end": 23662, + "start": 23957, + "end": 23958, "loc": { "start": { - "line": 678, + "line": 690, "column": 26 }, "end": { - "line": 678, + "line": 690, "column": 27 } } @@ -135080,15 +137435,15 @@ "binop": null }, "value": "xktMeshId", - "start": 23663, - "end": 23672, + "start": 23959, + "end": 23968, "loc": { "start": { - "line": 678, + "line": 690, "column": 28 }, "end": { - "line": 678, + "line": 690, "column": 37 } } @@ -135106,15 +137461,15 @@ "binop": null, "updateContext": null }, - "start": 23672, - "end": 23673, + "start": 23968, + "end": 23969, "loc": { "start": { - "line": 678, + "line": 690, "column": 37 }, "end": { - "line": 678, + "line": 690, "column": 38 } } @@ -135132,22 +137487,22 @@ "binop": null }, "value": "geometryId", - "start": 23694, - "end": 23704, + "start": 23990, + "end": 24000, "loc": { "start": { - "line": 679, + "line": 691, "column": 20 }, "end": { - "line": 679, + "line": 691, "column": 30 } } }, { "type": { - "label": ":", + "label": ",", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, @@ -135158,123 +137513,19 @@ "binop": null, "updateContext": null }, - "start": 23704, - "end": 23705, + "start": 24000, + "end": 24001, "loc": { "start": { - "line": 679, + "line": 691, "column": 30 }, "end": { - "line": 679, + "line": 691, "column": 31 } } }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "primitive", - "start": 23706, - "end": 23715, - "loc": { - "start": { - "line": 679, - "column": 32 - }, - "end": { - "line": 679, - "column": 41 - } - } - }, - { - "type": { - "label": ".", - "beforeExpr": false, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 23715, - "end": 23716, - "loc": { - "start": { - "line": 679, - "column": 41 - }, - "end": { - "line": 679, - "column": 42 - } - } - }, - { - "type": { - "label": "name", - "beforeExpr": false, - "startsExpr": true, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null - }, - "value": "_xktGeometryId", - "start": 23716, - "end": 23730, - "loc": { - "start": { - "line": 679, - "column": 42 - }, - "end": { - "line": 679, - "column": 56 - } - } - }, - { - "type": { - "label": ",", - "beforeExpr": true, - "startsExpr": false, - "rightAssociative": false, - "isLoop": false, - "isAssign": false, - "prefix": false, - "postfix": false, - "binop": null, - "updateContext": null - }, - "start": 23730, - "end": 23731, - "loc": { - "start": { - "line": 679, - "column": 56 - }, - "end": { - "line": 679, - "column": 57 - } - } - }, { "type": { "label": "name", @@ -135288,15 +137539,15 @@ "binop": null }, "value": "matrix", - "start": 23752, - "end": 23758, + "start": 24022, + "end": 24028, "loc": { "start": { - "line": 680, + "line": 692, "column": 20 }, "end": { - "line": 680, + "line": 692, "column": 26 } } @@ -135314,15 +137565,15 @@ "binop": null, "updateContext": null }, - "start": 23758, - "end": 23759, + "start": 24028, + "end": 24029, "loc": { "start": { - "line": 680, + "line": 692, "column": 26 }, "end": { - "line": 680, + "line": 692, "column": 27 } } @@ -135340,15 +137591,15 @@ "binop": null }, "value": "matrix", - "start": 23760, - "end": 23766, + "start": 24030, + "end": 24036, "loc": { "start": { - "line": 680, + "line": 692, "column": 28 }, "end": { - "line": 680, + "line": 692, "column": 34 } } @@ -135366,15 +137617,15 @@ "binop": null, "updateContext": null }, - "start": 23767, - "end": 23768, + "start": 24037, + "end": 24038, "loc": { "start": { - "line": 680, + "line": 692, "column": 35 }, "end": { - "line": 680, + "line": 692, "column": 36 } } @@ -135392,15 +137643,15 @@ "binop": null }, "value": "matrix", - "start": 23769, - "end": 23775, + "start": 24039, + "end": 24045, "loc": { "start": { - "line": 680, + "line": 692, "column": 37 }, "end": { - "line": 680, + "line": 692, "column": 43 } } @@ -135418,15 +137669,15 @@ "binop": null, "updateContext": null }, - "start": 23775, - "end": 23776, + "start": 24045, + "end": 24046, "loc": { "start": { - "line": 680, + "line": 692, "column": 43 }, "end": { - "line": 680, + "line": 692, "column": 44 } } @@ -135444,15 +137695,15 @@ "binop": null }, "value": "slice", - "start": 23776, - "end": 23781, + "start": 24046, + "end": 24051, "loc": { "start": { - "line": 680, + "line": 692, "column": 44 }, "end": { - "line": 680, + "line": 692, "column": 49 } } @@ -135469,15 +137720,15 @@ "postfix": false, "binop": null }, - "start": 23781, - "end": 23782, + "start": 24051, + "end": 24052, "loc": { "start": { - "line": 680, + "line": 692, "column": 49 }, "end": { - "line": 680, + "line": 692, "column": 50 } } @@ -135494,15 +137745,15 @@ "postfix": false, "binop": null }, - "start": 23782, - "end": 23783, + "start": 24052, + "end": 24053, "loc": { "start": { - "line": 680, + "line": 692, "column": 50 }, "end": { - "line": 680, + "line": 692, "column": 51 } } @@ -135520,15 +137771,15 @@ "binop": null, "updateContext": null }, - "start": 23784, - "end": 23785, + "start": 24054, + "end": 24055, "loc": { "start": { - "line": 680, + "line": 692, "column": 52 }, "end": { - "line": 680, + "line": 692, "column": 53 } } @@ -135546,15 +137797,15 @@ "binop": null }, "value": "math", - "start": 23786, - "end": 23790, + "start": 24056, + "end": 24060, "loc": { "start": { - "line": 680, + "line": 692, "column": 54 }, "end": { - "line": 680, + "line": 692, "column": 58 } } @@ -135572,15 +137823,15 @@ "binop": null, "updateContext": null }, - "start": 23790, - "end": 23791, + "start": 24060, + "end": 24061, "loc": { "start": { - "line": 680, + "line": 692, "column": 58 }, "end": { - "line": 680, + "line": 692, "column": 59 } } @@ -135598,15 +137849,15 @@ "binop": null }, "value": "identityMat4", - "start": 23791, - "end": 23803, + "start": 24061, + "end": 24073, "loc": { "start": { - "line": 680, + "line": 692, "column": 59 }, "end": { - "line": 680, + "line": 692, "column": 71 } } @@ -135623,15 +137874,15 @@ "postfix": false, "binop": null }, - "start": 23803, - "end": 23804, + "start": 24073, + "end": 24074, "loc": { "start": { - "line": 680, + "line": 692, "column": 71 }, "end": { - "line": 680, + "line": 692, "column": 72 } } @@ -135648,15 +137899,15 @@ "postfix": false, "binop": null }, - "start": 23804, - "end": 23805, + "start": 24074, + "end": 24075, "loc": { "start": { - "line": 680, + "line": 692, "column": 72 }, "end": { - "line": 680, + "line": 692, "column": 73 } } @@ -135673,15 +137924,15 @@ "postfix": false, "binop": null }, - "start": 23822, - "end": 23823, + "start": 24092, + "end": 24093, "loc": { "start": { - "line": 681, + "line": 693, "column": 16 }, "end": { - "line": 681, + "line": 693, "column": 17 } } @@ -135699,15 +137950,15 @@ "binop": null, "updateContext": null }, - "start": 23823, - "end": 23824, + "start": 24093, + "end": 24094, "loc": { "start": { - "line": 681, + "line": 693, "column": 17 }, "end": { - "line": 681, + "line": 693, "column": 18 } } @@ -135727,15 +137978,15 @@ "updateContext": null }, "value": "const", - "start": 23841, - "end": 23846, + "start": 24111, + "end": 24116, "loc": { "start": { - "line": 682, + "line": 694, "column": 16 }, "end": { - "line": 682, + "line": 694, "column": 21 } } @@ -135753,15 +138004,15 @@ "binop": null }, "value": "material", - "start": 23847, - "end": 23855, + "start": 24117, + "end": 24125, "loc": { "start": { - "line": 682, + "line": 694, "column": 22 }, "end": { - "line": 682, + "line": 694, "column": 30 } } @@ -135780,15 +138031,15 @@ "updateContext": null }, "value": "=", - "start": 23856, - "end": 23857, + "start": 24126, + "end": 24127, "loc": { "start": { - "line": 682, + "line": 694, "column": 31 }, "end": { - "line": 682, + "line": 694, "column": 32 } } @@ -135806,15 +138057,15 @@ "binop": null }, "value": "primitive", - "start": 23858, - "end": 23867, + "start": 24128, + "end": 24137, "loc": { "start": { - "line": 682, + "line": 694, "column": 33 }, "end": { - "line": 682, + "line": 694, "column": 42 } } @@ -135832,15 +138083,15 @@ "binop": null, "updateContext": null }, - "start": 23867, - "end": 23868, + "start": 24137, + "end": 24138, "loc": { "start": { - "line": 682, + "line": 694, "column": 42 }, "end": { - "line": 682, + "line": 694, "column": 43 } } @@ -135858,15 +138109,15 @@ "binop": null }, "value": "material", - "start": 23868, - "end": 23876, + "start": 24138, + "end": 24146, "loc": { "start": { - "line": 682, + "line": 694, "column": 43 }, "end": { - "line": 682, + "line": 694, "column": 51 } } @@ -135884,15 +138135,15 @@ "binop": null, "updateContext": null }, - "start": 23876, - "end": 23877, + "start": 24146, + "end": 24147, "loc": { "start": { - "line": 682, + "line": 694, "column": 51 }, "end": { - "line": 682, + "line": 694, "column": 52 } } @@ -135912,15 +138163,15 @@ "updateContext": null }, "value": "if", - "start": 23894, - "end": 23896, + "start": 24164, + "end": 24166, "loc": { "start": { - "line": 683, + "line": 695, "column": 16 }, "end": { - "line": 683, + "line": 695, "column": 18 } } @@ -135937,15 +138188,15 @@ "postfix": false, "binop": null }, - "start": 23897, - "end": 23898, + "start": 24167, + "end": 24168, "loc": { "start": { - "line": 683, + "line": 695, "column": 19 }, "end": { - "line": 683, + "line": 695, "column": 20 } } @@ -135963,15 +138214,15 @@ "binop": null }, "value": "material", - "start": 23898, - "end": 23906, + "start": 24168, + "end": 24176, "loc": { "start": { - "line": 683, + "line": 695, "column": 20 }, "end": { - "line": 683, + "line": 695, "column": 28 } } @@ -135988,15 +138239,15 @@ "postfix": false, "binop": null }, - "start": 23906, - "end": 23907, + "start": 24176, + "end": 24177, "loc": { "start": { - "line": 683, + "line": 695, "column": 28 }, "end": { - "line": 683, + "line": 695, "column": 29 } } @@ -136013,15 +138264,15 @@ "postfix": false, "binop": null }, - "start": 23908, - "end": 23909, + "start": 24178, + "end": 24179, "loc": { "start": { - "line": 683, + "line": 695, "column": 30 }, "end": { - "line": 683, + "line": 695, "column": 31 } } @@ -136039,15 +138290,15 @@ "binop": null }, "value": "meshCfg", - "start": 23930, - "end": 23937, + "start": 24200, + "end": 24207, "loc": { "start": { - "line": 684, + "line": 696, "column": 20 }, "end": { - "line": 684, + "line": 696, "column": 27 } } @@ -136065,15 +138316,15 @@ "binop": null, "updateContext": null }, - "start": 23937, - "end": 23938, + "start": 24207, + "end": 24208, "loc": { "start": { - "line": 684, + "line": 696, "column": 27 }, "end": { - "line": 684, + "line": 696, "column": 28 } } @@ -136091,15 +138342,15 @@ "binop": null }, "value": "textureSetId", - "start": 23938, - "end": 23950, + "start": 24208, + "end": 24220, "loc": { "start": { - "line": 684, + "line": 696, "column": 28 }, "end": { - "line": 684, + "line": 696, "column": 40 } } @@ -136118,15 +138369,15 @@ "updateContext": null }, "value": "=", - "start": 23951, - "end": 23952, + "start": 24221, + "end": 24222, "loc": { "start": { - "line": 684, + "line": 696, "column": 41 }, "end": { - "line": 684, + "line": 696, "column": 42 } } @@ -136144,15 +138395,15 @@ "binop": null }, "value": "material", - "start": 23953, - "end": 23961, + "start": 24223, + "end": 24231, "loc": { "start": { - "line": 684, + "line": 696, "column": 43 }, "end": { - "line": 684, + "line": 696, "column": 51 } } @@ -136170,15 +138421,15 @@ "binop": null, "updateContext": null }, - "start": 23961, - "end": 23962, + "start": 24231, + "end": 24232, "loc": { "start": { - "line": 684, + "line": 696, "column": 51 }, "end": { - "line": 684, + "line": 696, "column": 52 } } @@ -136196,15 +138447,15 @@ "binop": null }, "value": "_textureSetId", - "start": 23962, - "end": 23975, + "start": 24232, + "end": 24245, "loc": { "start": { - "line": 684, + "line": 696, "column": 52 }, "end": { - "line": 684, + "line": 696, "column": 65 } } @@ -136222,15 +138473,15 @@ "binop": null, "updateContext": null }, - "start": 23975, - "end": 23976, + "start": 24245, + "end": 24246, "loc": { "start": { - "line": 684, + "line": 696, "column": 65 }, "end": { - "line": 684, + "line": 696, "column": 66 } } @@ -136248,15 +138499,15 @@ "binop": null }, "value": "meshCfg", - "start": 23997, - "end": 24004, + "start": 24267, + "end": 24274, "loc": { "start": { - "line": 685, + "line": 697, "column": 20 }, "end": { - "line": 685, + "line": 697, "column": 27 } } @@ -136274,15 +138525,15 @@ "binop": null, "updateContext": null }, - "start": 24004, - "end": 24005, + "start": 24274, + "end": 24275, "loc": { "start": { - "line": 685, + "line": 697, "column": 27 }, "end": { - "line": 685, + "line": 697, "column": 28 } } @@ -136300,15 +138551,15 @@ "binop": null }, "value": "color", - "start": 24005, - "end": 24010, + "start": 24275, + "end": 24280, "loc": { "start": { - "line": 685, + "line": 697, "column": 28 }, "end": { - "line": 685, + "line": 697, "column": 33 } } @@ -136327,15 +138578,15 @@ "updateContext": null }, "value": "=", - "start": 24011, - "end": 24012, + "start": 24281, + "end": 24282, "loc": { "start": { - "line": 685, + "line": 697, "column": 34 }, "end": { - "line": 685, + "line": 697, "column": 35 } } @@ -136353,15 +138604,15 @@ "binop": null }, "value": "material", - "start": 24013, - "end": 24021, + "start": 24283, + "end": 24291, "loc": { "start": { - "line": 685, + "line": 697, "column": 36 }, "end": { - "line": 685, + "line": 697, "column": 44 } } @@ -136379,15 +138630,15 @@ "binop": null, "updateContext": null }, - "start": 24021, - "end": 24022, + "start": 24291, + "end": 24292, "loc": { "start": { - "line": 685, + "line": 697, "column": 44 }, "end": { - "line": 685, + "line": 697, "column": 45 } } @@ -136405,15 +138656,15 @@ "binop": null }, "value": "_attributes", - "start": 24022, - "end": 24033, + "start": 24292, + "end": 24303, "loc": { "start": { - "line": 685, + "line": 697, "column": 45 }, "end": { - "line": 685, + "line": 697, "column": 56 } } @@ -136431,15 +138682,15 @@ "binop": null, "updateContext": null }, - "start": 24033, - "end": 24034, + "start": 24303, + "end": 24304, "loc": { "start": { - "line": 685, + "line": 697, "column": 56 }, "end": { - "line": 685, + "line": 697, "column": 57 } } @@ -136457,15 +138708,15 @@ "binop": null }, "value": "color", - "start": 24034, - "end": 24039, + "start": 24304, + "end": 24309, "loc": { "start": { - "line": 685, + "line": 697, "column": 57 }, "end": { - "line": 685, + "line": 697, "column": 62 } } @@ -136483,15 +138734,15 @@ "binop": null, "updateContext": null }, - "start": 24039, - "end": 24040, + "start": 24309, + "end": 24310, "loc": { "start": { - "line": 685, + "line": 697, "column": 62 }, "end": { - "line": 685, + "line": 697, "column": 63 } } @@ -136509,15 +138760,15 @@ "binop": null }, "value": "meshCfg", - "start": 24061, - "end": 24068, + "start": 24331, + "end": 24338, "loc": { "start": { - "line": 686, + "line": 698, "column": 20 }, "end": { - "line": 686, + "line": 698, "column": 27 } } @@ -136535,15 +138786,15 @@ "binop": null, "updateContext": null }, - "start": 24068, - "end": 24069, + "start": 24338, + "end": 24339, "loc": { "start": { - "line": 686, + "line": 698, "column": 27 }, "end": { - "line": 686, + "line": 698, "column": 28 } } @@ -136561,15 +138812,15 @@ "binop": null }, "value": "opacity", - "start": 24069, - "end": 24076, + "start": 24339, + "end": 24346, "loc": { "start": { - "line": 686, + "line": 698, "column": 28 }, "end": { - "line": 686, + "line": 698, "column": 35 } } @@ -136588,15 +138839,15 @@ "updateContext": null }, "value": "=", - "start": 24077, - "end": 24078, + "start": 24347, + "end": 24348, "loc": { "start": { - "line": 686, + "line": 698, "column": 36 }, "end": { - "line": 686, + "line": 698, "column": 37 } } @@ -136614,15 +138865,15 @@ "binop": null }, "value": "material", - "start": 24079, - "end": 24087, + "start": 24349, + "end": 24357, "loc": { "start": { - "line": 686, + "line": 698, "column": 38 }, "end": { - "line": 686, + "line": 698, "column": 46 } } @@ -136640,15 +138891,15 @@ "binop": null, "updateContext": null }, - "start": 24087, - "end": 24088, + "start": 24357, + "end": 24358, "loc": { "start": { - "line": 686, + "line": 698, "column": 46 }, "end": { - "line": 686, + "line": 698, "column": 47 } } @@ -136666,15 +138917,15 @@ "binop": null }, "value": "_attributes", - "start": 24088, - "end": 24099, + "start": 24358, + "end": 24369, "loc": { "start": { - "line": 686, + "line": 698, "column": 47 }, "end": { - "line": 686, + "line": 698, "column": 58 } } @@ -136692,15 +138943,15 @@ "binop": null, "updateContext": null }, - "start": 24099, - "end": 24100, + "start": 24369, + "end": 24370, "loc": { "start": { - "line": 686, + "line": 698, "column": 58 }, "end": { - "line": 686, + "line": 698, "column": 59 } } @@ -136718,15 +138969,15 @@ "binop": null }, "value": "opacity", - "start": 24100, - "end": 24107, + "start": 24370, + "end": 24377, "loc": { "start": { - "line": 686, + "line": 698, "column": 59 }, "end": { - "line": 686, + "line": 698, "column": 66 } } @@ -136744,15 +138995,15 @@ "binop": null, "updateContext": null }, - "start": 24107, - "end": 24108, + "start": 24377, + "end": 24378, "loc": { "start": { - "line": 686, + "line": 698, "column": 66 }, "end": { - "line": 686, + "line": 698, "column": 67 } } @@ -136770,15 +139021,15 @@ "binop": null }, "value": "meshCfg", - "start": 24129, - "end": 24136, + "start": 24399, + "end": 24406, "loc": { "start": { - "line": 687, + "line": 699, "column": 20 }, "end": { - "line": 687, + "line": 699, "column": 27 } } @@ -136796,15 +139047,15 @@ "binop": null, "updateContext": null }, - "start": 24136, - "end": 24137, + "start": 24406, + "end": 24407, "loc": { "start": { - "line": 687, + "line": 699, "column": 27 }, "end": { - "line": 687, + "line": 699, "column": 28 } } @@ -136822,15 +139073,15 @@ "binop": null }, "value": "metallic", - "start": 24137, - "end": 24145, + "start": 24407, + "end": 24415, "loc": { "start": { - "line": 687, + "line": 699, "column": 28 }, "end": { - "line": 687, + "line": 699, "column": 36 } } @@ -136849,15 +139100,15 @@ "updateContext": null }, "value": "=", - "start": 24146, - "end": 24147, + "start": 24416, + "end": 24417, "loc": { "start": { - "line": 687, + "line": 699, "column": 37 }, "end": { - "line": 687, + "line": 699, "column": 38 } } @@ -136875,15 +139126,15 @@ "binop": null }, "value": "material", - "start": 24148, - "end": 24156, + "start": 24418, + "end": 24426, "loc": { "start": { - "line": 687, + "line": 699, "column": 39 }, "end": { - "line": 687, + "line": 699, "column": 47 } } @@ -136901,15 +139152,15 @@ "binop": null, "updateContext": null }, - "start": 24156, - "end": 24157, + "start": 24426, + "end": 24427, "loc": { "start": { - "line": 687, + "line": 699, "column": 47 }, "end": { - "line": 687, + "line": 699, "column": 48 } } @@ -136927,15 +139178,15 @@ "binop": null }, "value": "_attributes", - "start": 24157, - "end": 24168, + "start": 24427, + "end": 24438, "loc": { "start": { - "line": 687, + "line": 699, "column": 48 }, "end": { - "line": 687, + "line": 699, "column": 59 } } @@ -136953,15 +139204,15 @@ "binop": null, "updateContext": null }, - "start": 24168, - "end": 24169, + "start": 24438, + "end": 24439, "loc": { "start": { - "line": 687, + "line": 699, "column": 59 }, "end": { - "line": 687, + "line": 699, "column": 60 } } @@ -136979,15 +139230,15 @@ "binop": null }, "value": "metallic", - "start": 24169, - "end": 24177, + "start": 24439, + "end": 24447, "loc": { "start": { - "line": 687, + "line": 699, "column": 60 }, "end": { - "line": 687, + "line": 699, "column": 68 } } @@ -137005,15 +139256,15 @@ "binop": null, "updateContext": null }, - "start": 24177, - "end": 24178, + "start": 24447, + "end": 24448, "loc": { "start": { - "line": 687, + "line": 699, "column": 68 }, "end": { - "line": 687, + "line": 699, "column": 69 } } @@ -137031,15 +139282,15 @@ "binop": null }, "value": "meshCfg", - "start": 24199, - "end": 24206, + "start": 24469, + "end": 24476, "loc": { "start": { - "line": 688, + "line": 700, "column": 20 }, "end": { - "line": 688, + "line": 700, "column": 27 } } @@ -137057,15 +139308,15 @@ "binop": null, "updateContext": null }, - "start": 24206, - "end": 24207, + "start": 24476, + "end": 24477, "loc": { "start": { - "line": 688, + "line": 700, "column": 27 }, "end": { - "line": 688, + "line": 700, "column": 28 } } @@ -137083,15 +139334,15 @@ "binop": null }, "value": "roughness", - "start": 24207, - "end": 24216, + "start": 24477, + "end": 24486, "loc": { "start": { - "line": 688, + "line": 700, "column": 28 }, "end": { - "line": 688, + "line": 700, "column": 37 } } @@ -137110,15 +139361,15 @@ "updateContext": null }, "value": "=", - "start": 24217, - "end": 24218, + "start": 24487, + "end": 24488, "loc": { "start": { - "line": 688, + "line": 700, "column": 38 }, "end": { - "line": 688, + "line": 700, "column": 39 } } @@ -137136,15 +139387,15 @@ "binop": null }, "value": "material", - "start": 24219, - "end": 24227, + "start": 24489, + "end": 24497, "loc": { "start": { - "line": 688, + "line": 700, "column": 40 }, "end": { - "line": 688, + "line": 700, "column": 48 } } @@ -137162,15 +139413,15 @@ "binop": null, "updateContext": null }, - "start": 24227, - "end": 24228, + "start": 24497, + "end": 24498, "loc": { "start": { - "line": 688, + "line": 700, "column": 48 }, "end": { - "line": 688, + "line": 700, "column": 49 } } @@ -137188,15 +139439,15 @@ "binop": null }, "value": "_attributes", - "start": 24228, - "end": 24239, + "start": 24498, + "end": 24509, "loc": { "start": { - "line": 688, + "line": 700, "column": 49 }, "end": { - "line": 688, + "line": 700, "column": 60 } } @@ -137214,15 +139465,15 @@ "binop": null, "updateContext": null }, - "start": 24239, - "end": 24240, + "start": 24509, + "end": 24510, "loc": { "start": { - "line": 688, + "line": 700, "column": 60 }, "end": { - "line": 688, + "line": 700, "column": 61 } } @@ -137240,15 +139491,15 @@ "binop": null }, "value": "roughness", - "start": 24240, - "end": 24249, + "start": 24510, + "end": 24519, "loc": { "start": { - "line": 688, + "line": 700, "column": 61 }, "end": { - "line": 688, + "line": 700, "column": 70 } } @@ -137266,15 +139517,15 @@ "binop": null, "updateContext": null }, - "start": 24249, - "end": 24250, + "start": 24519, + "end": 24520, "loc": { "start": { - "line": 688, + "line": 700, "column": 70 }, "end": { - "line": 688, + "line": 700, "column": 71 } } @@ -137291,15 +139542,15 @@ "postfix": false, "binop": null }, - "start": 24267, - "end": 24268, + "start": 24537, + "end": 24538, "loc": { "start": { - "line": 689, + "line": 701, "column": 16 }, "end": { - "line": 689, + "line": 701, "column": 17 } } @@ -137319,15 +139570,15 @@ "updateContext": null }, "value": "else", - "start": 24269, - "end": 24273, + "start": 24539, + "end": 24543, "loc": { "start": { - "line": 689, + "line": 701, "column": 18 }, "end": { - "line": 689, + "line": 701, "column": 22 } } @@ -137344,15 +139595,15 @@ "postfix": false, "binop": null }, - "start": 24274, - "end": 24275, + "start": 24544, + "end": 24545, "loc": { "start": { - "line": 689, + "line": 701, "column": 23 }, "end": { - "line": 689, + "line": 701, "column": 24 } } @@ -137370,15 +139621,15 @@ "binop": null }, "value": "meshCfg", - "start": 24296, - "end": 24303, + "start": 24566, + "end": 24573, "loc": { "start": { - "line": 690, + "line": 702, "column": 20 }, "end": { - "line": 690, + "line": 702, "column": 27 } } @@ -137396,15 +139647,15 @@ "binop": null, "updateContext": null }, - "start": 24303, - "end": 24304, + "start": 24573, + "end": 24574, "loc": { "start": { - "line": 690, + "line": 702, "column": 27 }, "end": { - "line": 690, + "line": 702, "column": 28 } } @@ -137422,15 +139673,15 @@ "binop": null }, "value": "color", - "start": 24304, - "end": 24309, + "start": 24574, + "end": 24579, "loc": { "start": { - "line": 690, + "line": 702, "column": 28 }, "end": { - "line": 690, + "line": 702, "column": 33 } } @@ -137449,15 +139700,15 @@ "updateContext": null }, "value": "=", - "start": 24310, - "end": 24311, + "start": 24580, + "end": 24581, "loc": { "start": { - "line": 690, + "line": 702, "column": 34 }, "end": { - "line": 690, + "line": 702, "column": 35 } } @@ -137475,15 +139726,15 @@ "binop": null, "updateContext": null }, - "start": 24312, - "end": 24313, + "start": 24582, + "end": 24583, "loc": { "start": { - "line": 690, + "line": 702, "column": 36 }, "end": { - "line": 690, + "line": 702, "column": 37 } } @@ -137502,15 +139753,15 @@ "updateContext": null }, "value": 1, - "start": 24313, - "end": 24316, + "start": 24583, + "end": 24586, "loc": { "start": { - "line": 690, + "line": 702, "column": 37 }, "end": { - "line": 690, + "line": 702, "column": 40 } } @@ -137528,15 +139779,15 @@ "binop": null, "updateContext": null }, - "start": 24316, - "end": 24317, + "start": 24586, + "end": 24587, "loc": { "start": { - "line": 690, + "line": 702, "column": 40 }, "end": { - "line": 690, + "line": 702, "column": 41 } } @@ -137555,15 +139806,15 @@ "updateContext": null }, "value": 1, - "start": 24318, - "end": 24321, + "start": 24588, + "end": 24591, "loc": { "start": { - "line": 690, + "line": 702, "column": 42 }, "end": { - "line": 690, + "line": 702, "column": 45 } } @@ -137581,15 +139832,15 @@ "binop": null, "updateContext": null }, - "start": 24321, - "end": 24322, + "start": 24591, + "end": 24592, "loc": { "start": { - "line": 690, + "line": 702, "column": 45 }, "end": { - "line": 690, + "line": 702, "column": 46 } } @@ -137608,15 +139859,15 @@ "updateContext": null }, "value": 1, - "start": 24323, - "end": 24326, + "start": 24593, + "end": 24596, "loc": { "start": { - "line": 690, + "line": 702, "column": 47 }, "end": { - "line": 690, + "line": 702, "column": 50 } } @@ -137634,15 +139885,15 @@ "binop": null, "updateContext": null }, - "start": 24326, - "end": 24327, + "start": 24596, + "end": 24597, "loc": { "start": { - "line": 690, + "line": 702, "column": 50 }, "end": { - "line": 690, + "line": 702, "column": 51 } } @@ -137660,15 +139911,15 @@ "binop": null, "updateContext": null }, - "start": 24327, - "end": 24328, + "start": 24597, + "end": 24598, "loc": { "start": { - "line": 690, + "line": 702, "column": 51 }, "end": { - "line": 690, + "line": 702, "column": 52 } } @@ -137686,15 +139937,15 @@ "binop": null }, "value": "meshCfg", - "start": 24349, - "end": 24356, + "start": 24619, + "end": 24626, "loc": { "start": { - "line": 691, + "line": 703, "column": 20 }, "end": { - "line": 691, + "line": 703, "column": 27 } } @@ -137712,15 +139963,15 @@ "binop": null, "updateContext": null }, - "start": 24356, - "end": 24357, + "start": 24626, + "end": 24627, "loc": { "start": { - "line": 691, + "line": 703, "column": 27 }, "end": { - "line": 691, + "line": 703, "column": 28 } } @@ -137738,15 +139989,15 @@ "binop": null }, "value": "opacity", - "start": 24357, - "end": 24364, + "start": 24627, + "end": 24634, "loc": { "start": { - "line": 691, + "line": 703, "column": 28 }, "end": { - "line": 691, + "line": 703, "column": 35 } } @@ -137765,15 +140016,15 @@ "updateContext": null }, "value": "=", - "start": 24365, - "end": 24366, + "start": 24635, + "end": 24636, "loc": { "start": { - "line": 691, + "line": 703, "column": 36 }, "end": { - "line": 691, + "line": 703, "column": 37 } } @@ -137792,15 +140043,15 @@ "updateContext": null }, "value": 1, - "start": 24367, - "end": 24370, + "start": 24637, + "end": 24640, "loc": { "start": { - "line": 691, + "line": 703, "column": 38 }, "end": { - "line": 691, + "line": 703, "column": 41 } } @@ -137818,15 +140069,15 @@ "binop": null, "updateContext": null }, - "start": 24370, - "end": 24371, + "start": 24640, + "end": 24641, "loc": { "start": { - "line": 691, + "line": 703, "column": 41 }, "end": { - "line": 691, + "line": 703, "column": 42 } } @@ -137843,15 +140094,15 @@ "postfix": false, "binop": null }, - "start": 24388, - "end": 24389, + "start": 24658, + "end": 24659, "loc": { "start": { - "line": 692, + "line": 704, "column": 16 }, "end": { - "line": 692, + "line": 704, "column": 17 } } @@ -137869,15 +140120,15 @@ "binop": null }, "value": "ctx", - "start": 24406, - "end": 24409, + "start": 24676, + "end": 24679, "loc": { "start": { - "line": 693, + "line": 705, "column": 16 }, "end": { - "line": 693, + "line": 705, "column": 19 } } @@ -137895,15 +140146,15 @@ "binop": null, "updateContext": null }, - "start": 24409, - "end": 24410, + "start": 24679, + "end": 24680, "loc": { "start": { - "line": 693, + "line": 705, "column": 19 }, "end": { - "line": 693, + "line": 705, "column": 20 } } @@ -137921,15 +140172,15 @@ "binop": null }, "value": "xktModel", - "start": 24410, - "end": 24418, + "start": 24680, + "end": 24688, "loc": { "start": { - "line": 693, + "line": 705, "column": 20 }, "end": { - "line": 693, + "line": 705, "column": 28 } } @@ -137947,15 +140198,15 @@ "binop": null, "updateContext": null }, - "start": 24418, - "end": 24419, + "start": 24688, + "end": 24689, "loc": { "start": { - "line": 693, + "line": 705, "column": 28 }, "end": { - "line": 693, + "line": 705, "column": 29 } } @@ -137973,15 +140224,15 @@ "binop": null }, "value": "createMesh", - "start": 24419, - "end": 24429, + "start": 24689, + "end": 24699, "loc": { "start": { - "line": 693, + "line": 705, "column": 29 }, "end": { - "line": 693, + "line": 705, "column": 39 } } @@ -137998,15 +140249,15 @@ "postfix": false, "binop": null }, - "start": 24429, - "end": 24430, + "start": 24699, + "end": 24700, "loc": { "start": { - "line": 693, + "line": 705, "column": 39 }, "end": { - "line": 693, + "line": 705, "column": 40 } } @@ -138024,15 +140275,15 @@ "binop": null }, "value": "meshCfg", - "start": 24430, - "end": 24437, + "start": 24700, + "end": 24707, "loc": { "start": { - "line": 693, + "line": 705, "column": 40 }, "end": { - "line": 693, + "line": 705, "column": 47 } } @@ -138049,15 +140300,15 @@ "postfix": false, "binop": null }, - "start": 24437, - "end": 24438, + "start": 24707, + "end": 24708, "loc": { "start": { - "line": 693, + "line": 705, "column": 47 }, "end": { - "line": 693, + "line": 705, "column": 48 } } @@ -138075,15 +140326,15 @@ "binop": null, "updateContext": null }, - "start": 24438, - "end": 24439, + "start": 24708, + "end": 24709, "loc": { "start": { - "line": 693, + "line": 705, "column": 48 }, "end": { - "line": 693, + "line": 705, "column": 49 } } @@ -138101,15 +140352,15 @@ "binop": null }, "value": "meshIds", - "start": 24456, - "end": 24463, + "start": 24726, + "end": 24733, "loc": { "start": { - "line": 694, + "line": 706, "column": 16 }, "end": { - "line": 694, + "line": 706, "column": 23 } } @@ -138127,15 +140378,15 @@ "binop": null, "updateContext": null }, - "start": 24463, - "end": 24464, + "start": 24733, + "end": 24734, "loc": { "start": { - "line": 694, + "line": 706, "column": 23 }, "end": { - "line": 694, + "line": 706, "column": 24 } } @@ -138153,15 +140404,15 @@ "binop": null }, "value": "push", - "start": 24464, - "end": 24468, + "start": 24734, + "end": 24738, "loc": { "start": { - "line": 694, + "line": 706, "column": 24 }, "end": { - "line": 694, + "line": 706, "column": 28 } } @@ -138178,15 +140429,15 @@ "postfix": false, "binop": null }, - "start": 24468, - "end": 24469, + "start": 24738, + "end": 24739, "loc": { "start": { - "line": 694, + "line": 706, "column": 28 }, "end": { - "line": 694, + "line": 706, "column": 29 } } @@ -138204,15 +140455,15 @@ "binop": null }, "value": "xktMeshId", - "start": 24469, - "end": 24478, + "start": 24739, + "end": 24748, "loc": { "start": { - "line": 694, + "line": 706, "column": 29 }, "end": { - "line": 694, + "line": 706, "column": 38 } } @@ -138229,15 +140480,15 @@ "postfix": false, "binop": null }, - "start": 24478, - "end": 24479, + "start": 24748, + "end": 24749, "loc": { "start": { - "line": 694, + "line": 706, "column": 38 }, "end": { - "line": 694, + "line": 706, "column": 39 } } @@ -138255,15 +140506,15 @@ "binop": null, "updateContext": null }, - "start": 24479, - "end": 24480, + "start": 24749, + "end": 24750, "loc": { "start": { - "line": 694, + "line": 706, "column": 39 }, "end": { - "line": 694, + "line": 706, "column": 40 } } @@ -138280,15 +140531,15 @@ "postfix": false, "binop": null }, - "start": 24493, - "end": 24494, + "start": 24763, + "end": 24764, "loc": { "start": { - "line": 695, + "line": 707, "column": 12 }, "end": { - "line": 695, + "line": 707, "column": 13 } } @@ -138308,15 +140559,15 @@ "updateContext": null }, "value": "catch", - "start": 24495, - "end": 24500, + "start": 24765, + "end": 24770, "loc": { "start": { - "line": 695, + "line": 707, "column": 14 }, "end": { - "line": 695, + "line": 707, "column": 19 } } @@ -138333,15 +140584,15 @@ "postfix": false, "binop": null }, - "start": 24501, - "end": 24502, + "start": 24771, + "end": 24772, "loc": { "start": { - "line": 695, + "line": 707, "column": 20 }, "end": { - "line": 695, + "line": 707, "column": 21 } } @@ -138359,15 +140610,15 @@ "binop": null }, "value": "e", - "start": 24502, - "end": 24503, + "start": 24772, + "end": 24773, "loc": { "start": { - "line": 695, + "line": 707, "column": 21 }, "end": { - "line": 695, + "line": 707, "column": 22 } } @@ -138384,15 +140635,15 @@ "postfix": false, "binop": null }, - "start": 24503, - "end": 24504, + "start": 24773, + "end": 24774, "loc": { "start": { - "line": 695, + "line": 707, "column": 22 }, "end": { - "line": 695, + "line": 707, "column": 23 } } @@ -138409,15 +140660,15 @@ "postfix": false, "binop": null }, - "start": 24505, - "end": 24506, + "start": 24775, + "end": 24776, "loc": { "start": { - "line": 695, + "line": 707, "column": 24 }, "end": { - "line": 695, + "line": 707, "column": 25 } } @@ -138435,15 +140686,15 @@ "binop": null }, "value": "console", - "start": 24523, - "end": 24530, + "start": 24793, + "end": 24800, "loc": { "start": { - "line": 696, + "line": 708, "column": 16 }, "end": { - "line": 696, + "line": 708, "column": 23 } } @@ -138461,15 +140712,15 @@ "binop": null, "updateContext": null }, - "start": 24530, - "end": 24531, + "start": 24800, + "end": 24801, "loc": { "start": { - "line": 696, + "line": 708, "column": 23 }, "end": { - "line": 696, + "line": 708, "column": 24 } } @@ -138487,15 +140738,15 @@ "binop": null }, "value": "log", - "start": 24531, - "end": 24534, + "start": 24801, + "end": 24804, "loc": { "start": { - "line": 696, + "line": 708, "column": 24 }, "end": { - "line": 696, + "line": 708, "column": 27 } } @@ -138512,15 +140763,15 @@ "postfix": false, "binop": null }, - "start": 24534, - "end": 24535, + "start": 24804, + "end": 24805, "loc": { "start": { - "line": 696, + "line": 708, "column": 27 }, "end": { - "line": 696, + "line": 708, "column": 28 } } @@ -138538,15 +140789,15 @@ "binop": null }, "value": "e", - "start": 24535, - "end": 24536, + "start": 24805, + "end": 24806, "loc": { "start": { - "line": 696, + "line": 708, "column": 28 }, "end": { - "line": 696, + "line": 708, "column": 29 } } @@ -138563,15 +140814,15 @@ "postfix": false, "binop": null }, - "start": 24536, - "end": 24537, + "start": 24806, + "end": 24807, "loc": { "start": { - "line": 696, + "line": 708, "column": 29 }, "end": { - "line": 696, + "line": 708, "column": 30 } } @@ -138589,15 +140840,15 @@ "binop": null, "updateContext": null }, - "start": 24537, - "end": 24538, + "start": 24807, + "end": 24808, "loc": { "start": { - "line": 696, + "line": 708, "column": 30 }, "end": { - "line": 696, + "line": 708, "column": 31 } } @@ -138614,15 +140865,15 @@ "postfix": false, "binop": null }, - "start": 24551, - "end": 24552, + "start": 24821, + "end": 24822, "loc": { "start": { - "line": 697, + "line": 709, "column": 12 }, "end": { - "line": 697, + "line": 709, "column": 13 } } @@ -138639,15 +140890,15 @@ "postfix": false, "binop": null }, - "start": 24561, - "end": 24562, + "start": 24831, + "end": 24832, "loc": { "start": { - "line": 698, + "line": 710, "column": 8 }, "end": { - "line": 698, + "line": 710, "column": 9 } } @@ -138664,15 +140915,15 @@ "postfix": false, "binop": null }, - "start": 24567, - "end": 24568, + "start": 24837, + "end": 24838, "loc": { "start": { - "line": 699, + "line": 711, "column": 4 }, "end": { - "line": 699, + "line": 711, "column": 5 } } @@ -138689,15 +140940,15 @@ "postfix": false, "binop": null }, - "start": 24569, - "end": 24570, + "start": 24839, + "end": 24840, "loc": { "start": { - "line": 700, + "line": 712, "column": 0 }, "end": { - "line": 700, + "line": 712, "column": 1 } } @@ -138717,15 +140968,15 @@ "updateContext": null }, "value": "export", - "start": 24572, - "end": 24578, + "start": 24842, + "end": 24848, "loc": { "start": { - "line": 702, + "line": 714, "column": 0 }, "end": { - "line": 702, + "line": 714, "column": 6 } } @@ -138742,15 +140993,15 @@ "postfix": false, "binop": null }, - "start": 24579, - "end": 24580, + "start": 24849, + "end": 24850, "loc": { "start": { - "line": 702, + "line": 714, "column": 7 }, "end": { - "line": 702, + "line": 714, "column": 8 } } @@ -138768,15 +141019,15 @@ "binop": null }, "value": "parseGLTFIntoXKTModel", - "start": 24580, - "end": 24601, + "start": 24850, + "end": 24871, "loc": { "start": { - "line": 702, + "line": 714, "column": 8 }, "end": { - "line": 702, + "line": 714, "column": 29 } } @@ -138793,15 +141044,15 @@ "postfix": false, "binop": null }, - "start": 24601, - "end": 24602, + "start": 24871, + "end": 24872, "loc": { "start": { - "line": 702, + "line": 714, "column": 29 }, "end": { - "line": 702, + "line": 714, "column": 30 } } @@ -138819,15 +141070,15 @@ "binop": null, "updateContext": null }, - "start": 24602, - "end": 24603, + "start": 24872, + "end": 24873, "loc": { "start": { - "line": 702, + "line": 714, "column": 30 }, "end": { - "line": 702, + "line": 714, "column": 31 } } @@ -138845,15 +141096,15 @@ "binop": null, "updateContext": null }, - "start": 24603, - "end": 24603, + "start": 24873, + "end": 24873, "loc": { "start": { - "line": 702, + "line": 714, "column": 31 }, "end": { - "line": 702, + "line": 714, "column": 31 } } diff --git a/docs/coverage.json b/docs/coverage.json index f37ad4a..fa02210 100644 --- a/docs/coverage.json +++ b/docs/coverage.json @@ -1,6 +1,6 @@ { - "coverage": "47.56%", - "expectCount": 410, + "coverage": "47.44%", + "expectCount": 411, "actualCount": 195, "files": { "src/XKTModel/KDNode.js": { @@ -403,18 +403,19 @@ ] }, "src/parsers/parseGLTFIntoXKTModel.js": { - "expectCount": 14, + "expectCount": 15, "actualCount": 5, "undocumentLines": [ - 138, - 149, - 244, - 256, - 309, - 369, - 379, - 408, - 429 + 139, + 150, + 245, + 257, + 310, + 370, + 380, + 409, + 430, + 595 ] }, "src/parsers/parseGLTFJSONIntoXKTModel.js": { diff --git a/docs/file/src/parsers/parseGLTFIntoXKTModel.js.html b/docs/file/src/parsers/parseGLTFIntoXKTModel.js.html index 5abf32c..0642306 100644 --- a/docs/file/src/parsers/parseGLTFIntoXKTModel.js.html +++ b/docs/file/src/parsers/parseGLTFIntoXKTModel.js.html @@ -197,6 +197,7 @@ includeTextures: (includeTextures !== false), geometryCreated: {}, nextId: 0, + geometriesCreated : {}, stats }; @@ -488,7 +489,7 @@ } } -function countMeshUsage(ctx, node, level=0) { +function countMeshUsage(ctx, node, level = 0) { if (!node) { return; } @@ -504,12 +505,12 @@ ctx.error("Node not found: " + i); continue; } - countMeshUsage(ctx, childNode, level+1); + countMeshUsage(ctx, childNode, level + 1); } } } -function testIfNodesHaveNames(node, level=0) { +function testIfNodesHaveNames(node, level = 0) { if (!node) { return; } @@ -520,7 +521,7 @@ const children = node.children; for (let i = 0, len = children.length; i < len; i++) { const childNode = children[i]; - if (testIfNodesHaveNames(childNode, level+1)) { + if (testIfNodesHaveNames(childNode, level + 1)) { return true; } } @@ -674,6 +675,17 @@ return matrix; } +function createPrimitiveHash(primitive) { + const hash = []; + const attributes = primitive.attributes; + if (attributes) { + for (let key in attributes) { + hash.push(attributes[key].id); + } + } + return hash.join("."); +} + /** * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel. * @@ -695,10 +707,10 @@ for (let i = 0; i < numPrimitives; i++) { try { const primitive = mesh.primitives[i]; - if (!primitive._xktGeometryId) { - const xktGeometryId = "geometry-" + ctx.nextId++; + const geometryId = createPrimitiveHash(primitive); + if (!ctx.geometriesCreated[geometryId]) { const geometryCfg = { - geometryId: xktGeometryId + geometryId }; switch (primitive.mode) { case 0: // POINTS @@ -753,13 +765,13 @@ } } ctx.xktModel.createGeometry(geometryCfg); - primitive._xktGeometryId = xktGeometryId; + ctx.geometriesCreated[geometryId] = true; ctx.stats.numGeometries++; } const xktMeshId = ctx.nextId++; const meshCfg = { meshId: xktMeshId, - geometryId: primitive._xktGeometryId, + geometryId, matrix: matrix ? matrix.slice() : math.identityMat4() }; const material = primitive.material; diff --git a/docs/index.json b/docs/index.json index 0689328..b1014f9 100644 --- a/docs/index.json +++ b/docs/index.json @@ -12781,7 +12781,7 @@ "__docId__": 448, "kind": "file", "name": "src/parsers/parseGLTFIntoXKTModel.js", - "content": "import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../constants.js\";\n\n/**\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n */\nfunction parseGLTFIntoXKTModel({\n data,\n baseUri,\n xktModel,\n metaModelData,\n includeTextures = true,\n includeNormals = true,\n getAttachment,\n stats = {},\n log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n parse(data, GLTFLoader, {\n baseUri\n }).then((gltfData) => {\n\n const ctx = {\n gltfData,\n nodesHaveNames: false, // determined in testIfNodesHaveNames()\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n error: function (msg) {\n console.error(msg);\n },\n xktModel,\n includeNormals: (includeNormals !== false),\n includeTextures: (includeTextures !== false),\n geometryCreated: {},\n nextId: 0,\n stats\n };\n\n ctx.log(\"Using parser: parseGLTFIntoXKTModel\");\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n ctx.log(`Parsing textures: ${ctx.includeTextures ? \"enabled\" : \"disabled\"}`);\n\n if (ctx.includeTextures) {\n parseTextures(ctx);\n }\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(`[parseGLTFIntoXKTModel] ${errMsg}`);\n });\n });\n}\n\nfunction parseTextures(ctx) {\n const gltfData = ctx.gltfData;\n const textures = gltfData.textures;\n if (textures) {\n for (let i = 0, len = textures.length; i < len; i++) {\n parseTexture(ctx, textures[i]);\n ctx.stats.numTextures++;\n }\n }\n}\n\nfunction parseTexture(ctx, texture) {\n if (!texture.source || !texture.source.image) {\n return;\n }\n const textureId = `texture-${ctx.nextId++}`;\n\n let minFilter = NearestMipMapLinearFilter;\n switch (texture.sampler.minFilter) {\n case 9728:\n minFilter = NearestFilter;\n break;\n case 9729:\n minFilter = LinearFilter;\n break;\n case 9984:\n minFilter = NearestMipMapNearestFilter;\n break;\n case 9985:\n minFilter = LinearMipMapNearestFilter;\n break;\n case 9986:\n minFilter = NearestMipMapLinearFilter;\n break;\n case 9987:\n minFilter = LinearMipMapLinearFilter;\n break;\n }\n\n let magFilter = LinearFilter;\n switch (texture.sampler.magFilter) {\n case 9728:\n magFilter = NearestFilter;\n break;\n case 9729:\n magFilter = LinearFilter;\n break;\n }\n\n let wrapS = RepeatWrapping;\n switch (texture.sampler.wrapS) {\n case 33071:\n wrapS = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapS = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapS = RepeatWrapping;\n break;\n }\n\n let wrapT = RepeatWrapping;\n switch (texture.sampler.wrapT) {\n case 33071:\n wrapT = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapT = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapT = RepeatWrapping;\n break;\n }\n\n let wrapR = RepeatWrapping;\n switch (texture.sampler.wrapR) {\n case 33071:\n wrapR = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapR = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapR = RepeatWrapping;\n break;\n }\n\n ctx.xktModel.createTexture({\n textureId: textureId,\n imageData: texture.source.image,\n mediaType: texture.source.mediaType,\n compressed: true,\n width: texture.source.image.width,\n height: texture.source.image.height,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: !!texture.flipY,\n // encoding: \"sRGB\"\n });\n texture._textureId = textureId;\n}\n\nfunction parseMaterials(ctx) {\n const gltfData = ctx.gltfData;\n const materials = gltfData.materials;\n if (materials) {\n for (let i = 0, len = materials.length; i < len; i++) {\n const material = materials[i];\n material._textureSetId = ctx.includeTextures ? parseTextureSet(ctx, material) : null;\n material._attributes = parseMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction parseTextureSet(ctx, material) {\n const textureSetCfg = {};\n if (material.normalTexture) {\n textureSetCfg.normalTextureId = material.normalTexture.texture._textureId;\n }\n if (material.occlusionTexture) {\n textureSetCfg.occlusionTextureId = material.occlusionTexture.texture._textureId;\n }\n if (material.emissiveTexture) {\n textureSetCfg.emissiveTextureId = material.emissiveTexture.texture._textureId;\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (material.pbrMetallicRoughness) {\n const pbrMetallicRoughness = material.pbrMetallicRoughness;\n const baseColorTexture = pbrMetallicRoughness.baseColorTexture || pbrMetallicRoughness.colorTexture;\n if (baseColorTexture) {\n if (baseColorTexture.texture) {\n textureSetCfg.colorTextureId = baseColorTexture.texture._textureId;\n } else {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[baseColorTexture.index]._textureId;\n }\n }\n if (metallicPBR.metallicRoughnessTexture) {\n textureSetCfg.metallicRoughnessTextureId = metallicPBR.metallicRoughnessTexture.texture._textureId;\n }\n }\n const extensions = material.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const specularTexture = specularPBR.specularTexture;\n if (specularTexture !== null && specularTexture !== undefined) {\n // textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n const specularColorTexture = specularPBR.specularColorTexture;\n if (specularColorTexture !== null && specularColorTexture !== undefined) {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n }\n }\n if (textureSetCfg.normalTextureId !== undefined ||\n textureSetCfg.occlusionTextureId !== undefined ||\n textureSetCfg.emissiveTextureId !== undefined ||\n textureSetCfg.colorTextureId !== undefined ||\n textureSetCfg.metallicRoughnessTextureId !== undefined) {\n textureSetCfg.textureSetId = `textureSet-${ctx.nextId++};`\n ctx.xktModel.createTextureSet(textureSetCfg);\n ctx.stats.numTextureSets++;\n return textureSetCfg.textureSetId;\n }\n return null;\n}\n\nfunction parseMaterialAttributes(ctx, material) { // Substitute RGBA for material, to use fast flat shading instead\n const extensions = material.extensions;\n const materialAttributes = {\n color: new Float32Array([1, 1, 1, 1]),\n opacity: 1,\n metallic: 0,\n roughness: 1\n };\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n materialAttributes.color.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n materialAttributes.color.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n materialAttributes.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n materialAttributes.opacity = transparent;\n }\n }\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n materialAttributes.color[0] = baseColorFactor[0];\n materialAttributes.color[1] = baseColorFactor[1];\n materialAttributes.color[2] = baseColorFactor[2];\n materialAttributes.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n materialAttributes.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n materialAttributes.roughness = roughnessFactor;\n }\n }\n return materialAttributes;\n}\n\nfunction parseDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n ctx.error(\"glTF has no default scene\");\n return;\n }\n parseScene(ctx, scene);\n}\n\nfunction parseScene(ctx, scene) {\n const nodes = scene.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n countMeshUsage(ctx, node);\n }\n for (let i = 0, len = nodes.length; i < len && !ctx.nodesHaveNames; i++) {\n const node = nodes[i];\n if (testIfNodesHaveNames(node)) {\n ctx.nodesHaveNames = true;\n }\n }\n if (!ctx.nodesHaveNames) {\n ctx.log(`Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect`);\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithoutNames(ctx, node, 0, null);\n }\n } else {\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithNames(ctx, node, 0, null);\n }\n }\n}\n\nfunction countMeshUsage(ctx, node, level=0) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (mesh) {\n mesh.instances = mesh.instances ? mesh.instances + 1 : 1;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (!childNode) {\n ctx.error(\"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode, level+1);\n }\n }\n}\n\nfunction testIfNodesHaveNames(node, level=0) {\n if (!node) {\n return;\n }\n if (node.name) {\n return true;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (testIfNodesHaveNames(childNode, level+1)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n */\nconst parseNodesWithoutNames = (function () {\n\n const meshIds = [];\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithoutNames(ctx, childNode, depth + 1, matrix);\n }\n }\n if (depth === 0) {\n let entityId = \"entity-\" + ctx.nextId++;\n if (meshIds && meshIds.length > 0) {\n ctx.log(\"Creating XKTEntity with default ID: \" + entityId);\n ctx.xktModel.createEntity({\n entityId,\n meshIds\n });\n meshIds.length = 0;\n }\n ctx.stats.numObjects++;\n }\n }\n})();\n\n\n/**\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n */\nconst parseNodesWithNames = (function () {\n\n const objectIdStack = [];\n const meshIdsStack = [];\n let meshIds = null;\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.name) {\n meshIds = [];\n let xktEntityId = node.name;\n if (!!xktEntityId && ctx.xktModel.entities[xktEntityId]) {\n ctx.log(`Warning: Two or more glTF nodes found with same 'name' attribute: '${xktEntityId} - will randomly-generating an object ID in XKT`);\n }\n while (!xktEntityId || ctx.xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n objectIdStack.push(xktEntityId);\n meshIdsStack.push(meshIds);\n }\n if (meshIds && node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithNames(ctx, childNode, depth + 1, matrix);\n }\n }\n const nodeName = node.name;\n if ((nodeName !== undefined && nodeName !== null) || depth === 0) {\n let xktEntityId = objectIdStack.pop();\n if (!xktEntityId) { // For when there are no nodes with names\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n let entityMeshIds = meshIdsStack.pop();\n if (meshIds && meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: entityMeshIds\n });\n }\n ctx.stats.numObjects++;\n meshIds = meshIdsStack.length > 0 ? meshIdsStack[meshIdsStack.length - 1] : null;\n }\n }\n})();\n\n/**\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n */\nfunction parseNodeMatrix(node, matrix) {\n if (!node) {\n return;\n }\n let localMatrix;\n if (node.matrix) {\n localMatrix = node.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.translation) {\n localMatrix = math.translationMat4v(node.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.rotation) {\n localMatrix = math.quaternionToMat4(node.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.scale) {\n localMatrix = math.scalingMat4v(node.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n return matrix;\n}\n\n/**\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n */\nfunction parseNodeMesh(node, ctx, matrix, meshIds) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (!mesh) {\n return;\n }\n const numPrimitives = mesh.primitives.length;\n if (numPrimitives > 0) {\n for (let i = 0; i < numPrimitives; i++) {\n try {\n const primitive = mesh.primitives[i];\n if (!primitive._xktGeometryId) {\n const xktGeometryId = \"geometry-\" + ctx.nextId++;\n const geometryCfg = {\n geometryId: xktGeometryId\n };\n switch (primitive.mode) {\n case 0: // POINTS\n geometryCfg.primitiveType = \"points\";\n break;\n case 1: // LINES\n geometryCfg.primitiveType = \"lines\";\n break;\n case 2: // LINE_LOOP\n geometryCfg.primitiveType = \"line-loop\";\n break;\n case 3: // LINE_STRIP\n geometryCfg.primitiveType = \"line-strip\";\n break;\n case 4: // TRIANGLES\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n geometryCfg.primitiveType = \"triangle-strip\";\n break;\n case 6: // TRIANGLE_FAN\n geometryCfg.primitiveType = \"triangle-fan\";\n break;\n default:\n geometryCfg.primitiveType = \"triangles\";\n }\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n geometryCfg.positions = primitive.attributes.POSITION.value;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n if (ctx.includeNormals) {\n if (primitive.attributes.NORMAL) {\n geometryCfg.normals = primitive.attributes.NORMAL.value;\n ctx.stats.numNormals += geometryCfg.normals.length / 3;\n }\n }\n if (primitive.attributes.COLOR_0) {\n geometryCfg.colorsCompressed = primitive.attributes.COLOR_0.value;\n }\n if (ctx.includeTextures) {\n if (primitive.attributes.TEXCOORD_0) {\n geometryCfg.uvs = primitive.attributes.TEXCOORD_0.value;\n ctx.stats.numUVs += geometryCfg.uvs.length / 2;\n }\n }\n if (primitive.indices) {\n geometryCfg.indices = primitive.indices.value;\n if (primitive.mode === 4) {\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n }\n ctx.xktModel.createGeometry(geometryCfg);\n primitive._xktGeometryId = xktGeometryId;\n ctx.stats.numGeometries++;\n }\n const xktMeshId = ctx.nextId++;\n const meshCfg = {\n meshId: xktMeshId,\n geometryId: primitive._xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4()\n };\n const material = primitive.material;\n if (material) {\n meshCfg.textureSetId = material._textureSetId;\n meshCfg.color = material._attributes.color;\n meshCfg.opacity = material._attributes.opacity;\n meshCfg.metallic = material._attributes.metallic;\n meshCfg.roughness = material._attributes.roughness;\n } else {\n meshCfg.color = [1.0, 1.0, 1.0];\n meshCfg.opacity = 1.0;\n }\n ctx.xktModel.createMesh(meshCfg);\n meshIds.push(xktMeshId);\n } catch (e) {\n console.log(e);\n }\n }\n }\n}\n\nexport {parseGLTFIntoXKTModel};", + "content": "import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nimport {parse} from '@loaders.gl/core';\nimport {GLTFLoader} from '@loaders.gl/gltf';\nimport {\n ClampToEdgeWrapping,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearMipMapNearestFilter,\n MirroredRepeatWrapping,\n NearestFilter,\n NearestMipMapLinearFilter,\n NearestMipMapNearestFilter,\n RepeatWrapping\n} from \"../constants.js\";\n\n/**\n * @desc Parses glTF into an {@link XKTModel}, supporting ````.glb```` and textures.\n *\n * * Supports ````.glb```` and textures\n * * For a lightweight glTF JSON parser that ignores textures, see {@link parseGLTFJSONIntoXKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a binary glTF model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"../assets/models/gltf/HousePlan/glTF-Binary/HousePlan.glb\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {ArrayBuffer} params.data The glTF.\n * @param {String} [params.baseUri] The base URI used to load this glTF, if any. For resolving relative uris to linked resources.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeTextures=true] Whether to parse textures.\n * @param {Boolean} [params.includeNormals=true] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded non-PBR representation of the glTF.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when glTF has been parsed.\n */\nfunction parseGLTFIntoXKTModel({\n data,\n baseUri,\n xktModel,\n metaModelData,\n includeTextures = true,\n includeNormals = true,\n getAttachment,\n stats = {},\n log\n }) {\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numUVs = 0;\n stats.numTextures = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n parse(data, GLTFLoader, {\n baseUri\n }).then((gltfData) => {\n\n const ctx = {\n gltfData,\n nodesHaveNames: false, // determined in testIfNodesHaveNames()\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n error: function (msg) {\n console.error(msg);\n },\n xktModel,\n includeNormals: (includeNormals !== false),\n includeTextures: (includeTextures !== false),\n geometryCreated: {},\n nextId: 0,\n geometriesCreated : {},\n stats\n };\n\n ctx.log(\"Using parser: parseGLTFIntoXKTModel\");\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n ctx.log(`Parsing textures: ${ctx.includeTextures ? \"enabled\" : \"disabled\"}`);\n\n if (ctx.includeTextures) {\n parseTextures(ctx);\n }\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(`[parseGLTFIntoXKTModel] ${errMsg}`);\n });\n });\n}\n\nfunction parseTextures(ctx) {\n const gltfData = ctx.gltfData;\n const textures = gltfData.textures;\n if (textures) {\n for (let i = 0, len = textures.length; i < len; i++) {\n parseTexture(ctx, textures[i]);\n ctx.stats.numTextures++;\n }\n }\n}\n\nfunction parseTexture(ctx, texture) {\n if (!texture.source || !texture.source.image) {\n return;\n }\n const textureId = `texture-${ctx.nextId++}`;\n\n let minFilter = NearestMipMapLinearFilter;\n switch (texture.sampler.minFilter) {\n case 9728:\n minFilter = NearestFilter;\n break;\n case 9729:\n minFilter = LinearFilter;\n break;\n case 9984:\n minFilter = NearestMipMapNearestFilter;\n break;\n case 9985:\n minFilter = LinearMipMapNearestFilter;\n break;\n case 9986:\n minFilter = NearestMipMapLinearFilter;\n break;\n case 9987:\n minFilter = LinearMipMapLinearFilter;\n break;\n }\n\n let magFilter = LinearFilter;\n switch (texture.sampler.magFilter) {\n case 9728:\n magFilter = NearestFilter;\n break;\n case 9729:\n magFilter = LinearFilter;\n break;\n }\n\n let wrapS = RepeatWrapping;\n switch (texture.sampler.wrapS) {\n case 33071:\n wrapS = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapS = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapS = RepeatWrapping;\n break;\n }\n\n let wrapT = RepeatWrapping;\n switch (texture.sampler.wrapT) {\n case 33071:\n wrapT = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapT = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapT = RepeatWrapping;\n break;\n }\n\n let wrapR = RepeatWrapping;\n switch (texture.sampler.wrapR) {\n case 33071:\n wrapR = ClampToEdgeWrapping;\n break;\n case 33648:\n wrapR = MirroredRepeatWrapping;\n break;\n case 10497:\n wrapR = RepeatWrapping;\n break;\n }\n\n ctx.xktModel.createTexture({\n textureId: textureId,\n imageData: texture.source.image,\n mediaType: texture.source.mediaType,\n compressed: true,\n width: texture.source.image.width,\n height: texture.source.image.height,\n minFilter,\n magFilter,\n wrapS,\n wrapT,\n wrapR,\n flipY: !!texture.flipY,\n // encoding: \"sRGB\"\n });\n texture._textureId = textureId;\n}\n\nfunction parseMaterials(ctx) {\n const gltfData = ctx.gltfData;\n const materials = gltfData.materials;\n if (materials) {\n for (let i = 0, len = materials.length; i < len; i++) {\n const material = materials[i];\n material._textureSetId = ctx.includeTextures ? parseTextureSet(ctx, material) : null;\n material._attributes = parseMaterialAttributes(ctx, material);\n }\n }\n}\n\nfunction parseTextureSet(ctx, material) {\n const textureSetCfg = {};\n if (material.normalTexture) {\n textureSetCfg.normalTextureId = material.normalTexture.texture._textureId;\n }\n if (material.occlusionTexture) {\n textureSetCfg.occlusionTextureId = material.occlusionTexture.texture._textureId;\n }\n if (material.emissiveTexture) {\n textureSetCfg.emissiveTextureId = material.emissiveTexture.texture._textureId;\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (material.pbrMetallicRoughness) {\n const pbrMetallicRoughness = material.pbrMetallicRoughness;\n const baseColorTexture = pbrMetallicRoughness.baseColorTexture || pbrMetallicRoughness.colorTexture;\n if (baseColorTexture) {\n if (baseColorTexture.texture) {\n textureSetCfg.colorTextureId = baseColorTexture.texture._textureId;\n } else {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[baseColorTexture.index]._textureId;\n }\n }\n if (metallicPBR.metallicRoughnessTexture) {\n textureSetCfg.metallicRoughnessTextureId = metallicPBR.metallicRoughnessTexture.texture._textureId;\n }\n }\n const extensions = material.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const specularTexture = specularPBR.specularTexture;\n if (specularTexture !== null && specularTexture !== undefined) {\n // textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n const specularColorTexture = specularPBR.specularColorTexture;\n if (specularColorTexture !== null && specularColorTexture !== undefined) {\n textureSetCfg.colorTextureId = ctx.gltfData.textures[specularColorTexture.index]._textureId;\n }\n }\n }\n if (textureSetCfg.normalTextureId !== undefined ||\n textureSetCfg.occlusionTextureId !== undefined ||\n textureSetCfg.emissiveTextureId !== undefined ||\n textureSetCfg.colorTextureId !== undefined ||\n textureSetCfg.metallicRoughnessTextureId !== undefined) {\n textureSetCfg.textureSetId = `textureSet-${ctx.nextId++};`\n ctx.xktModel.createTextureSet(textureSetCfg);\n ctx.stats.numTextureSets++;\n return textureSetCfg.textureSetId;\n }\n return null;\n}\n\nfunction parseMaterialAttributes(ctx, material) { // Substitute RGBA for material, to use fast flat shading instead\n const extensions = material.extensions;\n const materialAttributes = {\n color: new Float32Array([1, 1, 1, 1]),\n opacity: 1,\n metallic: 0,\n roughness: 1\n };\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n materialAttributes.color.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n materialAttributes.color.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n materialAttributes.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n materialAttributes.opacity = transparent;\n }\n }\n }\n const metallicPBR = material.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n materialAttributes.color[0] = baseColorFactor[0];\n materialAttributes.color[1] = baseColorFactor[1];\n materialAttributes.color[2] = baseColorFactor[2];\n materialAttributes.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n materialAttributes.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n materialAttributes.roughness = roughnessFactor;\n }\n }\n return materialAttributes;\n}\n\nfunction parseDefaultScene(ctx) {\n const gltfData = ctx.gltfData;\n const scene = gltfData.scene || gltfData.scenes[0];\n if (!scene) {\n ctx.error(\"glTF has no default scene\");\n return;\n }\n parseScene(ctx, scene);\n}\n\nfunction parseScene(ctx, scene) {\n const nodes = scene.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n countMeshUsage(ctx, node);\n }\n for (let i = 0, len = nodes.length; i < len && !ctx.nodesHaveNames; i++) {\n const node = nodes[i];\n if (testIfNodesHaveNames(node)) {\n ctx.nodesHaveNames = true;\n }\n }\n if (!ctx.nodesHaveNames) {\n ctx.log(`Warning: No \"name\" attributes found on glTF scene nodes - objects in XKT may not be what you expect`);\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithoutNames(ctx, node, 0, null);\n }\n } else {\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n parseNodesWithNames(ctx, node, 0, null);\n }\n }\n}\n\nfunction countMeshUsage(ctx, node, level = 0) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (mesh) {\n mesh.instances = mesh.instances ? mesh.instances + 1 : 1;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (!childNode) {\n ctx.error(\"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNode, level + 1);\n }\n }\n}\n\nfunction testIfNodesHaveNames(node, level = 0) {\n if (!node) {\n return;\n }\n if (node.name) {\n return true;\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n if (testIfNodesHaveNames(childNode, level + 1)) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\n * Create a XKTMesh for each mesh primitive, and a single XKTEntity.\n */\nconst parseNodesWithoutNames = (function () {\n\n const meshIds = [];\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithoutNames(ctx, childNode, depth + 1, matrix);\n }\n }\n if (depth === 0) {\n let entityId = \"entity-\" + ctx.nextId++;\n if (meshIds && meshIds.length > 0) {\n ctx.log(\"Creating XKTEntity with default ID: \" + entityId);\n ctx.xktModel.createEntity({\n entityId,\n meshIds\n });\n meshIds.length = 0;\n }\n ctx.stats.numObjects++;\n }\n }\n})();\n\n\n/**\n * Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n *\n * Create a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n *\n * Following a depth-first traversal, each XKTEntity is created on post-visit of each named node,\n * and gets all the XKTMeshes created since the last XKTEntity created.\n */\nconst parseNodesWithNames = (function () {\n\n const objectIdStack = [];\n const meshIdsStack = [];\n let meshIds = null;\n\n return function (ctx, node, depth, matrix) {\n if (!node) {\n return;\n }\n matrix = parseNodeMatrix(node, matrix);\n if (node.name) {\n meshIds = [];\n let xktEntityId = node.name;\n if (!!xktEntityId && ctx.xktModel.entities[xktEntityId]) {\n ctx.log(`Warning: Two or more glTF nodes found with same 'name' attribute: '${xktEntityId} - will randomly-generating an object ID in XKT`);\n }\n while (!xktEntityId || ctx.xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n objectIdStack.push(xktEntityId);\n meshIdsStack.push(meshIds);\n }\n if (meshIds && node.mesh) {\n parseNodeMesh(node, ctx, matrix, meshIds);\n }\n if (node.children) {\n const children = node.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNode = children[i];\n parseNodesWithNames(ctx, childNode, depth + 1, matrix);\n }\n }\n const nodeName = node.name;\n if ((nodeName !== undefined && nodeName !== null) || depth === 0) {\n let xktEntityId = objectIdStack.pop();\n if (!xktEntityId) { // For when there are no nodes with names\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n let entityMeshIds = meshIdsStack.pop();\n if (meshIds && meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: entityMeshIds\n });\n }\n ctx.stats.numObjects++;\n meshIds = meshIdsStack.length > 0 ? meshIdsStack[meshIdsStack.length - 1] : null;\n }\n }\n})();\n\n/**\n * Parses transform at the given glTF node.\n *\n * @param node the glTF node\n * @param matrix Transfor matrix from parent nodes\n * @returns {*} Transform matrix for the node\n */\nfunction parseNodeMatrix(node, matrix) {\n if (!node) {\n return;\n }\n let localMatrix;\n if (node.matrix) {\n localMatrix = node.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.translation) {\n localMatrix = math.translationMat4v(node.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.rotation) {\n localMatrix = math.quaternionToMat4(node.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n if (node.scale) {\n localMatrix = math.scalingMat4v(node.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n return matrix;\n}\n\nfunction createPrimitiveHash(primitive) {\n const hash = [];\n const attributes = primitive.attributes;\n if (attributes) {\n for (let key in attributes) {\n hash.push(attributes[key].id);\n }\n }\n return hash.join(\".\");\n}\n\n/**\n * Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.\n *\n * @param node glTF node\n * @param ctx Parsing context\n * @param matrix Matrix for the XKTMeshes\n * @param meshIds returns IDs of the new XKTMeshes\n */\nfunction parseNodeMesh(node, ctx, matrix, meshIds) {\n if (!node) {\n return;\n }\n const mesh = node.mesh;\n if (!mesh) {\n return;\n }\n const numPrimitives = mesh.primitives.length;\n if (numPrimitives > 0) {\n for (let i = 0; i < numPrimitives; i++) {\n try {\n const primitive = mesh.primitives[i];\n const geometryId = createPrimitiveHash(primitive);\n if (!ctx.geometriesCreated[geometryId]) {\n const geometryCfg = {\n geometryId\n };\n switch (primitive.mode) {\n case 0: // POINTS\n geometryCfg.primitiveType = \"points\";\n break;\n case 1: // LINES\n geometryCfg.primitiveType = \"lines\";\n break;\n case 2: // LINE_LOOP\n geometryCfg.primitiveType = \"line-loop\";\n break;\n case 3: // LINE_STRIP\n geometryCfg.primitiveType = \"line-strip\";\n break;\n case 4: // TRIANGLES\n geometryCfg.primitiveType = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n geometryCfg.primitiveType = \"triangle-strip\";\n break;\n case 6: // TRIANGLE_FAN\n geometryCfg.primitiveType = \"triangle-fan\";\n break;\n default:\n geometryCfg.primitiveType = \"triangles\";\n }\n const POSITION = primitive.attributes.POSITION;\n if (!POSITION) {\n continue;\n }\n geometryCfg.positions = primitive.attributes.POSITION.value;\n ctx.stats.numVertices += geometryCfg.positions.length / 3;\n if (ctx.includeNormals) {\n if (primitive.attributes.NORMAL) {\n geometryCfg.normals = primitive.attributes.NORMAL.value;\n ctx.stats.numNormals += geometryCfg.normals.length / 3;\n }\n }\n if (primitive.attributes.COLOR_0) {\n geometryCfg.colorsCompressed = primitive.attributes.COLOR_0.value;\n }\n if (ctx.includeTextures) {\n if (primitive.attributes.TEXCOORD_0) {\n geometryCfg.uvs = primitive.attributes.TEXCOORD_0.value;\n ctx.stats.numUVs += geometryCfg.uvs.length / 2;\n }\n }\n if (primitive.indices) {\n geometryCfg.indices = primitive.indices.value;\n if (primitive.mode === 4) {\n ctx.stats.numTriangles += geometryCfg.indices.length / 3;\n }\n }\n ctx.xktModel.createGeometry(geometryCfg);\n ctx.geometriesCreated[geometryId] = true;\n ctx.stats.numGeometries++;\n }\n const xktMeshId = ctx.nextId++;\n const meshCfg = {\n meshId: xktMeshId,\n geometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4()\n };\n const material = primitive.material;\n if (material) {\n meshCfg.textureSetId = material._textureSetId;\n meshCfg.color = material._attributes.color;\n meshCfg.opacity = material._attributes.opacity;\n meshCfg.metallic = material._attributes.metallic;\n meshCfg.roughness = material._attributes.roughness;\n } else {\n meshCfg.color = [1.0, 1.0, 1.0];\n meshCfg.opacity = 1.0;\n }\n ctx.xktModel.createMesh(meshCfg);\n meshIds.push(xktMeshId);\n } catch (e) {\n console.log(e);\n }\n }\n }\n}\n\nexport {parseGLTFIntoXKTModel};", "static": true, "longname": "/home/lindsay/xeolabs/xeokit-convert-mar14/src/parsers/parseGLTFIntoXKTModel.js", "access": "public", @@ -12802,7 +12802,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 138, + "lineNumber": 139, "undocument": true, "params": [ { @@ -12829,7 +12829,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 149, + "lineNumber": 150, "undocument": true, "params": [ { @@ -12862,7 +12862,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 244, + "lineNumber": 245, "undocument": true, "params": [ { @@ -12889,7 +12889,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 256, + "lineNumber": 257, "undocument": true, "params": [ { @@ -12926,7 +12926,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 309, + "lineNumber": 310, "undocument": true, "params": [ { @@ -12963,7 +12963,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 369, + "lineNumber": 370, "undocument": true, "params": [ { @@ -12990,7 +12990,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 379, + "lineNumber": 380, "undocument": true, "params": [ { @@ -13023,7 +13023,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 408, + "lineNumber": 409, "undocument": true, "params": [ { @@ -13065,7 +13065,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": null, - "lineNumber": 429, + "lineNumber": 430, "undocument": true, "params": [ { @@ -13103,7 +13103,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": "Parses a glTF node hierarchy that is known to NOT contain \"name\" attributes on the nodes.\nCreate a XKTMesh for each mesh primitive, and a single XKTEntity.", - "lineNumber": 452, + "lineNumber": 453, "type": { "types": [ "*" @@ -13123,7 +13123,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": "Parses a glTF node hierarchy that is known to contain \"name\" attributes on the nodes.\n\nCreate a XKTMesh for each mesh primitive, and XKTEntity for each named node.\n\nFollowing a depth-first traversal, each XKTEntity is created on post-visit of each named node,\nand gets all the XKTMeshes created since the last XKTEntity created.", - "lineNumber": 495, + "lineNumber": 496, "type": { "types": [ "*" @@ -13145,7 +13145,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": "Parses transform at the given glTF node.", - "lineNumber": 554, + "lineNumber": 555, "unknown": [ { "tagName": "@returns", @@ -13187,6 +13187,37 @@ { "__docId__": 461, "kind": "function", + "name": "createPrimitiveHash", + "memberof": "src/parsers/parseGLTFIntoXKTModel.js", + "generator": false, + "async": false, + "static": true, + "longname": "src/parsers/parseGLTFIntoXKTModel.js~createPrimitiveHash", + "access": "public", + "export": false, + "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", + "importStyle": null, + "description": null, + "lineNumber": 595, + "undocument": true, + "params": [ + { + "name": "primitive", + "types": [ + "*" + ] + } + ], + "return": { + "types": [ + "*" + ] + }, + "ignore": true + }, + { + "__docId__": 462, + "kind": "function", "name": "parseNodeMesh", "memberof": "src/parsers/parseGLTFIntoXKTModel.js", "generator": false, @@ -13198,7 +13229,7 @@ "importPath": "@xeokit/xeokit-convert/src/parsers/parseGLTFIntoXKTModel.js", "importStyle": null, "description": "Parses primitives referenced by the mesh belonging to the given node, creating XKTMeshes in the XKTModel.", - "lineNumber": 602, + "lineNumber": 614, "params": [ { "nullable": null, @@ -13245,7 +13276,7 @@ "ignore": true }, { - "__docId__": 462, + "__docId__": 463, "kind": "function", "name": "parseGLTFIntoXKTModel", "memberof": "src/parsers/parseGLTFIntoXKTModel.js", @@ -13371,7 +13402,7 @@ } }, { - "__docId__": 463, + "__docId__": 464, "kind": "file", "name": "src/parsers/parseGLTFJSONIntoXKTModel.js", "content": "import {utils} from \"../XKTModel/lib/utils.js\";\nimport {math} from \"../lib/math.js\";\n\nconst atob2 = (typeof atob !== 'undefined') ? atob : a => Buffer.from(a, 'base64').toString('binary');\n\nconst WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n};\n\nconst WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n};\n\n/**\n * @desc Parses glTF JSON into an {@link XKTModel}, without ````.glb```` and textures.\n *\n * * Lightweight JSON-based glTF parser which ignores textures\n * * For texture and ````.glb```` support, see {@link parseGLTFIntoXKTModel}\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a glTF model into it.\n *\n * ````javascript\n * utils.loadJSON(\"./models/gltf/duplex/scene.gltf\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseGLTFJSONIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing parameters.\n * @param {Object} params.data The glTF JSON.\n * @param {Object} [params.metaModelData] Metamodel JSON. If this is provided, then parsing is able to ensure that the XKTObjects it creates will fit the metadata properly.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Boolean} [params.includeNormals=false] Whether to parse normals. When false, the parser will ignore the glTF\n * geometry normals, and the glTF data will rely on the xeokit ````Viewer```` to automatically generate them. This has\n * the limitation that the normals will be face-aligned, and therefore the ````Viewer```` will only be able to render\n * a flat-shaded representation of the glTF.\n * @param {Boolean} [params.reuseGeometries=true] When true, the parser will enable geometry reuse within the XKTModel. When false,\n * will automatically \"expand\" all reused geometries into duplicate copies. This has the drawback of increasing the XKT\n * file size (~10-30% for typical models), but can make the model more responsive in the xeokit Viewer, especially if the model\n * has excessive geometry reuse. An example of excessive geometry reuse would be if we have 4000 geometries that are\n * shared amongst 2000 objects, ie. a large number of geometries with a low amount of reuse, which can present a\n * pathological performance case for xeokit's underlying graphics APIs (WebGL, WebGPU etc).\n * @param {function} [params.getAttachment] Callback through which to fetch attachments, if the glTF has them.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise}\n */\nfunction parseGLTFJSONIntoXKTModel({\n data,\n xktModel,\n metaModelData,\n includeNormals,\n reuseGeometries,\n getAttachment,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseGLTFJSONIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n stats.sourceFormat = \"glTF\";\n stats.schemaVersion = \"2.0\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numTriangles = 0;\n stats.numVertices = 0;\n stats.numNormals = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n\n const ctx = {\n gltf: data,\n metaModelCorrections: metaModelData ? getMetaModelCorrections(metaModelData) : null,\n getAttachment: getAttachment || (() => {\n throw new Error('You must define getAttachment() method to convert glTF with external resources')\n }),\n log: (log || function (msg) {\n }),\n xktModel,\n includeNormals,\n createXKTGeometryIds: {},\n nextMeshId: 0,\n reuseGeometries: (reuseGeometries !== false),\n stats\n };\n\n ctx.log(`Parsing normals: ${ctx.includeNormals ? \"enabled\" : \"disabled\"}`);\n\n parseBuffers(ctx).then(() => {\n\n parseBufferViews(ctx);\n freeBuffers(ctx);\n parseMaterials(ctx);\n parseDefaultScene(ctx);\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n}\n\nfunction getMetaModelCorrections(metaModelData) {\n const eachRootStats = {};\n const eachChildRoot = {};\n const metaObjects = metaModelData.metaObjects || [];\n const metaObjectsMap = {};\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n metaObjectsMap[metaObject.id] = metaObject;\n }\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const metaObject = metaObjects[i];\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) {\n let rootMetaObject = metaObjectParent;\n while (rootMetaObject.parent && metaObjectsMap[rootMetaObject.parent].type === rootMetaObject.type) {\n rootMetaObject = metaObjectsMap[rootMetaObject.parent];\n }\n const rootStats = eachRootStats[rootMetaObject.id] || (eachRootStats[rootMetaObject.id] = {\n numChildren: 0,\n countChildren: 0\n });\n rootStats.numChildren++;\n eachChildRoot[metaObject.id] = rootMetaObject;\n } else {\n\n }\n }\n }\n const metaModelCorrections = {\n metaObjectsMap,\n eachRootStats,\n eachChildRoot\n };\n return metaModelCorrections;\n}\n\nfunction parseBuffers(ctx) { // Parses geometry buffers into temporary \"_buffer\" Unit8Array properties on the glTF \"buffer\" elements\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n return Promise.all(buffers.map(buffer => parseBuffer(ctx, buffer)));\n } else {\n return new Promise(function (resolve, reject) {\n resolve();\n });\n }\n}\n\nfunction parseBuffer(ctx, bufferInfo) {\n return new Promise(function (resolve, reject) {\n // Allow a shortcut where the glTF buffer is \"enrichened\" with direct\n // access to the data-arrayBuffer, w/out needing to either:\n // - read the file indicated by the \".uri\" component of the buffer\n // - base64-decode the encoded data in the \".uri\" component\n if (bufferInfo._arrayBuffer) {\n bufferInfo._buffer = bufferInfo._arrayBuffer;\n resolve(bufferInfo);\n return;\n }\n // Otherwise, proceed with \"standard-glTF\" .uri component.\n const uri = bufferInfo.uri;\n if (!uri) {\n reject('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n return;\n }\n parseArrayBuffer(ctx, uri).then((arrayBuffer) => {\n bufferInfo._buffer = arrayBuffer;\n resolve(arrayBuffer);\n }, (errMsg) => {\n reject(errMsg);\n })\n });\n}\n\nfunction parseArrayBuffer(ctx, uri) {\n return new Promise(function (resolve, reject) {\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; // Check for data: URI\n const dataUriRegexResult = uri.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n let data = dataUriRegexResult[3];\n data = decodeURIComponent(data);\n if (isBase64) {\n data = atob2(data);\n }\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n resolve(buffer);\n } else { // Uri is a path to a file\n ctx.getAttachment(uri).then(\n (arrayBuffer) => {\n resolve(arrayBuffer);\n },\n (errMsg) => {\n reject(errMsg);\n });\n }\n });\n}\n\nfunction parseBufferViews(ctx) { // Parses our temporary \"_buffer\" properties into \"_buffer\" properties on glTF \"bufferView\" elements\n const bufferViewsInfo = ctx.gltf.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n parseBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n}\n\nfunction parseBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.gltf.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n}\n\nfunction freeBuffers(ctx) { // Deletes the \"_buffer\" properties from the glTF \"buffer\" elements, to save memory\n const buffers = ctx.gltf.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n}\n\nfunction parseMaterials(ctx) {\n const materialsInfo = ctx.gltf.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = parseMaterial(ctx, materialInfo);\n materialInfo._materialData = material;\n }\n }\n}\n\nfunction parseMaterial(ctx, materialInfo) { // Attempts to extract an RGBA color for a glTF material\n const material = {\n color: new Float32Array([1, 1, 1]),\n opacity: 1.0,\n metallic: 0,\n roughness: 1\n };\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n material.color[0] = diffuseFactor[0];\n material.color[1] = diffuseFactor[1];\n material.color[2] = diffuseFactor[2];\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n material.color[0] = diffuse[0];\n material.color[1] = diffuse[1];\n material.color[2] = diffuse[2];\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n material.opacity = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n material.opacity = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n material.color[0] = baseColorFactor[0];\n material.color[1] = baseColorFactor[1];\n material.color[2] = baseColorFactor[2];\n material.opacity = baseColorFactor[3];\n }\n const metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n material.metallic = metallicFactor;\n }\n const roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n material.roughness = roughnessFactor;\n }\n }\n return material;\n}\n\nfunction parseDefaultScene(ctx) {\n const scene = ctx.gltf.scene || 0;\n const defaultSceneInfo = ctx.gltf.scenes[scene];\n if (!defaultSceneInfo) {\n throw new Error(\"glTF has no default scene\");\n }\n parseScene(ctx, defaultSceneInfo);\n}\n\n\nfunction parseScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = ctx.gltf.nodes[nodes[i]];\n if (glTFNode) {\n parseNode(ctx, glTFNode, 0, null);\n }\n }\n}\n\nlet deferredMeshIds = [];\n\nfunction parseNode(ctx, glTFNode, depth, matrix) {\n\n const gltf = ctx.gltf;\n const xktModel = ctx.xktModel;\n\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n const gltfMeshId = glTFNode.mesh;\n\n if (gltfMeshId !== undefined) {\n\n const meshInfo = gltf.meshes[gltfMeshId];\n\n if (meshInfo) {\n\n const numPrimitivesInMesh = meshInfo.primitives.length;\n\n if (numPrimitivesInMesh > 0) {\n\n for (let i = 0; i < numPrimitivesInMesh; i++) {\n\n const primitiveInfo = meshInfo.primitives[i];\n\n const geometryHash = createPrimitiveGeometryHash(primitiveInfo);\n\n let xktGeometryId = ctx.createXKTGeometryIds[geometryHash];\n\n if ((!ctx.reuseGeometries) || !xktGeometryId) {\n\n xktGeometryId = \"geometry-\" + ctx.nextMeshId++\n\n const geometryArrays = {};\n\n parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays);\n\n const colors = geometryArrays.colors;\n\n let colorsCompressed;\n\n if (geometryArrays.colors) {\n colorsCompressed = [];\n for (let j = 0, lenj = colors.length; j < lenj; j += 4) {\n colorsCompressed.push(colors[j + 0]);\n colorsCompressed.push(colors[j + 1]);\n colorsCompressed.push(colors[j + 2]);\n colorsCompressed.push(255);\n }\n }\n\n xktModel.createGeometry({\n geometryId: xktGeometryId,\n primitiveType: geometryArrays.primitive,\n positions: geometryArrays.positions,\n normals: ctx.includeNormals ? geometryArrays.normals : null,\n colorsCompressed: colorsCompressed,\n indices: geometryArrays.indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += geometryArrays.positions ? geometryArrays.positions.length / 3 : 0;\n ctx.stats.numNormals += (ctx.includeNormals && geometryArrays.normals) ? geometryArrays.normals.length / 3 : 0;\n ctx.stats.numTriangles += geometryArrays.indices ? geometryArrays.indices.length / 3 : 0;\n\n ctx.createXKTGeometryIds[geometryHash] = xktGeometryId;\n } else {\n// Geometry reused\n }\n\n const materialIndex = primitiveInfo.material;\n const materialInfo = (materialIndex !== null && materialIndex !== undefined) ? gltf.materials[materialIndex] : null;\n const color = materialInfo ? materialInfo._materialData.color : new Float32Array([1.0, 1.0, 1.0, 1.0]);\n const opacity = materialInfo ? materialInfo._materialData.opacity : 1.0;\n const metallic = materialInfo ? materialInfo._materialData.metallic : 0.0;\n const roughness = materialInfo ? materialInfo._materialData.roughness : 1.0;\n\n const xktMeshId = \"mesh-\" + ctx.nextMeshId++;\n\n xktModel.createMesh({\n meshId: xktMeshId,\n geometryId: xktGeometryId,\n matrix: matrix ? matrix.slice() : math.identityMat4(),\n color: color,\n opacity: opacity,\n metallic: metallic,\n roughness: roughness\n });\n\n deferredMeshIds.push(xktMeshId);\n }\n }\n }\n }\n\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childGLTFNode = gltf.nodes[childNodeIdx];\n if (!childGLTFNode) {\n console.warn('Node not found: ' + i);\n continue;\n }\n parseNode(ctx, childGLTFNode, depth + 1, matrix);\n }\n }\n\n // Post-order visit scene node\n\n const nodeName = glTFNode.name;\n if (((nodeName !== undefined && nodeName !== null) || depth === 0) && deferredMeshIds.length > 0) {\n if (nodeName === undefined || nodeName === null) {\n ctx.log(`[parseGLTFJSONIntoXKTModel] Warning: 'name' properties not found on glTF scene nodes - will randomly-generate object IDs in XKT`);\n }\n let xktEntityId = nodeName; // Fall back on generated ID when `name` not found on glTF scene node(s)\n if (xktEntityId === undefined || xktEntityId === null) {\n if (xktModel.entities[xktEntityId]) {\n ctx.error(\"Two or more glTF nodes found with same 'name' attribute: '\" + nodeName + \"'\");\n }\n while (!xktEntityId || xktModel.entities[xktEntityId]) {\n xktEntityId = \"entity-\" + ctx.nextId++;\n }\n }\n if (ctx.metaModelCorrections) { // Merging meshes into XKTObjects that map to metaobjects\n const rootMetaObject = ctx.metaModelCorrections.eachChildRoot[xktEntityId];\n if (rootMetaObject) {\n const rootMetaObjectStats = ctx.metaModelCorrections.eachRootStats[rootMetaObject.id];\n rootMetaObjectStats.countChildren++;\n if (rootMetaObjectStats.countChildren >= rootMetaObjectStats.numChildren) {\n xktModel.createEntity({\n entityId: rootMetaObject.id,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n } else {\n const metaObject = ctx.metaModelCorrections.metaObjectsMap[xktEntityId];\n if (metaObject) {\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n } else { // Create an XKTObject from the meshes at each named glTF node, don't care about metaobjects\n xktModel.createEntity({\n entityId: xktEntityId,\n meshIds: deferredMeshIds\n });\n ctx.stats.numObjects++;\n deferredMeshIds = [];\n }\n }\n}\n\nfunction createPrimitiveGeometryHash(primitiveInfo) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return \"empty\";\n }\n const mode = primitiveInfo.mode;\n const material = primitiveInfo.material;\n const indices = primitiveInfo.indices;\n const positions = primitiveInfo.attributes.POSITION;\n const normals = primitiveInfo.attributes.NORMAL;\n const colors = primitiveInfo.attributes.COLOR_0;\n const uv = primitiveInfo.attributes.TEXCOORD_0;\n return [\n mode,\n // material,\n (indices !== null && indices !== undefined) ? indices : \"-\",\n (positions !== null && positions !== undefined) ? positions : \"-\",\n (normals !== null && normals !== undefined) ? normals : \"-\",\n (colors !== null && colors !== undefined) ? colors : \"-\",\n (uv !== null && uv !== undefined) ? uv : \"-\"\n ].join(\";\");\n}\n\nfunction parsePrimitiveGeometry(ctx, primitiveInfo, geometryArrays) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n switch (primitiveInfo.mode) {\n case 0: // POINTS\n geometryArrays.primitive = \"points\";\n break;\n case 1: // LINES\n geometryArrays.primitive = \"lines\";\n break;\n case 2: // LINE_LOOP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 3: // LINE_STRIP\n // TODO: convert\n geometryArrays.primitive = \"lines\";\n break;\n case 4: // TRIANGLES\n geometryArrays.primitive = \"triangles\";\n break;\n case 5: // TRIANGLE_STRIP\n // TODO: convert\n console.log(\"TRIANGLE_STRIP\");\n geometryArrays.primitive = \"triangles\";\n break;\n case 6: // TRIANGLE_FAN\n // TODO: convert\n console.log(\"TRIANGLE_FAN\");\n geometryArrays.primitive = \"triangles\";\n break;\n default:\n geometryArrays.primitive = \"triangles\";\n }\n const accessors = ctx.gltf.accessors;\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = accessors[indicesIndex];\n geometryArrays.indices = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = accessors[positionsIndex];\n geometryArrays.positions = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = accessors[normalsIndex];\n geometryArrays.normals = parseAccessorTypedArray(ctx, accessorInfo);\n }\n const colorsIndex = attributes.COLOR_0;\n if (colorsIndex !== null && colorsIndex !== undefined) {\n const accessorInfo = accessors[colorsIndex];\n geometryArrays.colors = parseAccessorTypedArray(ctx, accessorInfo);\n }\n}\n\nfunction parseAccessorTypedArray(ctx, accessorInfo) {\n const bufferView = ctx.gltf.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n throw new Error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferView._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n}\n\nexport {parseGLTFJSONIntoXKTModel};\n", @@ -13382,7 +13413,7 @@ "lineNumber": 1 }, { - "__docId__": 464, + "__docId__": 465, "kind": "variable", "name": "atob2", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13403,7 +13434,7 @@ "ignore": true }, { - "__docId__": 465, + "__docId__": 466, "kind": "variable", "name": "WEBGL_COMPONENT_TYPES", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13424,7 +13455,7 @@ "ignore": true }, { - "__docId__": 466, + "__docId__": 467, "kind": "variable", "name": "WEBGL_TYPE_SIZES", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13445,7 +13476,7 @@ "ignore": true }, { - "__docId__": 467, + "__docId__": 468, "kind": "function", "name": "getMetaModelCorrections", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13476,7 +13507,7 @@ "ignore": true }, { - "__docId__": 468, + "__docId__": 469, "kind": "function", "name": "parseBuffers", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13507,7 +13538,7 @@ "ignore": true }, { - "__docId__": 469, + "__docId__": 470, "kind": "function", "name": "parseBuffer", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13544,7 +13575,7 @@ "ignore": true }, { - "__docId__": 470, + "__docId__": 471, "kind": "function", "name": "parseArrayBuffer", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13581,7 +13612,7 @@ "ignore": true }, { - "__docId__": 471, + "__docId__": 472, "kind": "function", "name": "parseBufferViews", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13608,7 +13639,7 @@ "ignore": true }, { - "__docId__": 472, + "__docId__": 473, "kind": "function", "name": "parseBufferView", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13641,7 +13672,7 @@ "ignore": true }, { - "__docId__": 473, + "__docId__": 474, "kind": "function", "name": "freeBuffers", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13668,7 +13699,7 @@ "ignore": true }, { - "__docId__": 474, + "__docId__": 475, "kind": "function", "name": "parseMaterials", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13695,7 +13726,7 @@ "ignore": true }, { - "__docId__": 475, + "__docId__": 476, "kind": "function", "name": "parseMaterial", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13732,7 +13763,7 @@ "ignore": true }, { - "__docId__": 476, + "__docId__": 477, "kind": "function", "name": "parseDefaultScene", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13759,7 +13790,7 @@ "ignore": true }, { - "__docId__": 477, + "__docId__": 478, "kind": "function", "name": "parseScene", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13792,7 +13823,7 @@ "ignore": true }, { - "__docId__": 478, + "__docId__": 479, "kind": "variable", "name": "deferredMeshIds", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13813,7 +13844,7 @@ "ignore": true }, { - "__docId__": 479, + "__docId__": 480, "kind": "function", "name": "parseNode", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13858,7 +13889,7 @@ "ignore": true }, { - "__docId__": 480, + "__docId__": 481, "kind": "function", "name": "createPrimitiveGeometryHash", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13889,7 +13920,7 @@ "ignore": true }, { - "__docId__": 481, + "__docId__": 482, "kind": "function", "name": "parsePrimitiveGeometry", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13928,7 +13959,7 @@ "ignore": true }, { - "__docId__": 482, + "__docId__": 483, "kind": "function", "name": "parseAccessorTypedArray", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -13965,7 +13996,7 @@ "ignore": true }, { - "__docId__": 483, + "__docId__": 484, "kind": "function", "name": "parseGLTFJSONIntoXKTModel", "memberof": "src/parsers/parseGLTFJSONIntoXKTModel.js", @@ -14091,7 +14122,7 @@ } }, { - "__docId__": 484, + "__docId__": 485, "kind": "file", "name": "src/parsers/parseIFCIntoXKTModel.js", "content": "/**\n * @desc Parses IFC STEP file data into an {@link XKTModel}.\n *\n * This function uses [web-ifc](https://github.com/tomvandig/web-ifc) to parse the IFC, which relies on a\n * WASM file to do the parsing.\n *\n * Depending on how we use this function, we may need to provide it with a path to the directory where that WASM file is stored.\n *\n * This function is tested with web-ifc version 0.0.34.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an IFC model into it.\n *\n * ````javascript\n * import {XKTModel, parseIFCIntoXKTModel, writeXKTModelToArrayBuffer} from \"xeokit-convert.es.js\";\n *\n * import * as WebIFC from \"web-ifc-api.js\";\n *\n * utils.loadArraybuffer(\"rac_advanced_sample_project.ifc\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseIFCIntoXKTModel({\n * WebIFC,\n * data,\n * xktModel,\n * wasmPath: \"../dist/\",\n * autoNormals: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {Object} params.WebIFC The WebIFC library. We pass this in as an external dependency, in order to give the\n * caller the choice of whether to use the Browser or NodeJS version.\n * @param {ArrayBuffer} [params.data] IFC file data.\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Boolean} [params.autoNormals=true] When true, the parser will ignore the IFC geometry normals, and the IFC\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the IFC model. This is ````true```` by default, because IFC models tend to look acceptable with flat-shading,\n * and we always want to minimize IFC model size wherever possible.\n * @param {String[]} [params.includeTypes] Option to only convert objects of these types.\n * @param {String[]} [params.excludeTypes] Option to never convert objects of these types.\n * @param {String} params.wasmPath Path to ````web-ifc.wasm````, required by this function.\n * @param {Object} [params.stats={}] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when IFC has been parsed.\n */\nfunction parseIFCIntoXKTModel({\n WebIFC,\n data,\n xktModel,\n autoNormals = true,\n includeTypes,\n excludeTypes,\n wasmPath,\n stats = {},\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseIFCIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n if (!wasmPath) {\n reject(\"Argument expected: wasmPath\");\n return;\n }\n\n const ifcAPI = new WebIFC.IfcAPI();\n\n if (wasmPath) {\n ifcAPI.SetWasmPath(wasmPath);\n }\n\n ifcAPI.Init().then(() => {\n\n const dataArray = new Uint8Array(data);\n\n const modelID = ifcAPI.OpenModel(dataArray);\n\n stats.sourceFormat = \"IFC\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 0;\n stats.numPropertySets = 0;\n stats.numObjects = 0;\n stats.numGeometries = 0;\n stats.numTriangles = 0;\n stats.numVertices = 0;\n\n const ctx = {\n WebIFC,\n modelID,\n ifcAPI,\n xktModel,\n autoNormals,\n log: (log || function (msg) {\n }),\n nextId: 0,\n stats\n };\n\n if (includeTypes) {\n ctx.includeTypes = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n ctx.includeTypes[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n ctx.excludeTypes = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n ctx.excludeTypes[excludeTypes[i]] = true;\n }\n }\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(modelID, WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(modelID, ifcProjectId);\n\n ctx.xktModel.schema = \"\";\n ctx.xktModel.modelId = \"\" + modelID;\n ctx.xktModel.projectId = \"\" + ifcProjectId;\n\n parseMetadata(ctx);\n parseGeometry(ctx);\n parsePropertySets(ctx);\n\n resolve();\n\n }).catch((e) => {\n\n reject(e);\n })\n });\n}\n\nfunction parsePropertySets(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCRELDEFINESBYPROPERTIES);\n\n for (let i = 0; i < lines.size(); i++) {\n\n let relID = lines.get(i);\n\n let rel = ctx.ifcAPI.GetLine(ctx.modelID, relID, true);\n\n if (rel) {\n\n const relatingPropertyDefinition = rel.RelatingPropertyDefinition;\n if (!relatingPropertyDefinition) {\n continue;\n }\n\n const propertySetId = relatingPropertyDefinition.GlobalId.value;\n\n const relatedObjects = rel.RelatedObjects;\n if (relatedObjects) {\n for (let i = 0, len = relatedObjects.length; i < len; i++) {\n const relatedObject = relatedObjects[i];\n const metaObjectId = relatedObject.GlobalId.value;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n if (metaObject) {\n if (!metaObject.propertySetIds) {\n metaObject.propertySetIds = [];\n }\n metaObject.propertySetIds.push(propertySetId);\n }\n }\n }\n\n const props = relatingPropertyDefinition.HasProperties;\n if (props && props.length > 0) {\n const propertySetType = \"Default\";\n const propertySetName = relatingPropertyDefinition.Name.value;\n const properties = [];\n for (let i = 0, len = props.length; i < len; i++) {\n const prop = props[i];\n const name = prop.Name;\n const nominalValue = prop.NominalValue;\n if (name && nominalValue) {\n const property = {\n name: name.value,\n type: nominalValue.type,\n value: nominalValue.value,\n valueType: nominalValue.valueType\n };\n if (prop.Description) {\n property.description = prop.Description.value;\n } else if (nominalValue.description) {\n property.description = nominalValue.description;\n }\n properties.push(property);\n }\n }\n ctx.xktModel.createPropertySet({propertySetId, propertySetType, propertySetName, properties});\n ctx.stats.numPropertySets++;\n }\n }\n }\n}\n\nfunction parseMetadata(ctx) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCPROJECT);\n const ifcProjectId = lines.get(0);\n const ifcProject = ctx.ifcAPI.GetLine(ctx.modelID, ifcProjectId);\n\n parseSpatialChildren(ctx, ifcProject);\n}\n\nfunction parseSpatialChildren(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectType = ifcElement.__proto__.constructor.name;\n\n if (ctx.includeTypes && (!ctx.includeTypes[metaObjectType])) {\n return;\n }\n\n if (ctx.excludeTypes && ctx.excludeTypes[metaObjectType]) {\n return;\n }\n\n createMetaObject(ctx, ifcElement, parentMetaObjectId);\n\n const metaObjectId = ifcElement.GlobalId.value;\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingObject',\n 'RelatedObjects',\n ctx.WebIFC.IFCRELAGGREGATES,\n metaObjectId);\n\n parseRelatedItemsOfType(\n ctx,\n ifcElement.expressID,\n 'RelatingStructure',\n 'RelatedElements',\n ctx.WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,\n metaObjectId);\n}\n\nfunction createMetaObject(ctx, ifcElement, parentMetaObjectId) {\n\n const metaObjectId = ifcElement.GlobalId.value;\n const propertySetIds = null;\n const metaObjectType = ifcElement.__proto__.constructor.name;\n const metaObjectName = (ifcElement.Name && ifcElement.Name.value !== \"\") ? ifcElement.Name.value : metaObjectType;\n\n ctx.xktModel.createMetaObject({metaObjectId, propertySetIds, metaObjectType, metaObjectName, parentMetaObjectId});\n ctx.stats.numMetaObjects++;\n}\n\nfunction parseRelatedItemsOfType(ctx, id, relation, related, type, parentMetaObjectId) {\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, type);\n\n for (let i = 0; i < lines.size(); i++) {\n\n const relID = lines.get(i);\n const rel = ctx.ifcAPI.GetLine(ctx.modelID, relID);\n const relatedItems = rel[relation];\n\n let foundElement = false;\n\n if (Array.isArray(relatedItems)) {\n const values = relatedItems.map((item) => item.value);\n foundElement = values.includes(id);\n\n } else {\n foundElement = (relatedItems.value === id);\n }\n\n if (foundElement) {\n\n const element = rel[related];\n\n if (!Array.isArray(element)) {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n\n } else {\n\n element.forEach((element2) => {\n\n const ifcElement = ctx.ifcAPI.GetLine(ctx.modelID, element2.value);\n\n parseSpatialChildren(ctx, ifcElement, parentMetaObjectId);\n });\n }\n }\n }\n}\n\nfunction parseGeometry(ctx) {\n\n // Parses the geometry and materials in the IFC, creates\n // XKTEntity, XKTMesh and XKTGeometry components within the XKTModel.\n\n const flatMeshes = ctx.ifcAPI.LoadAllGeometry(ctx.modelID);\n\n for (let i = 0, len = flatMeshes.size(); i < len; i++) {\n const flatMesh = flatMeshes.get(i);\n createObject(ctx, flatMesh);\n }\n\n // LoadAllGeometry does not return IFCSpace meshes\n // here is a workaround\n\n const lines = ctx.ifcAPI.GetLineIDsWithType(ctx.modelID, ctx.WebIFC.IFCSPACE);\n for (let j = 0, len = lines.size(); j < len; j++) {\n const ifcSpaceId = lines.get(j);\n const flatMesh = ctx.ifcAPI.GetFlatMesh(ctx.modelID, ifcSpaceId);\n createObject(ctx, flatMesh);\n }\n}\n\nfunction createObject(ctx, flatMesh) {\n\n const flatMeshExpressID = flatMesh.expressID;\n const placedGeometries = flatMesh.geometries;\n\n const meshIds = [];\n\n const properties = ctx.ifcAPI.GetLine(ctx.modelID, flatMeshExpressID);\n const entityId = properties.GlobalId.value;\n\n const metaObjectId = entityId;\n const metaObject = ctx.xktModel.metaObjects[metaObjectId];\n\n if (ctx.includeTypes && (!metaObject || (!ctx.includeTypes[metaObject.metaObjectType]))) {\n return;\n }\n\n if (ctx.excludeTypes && (!metaObject || ctx.excludeTypes[metaObject.metaObjectType])) {\n console.log(\"excluding: \" + metaObjectId)\n return;\n }\n\n for (let j = 0, lenj = placedGeometries.size(); j < lenj; j++) {\n\n const placedGeometry = placedGeometries.get(j);\n const geometryId = \"\" + placedGeometry.geometryExpressID;\n\n if (!ctx.xktModel.geometries[geometryId]) {\n\n const geometry = ctx.ifcAPI.GetGeometry(ctx.modelID, placedGeometry.geometryExpressID);\n const vertexData = ctx.ifcAPI.GetVertexArray(geometry.GetVertexData(), geometry.GetVertexDataSize());\n const indices = ctx.ifcAPI.GetIndexArray(geometry.GetIndexData(), geometry.GetIndexDataSize());\n\n // De-interleave vertex arrays\n\n const positions = [];\n const normals = [];\n\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n positions.push(vertexData[k * 6 + 0]);\n positions.push(vertexData[k * 6 + 1]);\n positions.push(vertexData[k * 6 + 2]);\n }\n\n if (!ctx.autoNormals) {\n for (let k = 0, lenk = vertexData.length / 6; k < lenk; k++) {\n normals.push(vertexData[k * 6 + 3]);\n normals.push(vertexData[k * 6 + 4]);\n normals.push(vertexData[k * 6 + 5]);\n }\n }\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: ctx.autoNormals ? null : normals,\n indices: indices\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numVertices += (positions.length / 3);\n ctx.stats.numTriangles += (indices.length / 3);\n }\n\n const meshId = (\"mesh\" + ctx.nextId++);\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n matrix: placedGeometry.flatTransformation,\n color: [placedGeometry.color.x, placedGeometry.color.y, placedGeometry.color.z],\n opacity: placedGeometry.color.w\n });\n\n meshIds.push(meshId);\n }\n\n if (meshIds.length > 0) {\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: meshIds\n });\n ctx.stats.numObjects++;\n }\n}\n\nexport {parseIFCIntoXKTModel};\n", @@ -14102,7 +14133,7 @@ "lineNumber": 1 }, { - "__docId__": 485, + "__docId__": 486, "kind": "function", "name": "parsePropertySets", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14129,7 +14160,7 @@ "ignore": true }, { - "__docId__": 486, + "__docId__": 487, "kind": "function", "name": "parseMetadata", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14156,7 +14187,7 @@ "ignore": true }, { - "__docId__": 487, + "__docId__": 488, "kind": "function", "name": "parseSpatialChildren", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14195,7 +14226,7 @@ "ignore": true }, { - "__docId__": 488, + "__docId__": 489, "kind": "function", "name": "createMetaObject", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14234,7 +14265,7 @@ "ignore": true }, { - "__docId__": 489, + "__docId__": 490, "kind": "function", "name": "parseRelatedItemsOfType", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14291,7 +14322,7 @@ "ignore": true }, { - "__docId__": 490, + "__docId__": 491, "kind": "function", "name": "parseGeometry", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14318,7 +14349,7 @@ "ignore": true }, { - "__docId__": 491, + "__docId__": 492, "kind": "function", "name": "createObject", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14351,7 +14382,7 @@ "ignore": true }, { - "__docId__": 492, + "__docId__": 493, "kind": "function", "name": "parseIFCIntoXKTModel", "memberof": "src/parsers/parseIFCIntoXKTModel.js", @@ -14487,7 +14518,7 @@ } }, { - "__docId__": 493, + "__docId__": 494, "kind": "file", "name": "src/parsers/parseLASIntoXKTModel.js", "content": "import {parse} from '@loaders.gl/core';\nimport {LASLoader} from '@loaders.gl/las';\n\nimport {math} from \"../lib/math.js\";\n\nconst MAX_VERTICES = 500000; // TODO: Rough estimate\n\n/**\n * @desc Parses LAS and LAZ point cloud data into an {@link XKTModel}.\n *\n * This parser handles both the LASER file format (LAS) and its compressed version (LAZ),\n * a public format for the interchange of 3-dimensional point cloud data data, developed\n * for LIDAR mapping purposes.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/laz/autzen.laz\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parseLASIntoXKTModel({\n * data,\n * xktModel,\n * rotateX: true,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data LAS/LAZ file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {boolean} [params.center=false] Set true to center the LAS point positions to [0,0,0]. This is applied before the transformation matrix, if specified.\n * @param {Boolean} [params.transform] 4x4 transformation matrix to transform point positions. Use this to rotate, translate and scale them if neccessary.\n * @param {Number|String} [params.colorDepth=8] Whether colors encoded using 8 or 16 bits. Can be set to 'auto'. LAS specification recommends 16 bits.\n * @param {Boolean} [params.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.\n * @param {Number} [params.skip=1] Read one from every n points.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n * @returns {Promise} Resolves when LAS has been parsed.\n */\nfunction parseLASIntoXKTModel({\n data,\n xktModel,\n center = false,\n transform = null,\n colorDepth = \"auto\",\n fp64 = false,\n skip = 1,\n stats,\n log = () => {\n }\n }) {\n\n if (log) {\n log(\"Using parser: parseLASIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n log(\"Converting LAZ/LAS\");\n\n log(`center: ${center}`);\n if (transform) {\n log(`transform: [${transform}]`);\n }\n log(`colorDepth: ${colorDepth}`);\n log(`fp64: ${fp64}`);\n log(`skip: ${skip}`);\n\n parse(data, LASLoader, {\n las: {\n colorDepth,\n fp64\n }\n }).then((parsedData) => {\n\n const attributes = parsedData.attributes;\n\n const loaderData = parsedData.loaderData;\n const pointsFormatId = loaderData.pointsFormatId !== undefined ? loaderData.pointsFormatId : -1;\n\n if (!attributes.POSITION) {\n log(\"No positions found in file (expected for all LAS point formats)\");\n return;\n }\n\n let readAttributes = {};\n\n switch (pointsFormatId) {\n case 0:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 0)\");\n return;\n }\n\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 1:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 1)\");\n return;\n }\n readAttributes = readIntensities(attributes.POSITION, attributes.intensity);\n break;\n case 2:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 2)\");\n return;\n }\n\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n case 3:\n if (!attributes.intensity) {\n log(\"No intensities found in file (expected for LAS point format 3)\");\n return;\n }\n readAttributes = readColorsAndIntensities(attributes.POSITION, attributes.COLOR_0, attributes.intensity);\n break;\n }\n\n const pointsChunks = chunkArray(readPositions(readAttributes.positions), MAX_VERTICES * 3);\n const colorsChunks = chunkArray(readAttributes.colors, MAX_VERTICES * 4);\n\n const meshIds = [];\n\n for (let j = 0, lenj = pointsChunks.length; j < lenj; j++) {\n\n const geometryId = `geometry-${j}`;\n const meshId = `mesh-${j}`;\n\n meshIds.push(meshId);\n\n xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"points\",\n positions: pointsChunks[j],\n colorsCompressed: colorsChunks[j]\n });\n\n xktModel.createMesh({\n meshId,\n geometryId\n });\n }\n\n const entityId = math.createUUID();\n\n xktModel.createEntity({\n entityId,\n meshIds\n });\n\n const rootMetaObjectId = math.createUUID();\n\n xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"PointCloud\",\n metaObjectName: \"PointCloud (LAZ)\",\n parentMetaObjectId: rootMetaObjectId\n });\n\n if (stats) {\n stats.sourceFormat = \"LAS\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = readAttributes.positions.length / 3;\n }\n\n resolve();\n\n }, (errMsg) => {\n reject(errMsg);\n });\n });\n\n function readPositions(positionsValue) {\n if (positionsValue) {\n if (center) {\n const centerPos = math.vec3();\n const numPoints = positionsValue.length;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n centerPos[0] += positionsValue[i + 0];\n centerPos[1] += positionsValue[i + 1];\n centerPos[2] += positionsValue[i + 2];\n }\n centerPos[0] /= numPoints;\n centerPos[1] /= numPoints;\n centerPos[2] /= numPoints;\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n positionsValue[i + 0] -= centerPos[0];\n positionsValue[i + 1] -= centerPos[1];\n positionsValue[i + 2] -= centerPos[2];\n }\n }\n if (transform) {\n const mat = math.mat4(transform);\n const pos = math.vec3();\n for (let i = 0, len = positionsValue.length; i < len; i += 3) {\n pos[0] = positionsValue[i + 0];\n pos[1] = positionsValue[i + 1];\n pos[2] = positionsValue[i + 2];\n math.transformPoint3(mat, pos, pos);\n positionsValue[i + 0] = pos[0];\n positionsValue[i + 1] = pos[1];\n positionsValue[i + 2] = pos[2];\n }\n }\n }\n return positionsValue;\n }\n\n function readColorsAndIntensities(attributesPosition, attributesColor, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const colors = attributesColor.value;\n const colorSize = attributesColor.size;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n=0,len = intensities.length; i < len; i++, k += colorSize, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = colors[k + 0];\n colorsCompressed[m++] = colors[k + 1];\n colorsCompressed[m++] = colors[k + 2];\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function readIntensities(attributesPosition, attributesIntensity) {\n const positionsValue = attributesPosition.value;\n const intensities = attributesIntensity.value;\n const colorsCompressedSize = intensities.length * 4;\n const positions = [];\n const colorsCompressed = new Uint8Array(colorsCompressedSize / skip);\n let count = skip;\n for (let i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, len = intensities.length; i < len; i++, k += 3, j += 4, l += 3) {\n if (count <= 0) {\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = 0;\n colorsCompressed[m++] = Math.round((intensities[i] / 65536) * 255);\n positions[n++] = positionsValue[l + 0];\n positions[n++] = positionsValue[l + 1];\n positions[n++] = positionsValue[l + 2];\n count = skip;\n } else {\n count--;\n }\n }\n return {\n positions,\n colors: colorsCompressed\n };\n }\n\n function chunkArray(array, chunkSize) {\n if (chunkSize >= array.length) {\n return [array]; // One chunk\n }\n let result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n }\n\n}\n\nexport {parseLASIntoXKTModel};", @@ -14498,7 +14529,7 @@ "lineNumber": 1 }, { - "__docId__": 494, + "__docId__": 495, "kind": "variable", "name": "MAX_VERTICES", "memberof": "src/parsers/parseLASIntoXKTModel.js", @@ -14519,7 +14550,7 @@ "ignore": true }, { - "__docId__": 495, + "__docId__": 496, "kind": "function", "name": "parseLASIntoXKTModel", "memberof": "src/parsers/parseLASIntoXKTModel.js", @@ -14660,7 +14691,7 @@ } }, { - "__docId__": 496, + "__docId__": 497, "kind": "file", "name": "src/parsers/parseMetaModelIntoXKTModel.js", "content": "/**\n * @desc Parses JSON metamodel into an {@link XKTModel}.\n *\n * @param {Object} params Parsing parameters.\n * @param {JSON} params.metaModelData Metamodel data.\n * @param {String[]} [params.excludeTypes] Types to exclude from parsing.\n * @param {String[]} [params.includeTypes] Types to include in parsing.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when JSON has been parsed.\n */\nfunction parseMetaModelIntoXKTModel({metaModelData, xktModel, includeTypes, excludeTypes, log}) {\n\n if (log) {\n log(\"Using parser: parseMetaModelIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n const metaObjects = metaModelData.metaObjects || [];\n const propertySets = metaModelData.propertySets || [];\n\n xktModel.modelId = metaModelData.revisionId || \"\"; // HACK\n xktModel.projectId = metaModelData.projectId || \"\";\n xktModel.revisionId = metaModelData.revisionId || \"\";\n xktModel.author = metaModelData.author || \"\";\n xktModel.createdAt = metaModelData.createdAt || \"\";\n xktModel.creatingApplication = metaModelData.creatingApplication || \"\";\n xktModel.schema = metaModelData.schema || \"\";\n\n for (let i = 0, len = propertySets.length; i < len; i++) {\n\n const propertySet = propertySets[i];\n\n xktModel.createPropertySet({\n propertySetId: propertySet.id,\n propertySetName: propertySet.name,\n propertySetType: propertySet.type,\n properties: propertySet.properties\n });\n }\n\n let includeTypesMap;\n if (includeTypes) {\n includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n let excludeTypesMap;\n if (excludeTypes) {\n excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n const metaObjectsMap = {};\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n const newObject = metaObjects[i];\n metaObjectsMap[newObject.id] = newObject;\n }\n\n let countMetaObjects = 0;\n\n for (let i = 0, len = metaObjects.length; i < len; i++) {\n\n const metaObject = metaObjects[i];\n const type = metaObject.type;\n\n if (excludeTypesMap && excludeTypesMap[type]) {\n continue;\n }\n\n if (includeTypesMap && !includeTypesMap[type]) {\n continue;\n }\n\n if (metaObject.parent !== undefined && metaObject.parent !== null) {\n const metaObjectParent = metaObjectsMap[metaObject.parent];\n if (metaObject.type === metaObjectParent.type) { // Don't create redundant sub-objects\n continue\n }\n }\n\n const propertySetIds = [];\n if (metaObject.propertySetIds) {\n for (let j = 0, lenj = metaObject.propertySetIds.length; j < lenj; j++) {\n const propertySetId = metaObject.propertySetIds[j];\n if (propertySetId !== undefined && propertySetId !== null && propertySetId !== \"\") {\n propertySetIds.push(propertySetId);\n }\n }\n }\n if (metaObject.propertySetId !== undefined && metaObject.propertySetId !== null && metaObject.propertySetId !== \"\") {\n propertySetIds.push(metaObject.propertySetId);\n }\n\n xktModel.createMetaObject({\n metaObjectId: metaObject.id,\n metaObjectType: metaObject.type,\n metaObjectName: metaObject.name,\n parentMetaObjectId: metaObject.parent,\n propertySetIds: propertySetIds.length > 0 ? propertySetIds : null\n });\n\n countMetaObjects++;\n }\n\n if (log) {\n log(\"Converted meta objects: \" + countMetaObjects);\n }\n\n resolve();\n });\n}\n\nexport {parseMetaModelIntoXKTModel};\n", @@ -14671,7 +14702,7 @@ "lineNumber": 1 }, { - "__docId__": 497, + "__docId__": 498, "kind": "function", "name": "parseMetaModelIntoXKTModel", "memberof": "src/parsers/parseMetaModelIntoXKTModel.js", @@ -14763,7 +14794,7 @@ } }, { - "__docId__": 498, + "__docId__": 499, "kind": "file", "name": "src/parsers/parsePCDIntoXKTModel.js", "content": "/**\n * @desc Parses PCD point cloud data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"\"./models/pcd/ism_test_cat.pcd\"\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * await parsePCDIntoXKTModel({\n * data,\n * xktModel,\n * log: (msg) => { console.log(msg); }\n * }).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PCD file data.\n * @param {Boolean} [params.littleEndian=true] Whether PCD binary data is Little-Endian or Big-Endian.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PCD has been parsed.\n */\nfunction parsePCDIntoXKTModel({data, xktModel, littleEndian = true, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePCDIntoXKTModel\");\n }\n\n return new Promise(function(resolve, reject) {\n\n const textData = decodeText(new Uint8Array(data));\n\n const header = parseHeader(textData);\n\n const positions = [];\n const normals = [];\n const colors = [];\n\n if (header.data === 'ascii') {\n\n const offset = header.offset;\n const data = textData.substr(header.headerLen);\n const lines = data.split('\\n');\n\n for (let i = 0, l = lines.length; i < l; i++) {\n\n if (lines[i] === '') {\n continue;\n }\n\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n positions.push(parseFloat(line[offset.x]));\n positions.push(parseFloat(line[offset.y]));\n positions.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const rgb = parseFloat(line[offset.rgb]);\n const r = (rgb >> 16) & 0x0000ff;\n const g = (rgb >> 8) & 0x0000ff;\n const b = (rgb >> 0) & 0x0000ff;\n colors.push(r, g, b, 255);\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n if (header.data === 'binary_compressed') {\n\n const sizes = new Uint32Array(data.slice(header.headerLen, header.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(new Uint8Array(data, header.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = header.offset;\n\n for (let i = 0; i < header.points; i++) {\n\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32((header.points * offset.x) + header.size[0] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.y) + header.size[1] * i, littleEndian));\n positions.push(dataview.getFloat32((header.points * offset.z) + header.size[2] * i, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 0));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 1));\n colors.push(dataview.getUint8((header.points * offset.rgb) + header.size[3] * i + 2));\n // colors.push(255);\n } else {\n colors.push(1);\n colors.push(1);\n colors.push(1);\n }\n }\n }\n\n if (header.data === 'binary') {\n\n const dataview = new DataView(data, header.headerLen);\n const offset = header.offset;\n\n for (let i = 0, row = 0; i < header.points; i++, row += header.rowSize) {\n if (offset.x !== undefined) {\n positions.push(dataview.getFloat32(row + offset.x, littleEndian));\n positions.push(dataview.getFloat32(row + offset.y, littleEndian));\n positions.push(dataview.getFloat32(row + offset.z, littleEndian));\n }\n\n if (offset.rgb !== undefined) {\n colors.push(dataview.getUint8(row + offset.rgb + 2));\n colors.push(dataview.getUint8(row + offset.rgb + 1));\n colors.push(dataview.getUint8(row + offset.rgb + 0));\n } else {\n colors.push(255);\n colors.push(255);\n colors.push(255);\n }\n }\n }\n\n xktModel.createGeometry({\n geometryId: \"pointsGeometry\",\n primitiveType: \"points\",\n positions: positions,\n colors: colors && colors.length > 0 ? colors : null\n });\n\n xktModel.createMesh({\n meshId: \"pointsMesh\",\n geometryId: \"pointsGeometry\"\n });\n\n xktModel.createEntity({\n entityId: \"geometries\",\n meshIds: [\"pointsMesh\"]\n });\n\n if (log) {\n log(\"Converted drawable objects: 1\");\n log(\"Converted geometries: 1\");\n log(\"Converted vertices: \" + positions.length / 3);\n }\n\n if (stats) {\n stats.sourceFormat = \"PCD\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = positions.length / 3;\n }\n\n resolve();\n });\n}\n\nfunction parseHeader(data) {\n const header = {};\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n header.data = result2[1];\n header.headerLen = result2[0].length + result1;\n header.str = data.substr(0, header.headerLen);\n header.str = header.str.replace(/\\#.*/gi, ''); // Strip comments\n header.version = /VERSION (.*)/i.exec(header.str); // Parse\n header.fields = /FIELDS (.*)/i.exec(header.str);\n header.size = /SIZE (.*)/i.exec(header.str);\n header.type = /TYPE (.*)/i.exec(header.str);\n header.count = /COUNT (.*)/i.exec(header.str);\n header.width = /WIDTH (.*)/i.exec(header.str);\n header.height = /HEIGHT (.*)/i.exec(header.str);\n header.viewpoint = /VIEWPOINT (.*)/i.exec(header.str);\n header.points = /POINTS (.*)/i.exec(header.str);\n if (header.version !== null) {\n header.version = parseFloat(header.version[1]);\n }\n if (header.fields !== null) {\n header.fields = header.fields[1].split(' ');\n }\n if (header.type !== null) {\n header.type = header.type[1].split(' ');\n }\n if (header.width !== null) {\n header.width = parseInt(header.width[1]);\n }\n if (header.height !== null) {\n header.height = parseInt(header.height[1]);\n }\n if (header.viewpoint !== null) {\n header.viewpoint = header.viewpoint[1];\n }\n if (header.points !== null) {\n header.points = parseInt(header.points[1], 10);\n }\n if (header.points === null) {\n header.points = header.width * header.height;\n }\n if (header.size !== null) {\n header.size = header.size[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n }\n if (header.count !== null) {\n header.count = header.count[1].split(' ').map(function (x) {\n return parseInt(x, 10);\n });\n } else {\n header.count = [];\n for (let i = 0, l = header.fields.length; i < l; i++) {\n header.count.push(1);\n }\n }\n header.offset = {};\n let sizeSum = 0;\n for (let i = 0, l = header.fields.length; i < l; i++) {\n if (header.data === 'ascii') {\n header.offset[header.fields[i]] = i;\n } else {\n header.offset[header.fields[i]] = sizeSum;\n sizeSum += header.size[i] * header.count[i];\n }\n }\n header.rowSize = sizeSum; // For binary only\n return header;\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]);\n }\n try {\n return decodeURIComponent(escape(s));\n } catch (e) {\n return s;\n }\n}\n\nfunction decompressLZF(inData, outLength) { // https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n do {\n ctrl = inData[inPtr++];\n if (ctrl < (1 << 5)) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n\nexport {parsePCDIntoXKTModel};", @@ -14774,7 +14805,7 @@ "lineNumber": 1 }, { - "__docId__": 499, + "__docId__": 500, "kind": "function", "name": "parseHeader", "memberof": "src/parsers/parsePCDIntoXKTModel.js", @@ -14805,7 +14836,7 @@ "ignore": true }, { - "__docId__": 500, + "__docId__": 501, "kind": "function", "name": "decodeText", "memberof": "src/parsers/parsePCDIntoXKTModel.js", @@ -14836,7 +14867,7 @@ "ignore": true }, { - "__docId__": 501, + "__docId__": 502, "kind": "function", "name": "decompressLZF", "memberof": "src/parsers/parsePCDIntoXKTModel.js", @@ -14873,7 +14904,7 @@ "ignore": true }, { - "__docId__": 502, + "__docId__": 503, "kind": "function", "name": "parsePCDIntoXKTModel", "memberof": "src/parsers/parsePCDIntoXKTModel.js", @@ -14967,7 +14998,7 @@ } }, { - "__docId__": 503, + "__docId__": 504, "kind": "file", "name": "src/parsers/parsePLYIntoXKTModel.js", "content": "import {parse} from '@loaders.gl/core';\nimport {PLYLoader} from '@loaders.gl/ply';\n\n/**\n * @desc Parses PLY file data into an {@link XKTModel}.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load a PLY model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/ply/test.ply\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parsePLYIntoXKTModel({data, xktModel}).then(()=>{\n * xktModel.finalize();\n * },\n * (msg) => {\n * console.error(msg);\n * });\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer} params.data PLY file data.\n * @param {XKTModel} params.xktModel XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when PLY has been parsed.\n */\nasync function parsePLYIntoXKTModel({data, xktModel, stats, log}) {\n\n if (log) {\n log(\"Using parser: parsePLYIntoXKTModel\");\n }\n\n if (!data) {\n throw \"Argument expected: data\";\n }\n\n if (!xktModel) {\n throw \"Argument expected: xktModel\";\n }\n\n let parsedData;\n try {\n parsedData = await parse(data, PLYLoader);\n } catch (e) {\n if (log) {\n log(\"Error: \" + e);\n }\n return;\n }\n\n const attributes = parsedData.attributes;\n const hasColors = !!attributes.COLOR_0;\n\n if (hasColors) {\n const colorsValue = hasColors ? attributes.COLOR_0.value : null;\n const colorsCompressed = [];\n for (let i = 0, len = colorsValue.length; i < len; i += 4) {\n colorsCompressed.push(colorsValue[i]);\n colorsCompressed.push(colorsValue[i + 1]);\n colorsCompressed.push(colorsValue[i + 2]);\n }\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : [],\n colorsCompressed: colorsCompressed\n });\n } else {\n xktModel.createGeometry({\n geometryId: \"plyGeometry\",\n primitiveType: \"triangles\",\n positions: attributes.POSITION.value,\n indices: parsedData.indices ? parsedData.indices.value : []\n });\n }\n\n xktModel.createMesh({\n meshId: \"plyMesh\",\n geometryId: \"plyGeometry\",\n color: (!hasColors) ? [1, 1, 1] : null\n });\n\n xktModel.createEntity({\n entityId: \"ply\",\n meshIds: [\"plyMesh\"]\n });\n\n if (stats) {\n stats.sourceFormat = \"PLY\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numVertices = attributes.POSITION.value.length / 3;\n }\n}\n\nexport {parsePLYIntoXKTModel};\n", @@ -14978,7 +15009,7 @@ "lineNumber": 1 }, { - "__docId__": 504, + "__docId__": 505, "kind": "function", "name": "parsePLYIntoXKTModel", "memberof": "src/parsers/parsePLYIntoXKTModel.js", @@ -15060,7 +15091,7 @@ } }, { - "__docId__": 505, + "__docId__": 506, "kind": "file", "name": "src/parsers/parseSTLIntoXKTModel.js", "content": "import {faceToVertexNormals} from \"../lib/faceToVertexNormals.js\";\nimport {math} from \"../lib/math.js\";\n\n/**\n * @desc Parses STL file data into an {@link XKTModel}.\n *\n * * Supports binary and ASCII STL formats.\n * * Option to create a separate {@link XKTEntity} for each group of faces that share the same vertex colors.\n * * Option to smooth face-aligned normals loaded from STL.\n * * Option to reduce XKT file size by ignoring STL normals and relying on xeokit to auto-generate them.\n *\n * ## Usage\n *\n * In the example below we'll create an {@link XKTModel}, then load an STL model into it.\n *\n * ````javascript\n * utils.loadArraybuffer(\"./models/stl/binary/spurGear.stl\", async (data) => {\n *\n * const xktModel = new XKTModel();\n *\n * parseSTLIntoXKTModel({data, xktModel});\n *\n * xktModel.finalize();\n * });\n * ````\n *\n * @param {Object} params Parsing params.\n * @param {ArrayBuffer|String} [params.data] STL file data. Can be binary or string.\n * @param {Boolean} [params.autoNormals=false] When true, the parser will ignore the STL geometry normals, and the STL\n * data will rely on the xeokit ````Viewer```` to automatically generate them. This has the limitation that the\n * normals will be face-aligned, and therefore the ````Viewer```` will only be able to render a flat-shaded representation\n * of the STL.\n * Overrides ````smoothNormals```` when ````true````. This ignores the normals in the STL, and loads no\n * normals from the STL into the {@link XKTModel}, resulting in the XKT file storing no normals for the STL model. The\n * xeokit-sdk will then automatically generate the normals within its shaders. The disadvantages are that auto-normals\n * may slow rendering down a little bit, and that the normals can only be face-aligned (and thus rendered using flat\n * shading). The advantages, however, are a smaller XKT file size, and the ability to apply certain geometry optimizations\n * during parsing, such as removing duplicated STL vertex positions, that are not possible when normals are loaded\n * for the STL vertices.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented STL normals to vertex normals, for a smooth appearance. Ignored if ````autoNormals```` is ````true````.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] This is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.splitMeshes=true] When true, creates a separate {@link XKTEntity} for each group of faces that share the same vertex colors. Only works with binary STL (ie. when ````data```` is an ArrayBuffer).\n * @param {XKTModel} [params.xktModel] XKTModel to parse into.\n * @param {Object} [params.stats] Collects statistics.\n * @param {function} [params.log] Logging callback.\n @returns {Promise} Resolves when STL has been parsed.\n */\nasync function parseSTLIntoXKTModel({\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n stats,\n log\n }) {\n\n if (log) {\n log(\"Using parser: parseSTLIntoXKTModel\");\n }\n\n return new Promise(function (resolve, reject) {\n\n if (!data) {\n reject(\"Argument expected: data\");\n return;\n }\n\n if (!xktModel) {\n reject(\"Argument expected: xktModel\");\n return;\n }\n\n const rootMetaObjectId = math.createUUID();\n\n const rootMetaObject = xktModel.createMetaObject({\n metaObjectId: rootMetaObjectId,\n metaObjectType: \"Model\",\n metaObjectName: \"Model\"\n });\n\n const ctx = {\n data,\n splitMeshes,\n autoNormals,\n smoothNormals,\n smoothNormalsAngleThreshold,\n xktModel,\n rootMetaObject,\n nextId: 0,\n log: (log || function (msg) {\n }),\n stats: {\n numObjects: 0,\n numGeometries: 0,\n numTriangles: 0,\n numVertices: 0\n }\n };\n\n const binData = ensureBinary(data);\n\n if (isBinary(binData)) {\n parseBinary(ctx, binData);\n } else {\n parseASCII(ctx, ensureString(data));\n }\n\n if (stats) {\n stats.sourceFormat = \"STL\";\n stats.schemaVersion = \"\";\n stats.title = \"\";\n stats.author = \"\";\n stats.created = \"\";\n stats.numMetaObjects = 2;\n stats.numPropertySets = 0;\n stats.numObjects = 1;\n stats.numGeometries = 1;\n stats.numTriangles = ctx.stats.numTriangles;\n stats.numVertices = ctx.stats.numVertices;\n }\n\n resolve();\n });\n}\n\nfunction isBinary(data) {\n const reader = new DataView(data);\n const numFaces = reader.getUint32(80, true);\n const faceSize = (32 / 8 * 3) + ((32 / 8 * 3) * 3) + (16 / 8);\n const numExpectedBytes = 80 + (32 / 8) + (numFaces * faceSize);\n if (numExpectedBytes === reader.byteLength) {\n return true;\n }\n const solid = [115, 111, 108, 105, 100];\n for (let i = 0; i < 5; i++) {\n if (solid[i] !== reader.getUint8(i, false)) {\n return true;\n }\n }\n return false;\n}\n\nfunction parseBinary(ctx, data) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n let r;\n let g;\n let b;\n let hasColors = false;\n let colors;\n let defaultR;\n let defaultG;\n let defaultB;\n let lastR = null;\n let lastG = null;\n let lastB = null;\n let newMesh = false;\n let alpha;\n for (let index = 0; index < 80 - 10; index++) {\n if ((reader.getUint32(index, false) === 0x434F4C4F /*COLO*/) &&\n (reader.getUint8(index + 4) === 0x52 /*'R'*/) &&\n (reader.getUint8(index + 5) === 0x3D /*'='*/)) {\n hasColors = true;\n colors = [];\n defaultR = reader.getUint8(index + 6) / 255;\n defaultG = reader.getUint8(index + 7) / 255;\n defaultB = reader.getUint8(index + 8) / 255;\n alpha = reader.getUint8(index + 9) / 255;\n }\n }\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = ctx.splitMeshes;\n for (let face = 0; face < faces; face++) {\n let start = dataOffset + face * faceLength;\n let normalX = reader.getFloat32(start, true);\n let normalY = reader.getFloat32(start + 4, true);\n let normalZ = reader.getFloat32(start + 8, true);\n if (hasColors) {\n let packedColor = reader.getUint16(start + 48, true);\n if ((packedColor & 0x8000) === 0) {\n r = (packedColor & 0x1F) / 31;\n g = ((packedColor >> 5) & 0x1F) / 31;\n b = ((packedColor >> 10) & 0x1F) / 31;\n } else {\n r = defaultR;\n g = defaultG;\n b = defaultB;\n }\n if (splitMeshes && r !== lastR || g !== lastG || b !== lastB) {\n if (lastR !== null) {\n newMesh = true;\n }\n lastR = r;\n lastG = g;\n lastB = b;\n }\n }\n for (let i = 1; i <= 3; i++) {\n let vertexstart = start + i * 12;\n positions.push(reader.getFloat32(vertexstart, true));\n positions.push(reader.getFloat32(vertexstart + 4, true));\n positions.push(reader.getFloat32(vertexstart + 8, true));\n if (!ctx.autoNormals) {\n normals.push(normalX, normalY, normalZ);\n }\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(ctx, positions, normals, colors);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(ctx, positions, normals, colors);\n }\n}\n\nfunction parseASCII(ctx, data) {\n const faceRegex = /facet([\\s\\S]*?)endfacet/g;\n let faceCounter = 0;\n const floatRegex = /[\\s]+([+-]?(?:\\d+.\\d+|\\d+.|\\d+|.\\d+)(?:[eE][+-]?\\d+)?)/.source;\n const vertexRegex = new RegExp('vertex' + floatRegex + floatRegex + floatRegex, 'g');\n const normalRegex = new RegExp('normal' + floatRegex + floatRegex + floatRegex, 'g');\n const positions = [];\n const normals = [];\n const colors = null;\n let normalx;\n let normaly;\n let normalz;\n let result;\n let verticesPerFace;\n let normalsPerFace;\n let text;\n while ((result = faceRegex.exec(data)) !== null) {\n verticesPerFace = 0;\n normalsPerFace = 0;\n text = result[0];\n while ((result = normalRegex.exec(text)) !== null) {\n normalx = parseFloat(result[1]);\n normaly = parseFloat(result[2]);\n normalz = parseFloat(result[3]);\n normalsPerFace++;\n }\n while ((result = vertexRegex.exec(text)) !== null) {\n positions.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));\n normals.push(normalx, normaly, normalz);\n verticesPerFace++;\n }\n if (normalsPerFace !== 1) {\n ctx.log(\"Error in normal of face \" + faceCounter);\n return -1;\n }\n if (verticesPerFace !== 3) {\n ctx.log(\"Error in positions of face \" + faceCounter);\n return -1;\n }\n faceCounter++;\n }\n addMesh(ctx, positions, normals, colors);\n}\n\nlet nextGeometryId = 0;\n\nfunction addMesh(ctx, positions, normals, colors) {\n\n const indices = new Int32Array(positions.length / 3);\n for (let ni = 0, len = indices.length; ni < len; ni++) {\n indices[ni] = ni;\n }\n\n normals = normals && normals.length > 0 ? normals : null;\n colors = colors && colors.length > 0 ? colors : null;\n\n if (!ctx.autoNormals && ctx.smoothNormals) {\n faceToVertexNormals(positions, normals, {smoothNormalsAngleThreshold: ctx.smoothNormalsAngleThreshold});\n }\n\n const geometryId = \"\" + nextGeometryId++;\n const meshId = \"\" + nextGeometryId++;\n const entityId = \"\" + nextGeometryId++;\n\n ctx.xktModel.createGeometry({\n geometryId: geometryId,\n primitiveType: \"triangles\",\n positions: positions,\n normals: (!ctx.autoNormals) ? normals : null,\n colors: colors,\n indices: indices\n });\n\n ctx.xktModel.createMesh({\n meshId: meshId,\n geometryId: geometryId,\n color: colors ? null : [1, 1, 1],\n metallic: 0.9,\n roughness: 0.1\n });\n\n ctx.xktModel.createEntity({\n entityId: entityId,\n meshIds: [meshId]\n });\n\n ctx.xktModel.createMetaObject({\n metaObjectId: entityId,\n metaObjectType: \"Default\",\n metaObjectName: \"STL Mesh\",\n parentMetaObjectId: ctx.rootMetaObject.metaObjectId\n });\n\n ctx.stats.numGeometries++;\n ctx.stats.numObjects++;\n ctx.stats.numVertices += positions.length / 3;\n ctx.stats.numTriangles += indices.length / 3;\n}\n\nfunction ensureString(buffer) {\n if (typeof buffer !== 'string') {\n return decodeText(new Uint8Array(buffer));\n }\n return buffer;\n}\n\nfunction ensureBinary(buffer) {\n if (typeof buffer === 'string') {\n const arrayBuffer = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i++) {\n arrayBuffer[i] = buffer.charCodeAt(i) & 0xff; // implicitly assumes little-endian\n }\n return arrayBuffer.buffer || arrayBuffer;\n } else {\n return buffer;\n }\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]); // Implicitly assumes little-endian.\n }\n return decodeURIComponent(escape(s));\n}\n\nexport {parseSTLIntoXKTModel};\n", @@ -15071,7 +15102,7 @@ "lineNumber": 1 }, { - "__docId__": 506, + "__docId__": 507, "kind": "function", "name": "isBinary", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15102,7 +15133,7 @@ "ignore": true }, { - "__docId__": 507, + "__docId__": 508, "kind": "function", "name": "parseBinary", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15135,7 +15166,7 @@ "ignore": true }, { - "__docId__": 508, + "__docId__": 509, "kind": "function", "name": "parseASCII", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15172,7 +15203,7 @@ "ignore": true }, { - "__docId__": 509, + "__docId__": 510, "kind": "variable", "name": "nextGeometryId", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15193,7 +15224,7 @@ "ignore": true }, { - "__docId__": 510, + "__docId__": 511, "kind": "function", "name": "addMesh", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15238,7 +15269,7 @@ "ignore": true }, { - "__docId__": 511, + "__docId__": 512, "kind": "function", "name": "ensureString", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15269,7 +15300,7 @@ "ignore": true }, { - "__docId__": 512, + "__docId__": 513, "kind": "function", "name": "ensureBinary", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15300,7 +15331,7 @@ "ignore": true }, { - "__docId__": 513, + "__docId__": 514, "kind": "function", "name": "decodeText", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15331,7 +15362,7 @@ "ignore": true }, { - "__docId__": 514, + "__docId__": 515, "kind": "function", "name": "parseSTLIntoXKTModel", "memberof": "src/parsers/parseSTLIntoXKTModel.js", @@ -15471,7 +15502,7 @@ }, { "kind": "packageJSON", - "content": "{\n \"name\": \"@xeokit/xeokit-convert\",\n \"version\": \"1.1.20\",\n \"description\": \"JavaScript utilities to create .XKT files\",\n \"main\": \"index.js\",\n \"bin\": \"/convert2xkt.js\",\n \"directories\": {},\n \"scripts\": {\n \"build\": \"npm run build-node && npm run build-browser && rollup --config rollup.config.convert2xkt.js && npm run docs\",\n \"build-node\": \"webpack --mode=development --node-env=development --progress\",\n \"build-browser\": \"rollup --config rollup.config.dist.js\",\n \"docs\": \"rimraf ./docs/* && npx esdoc\",\n \"publish\": \"npm publish --access public\",\n \"changelog\": \"auto-changelog --commit-limit false --package --template changelog-template.hbs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-convert.git\"\n },\n \"keywords\": [\n \"xeolabs\",\n \"xeokit\",\n \"bim\",\n \"opensource\",\n \"ifc\",\n \"webgl\",\n \"xkt\",\n \"gltf\",\n \"glb\",\n \"cityjson\",\n \"laz\",\n \"gis\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"LICENSE\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-convert/issues\"\n },\n \"homepage\": \"https://github.com/xeokit/xeokit-convert#readme\",\n \"dependencies\": {\n \"@loaders.gl/core\": \"^3.2.6\",\n \"@loaders.gl/gltf\": \"^3.2.6\",\n \"@loaders.gl/images\": \"^3.2.6\",\n \"@loaders.gl/json\": \"^3.2.6\",\n \"@loaders.gl/las\": \"^3.2.6\",\n \"@loaders.gl/obj\": \"^3.2.6\",\n \"@loaders.gl/ply\": \"^3.2.6\",\n \"@loaders.gl/polyfills\": \"^3.2.6\",\n \"@loaders.gl/textures\": \"^3.2.6\",\n \"@typeonly/validator\": \"^0.5.2\",\n \"commander\": \"^11.0.0\",\n \"core-js\": \"^3.22.5\",\n \"fs\": \"0.0.1-security\",\n \"pako\": \"^2.0.4\",\n \"path\": \"^0.12.7\",\n \"web-ifc\": \"0.0.40\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.17.10\",\n \"@babel/plugin-external-helpers\": \"^7.17.12\",\n \"@babel/preset-env\": \"^7.17.12\",\n \"@rollup/plugin-alias\": \"^3.1.9\",\n \"@rollup/plugin-commonjs\": \"^21.1.0\",\n \"@rollup/plugin-node-resolve\": \"^13.2.1\",\n \"@xeokit/xeokit-sdk\": \"^2.3.0\",\n \"auto-changelog\": \"^2.4.0\",\n \"babel-loader\": \"^8.2.5\",\n \"copy-webpack-plugin\": \"^11.0.0\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-node\": \"^1.0.5\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"http-server\": \"^14.1.0\",\n \"npm-upgrade\": \"^3.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"rollup\": \"^2.70.2\",\n \"rollup-plugin-copy\": \"^3.4.0\",\n \"rollup-plugin-minify-es\": \"^1.1.1\",\n \"typeonly\": \"^0.4.6\",\n \"webpack\": \"^5.72.1\",\n \"webpack-cli\": \"^4.9.2\",\n \"webpack-node-externals\": \"^3.0.0\"\n },\n \"files\": [\n \"/dist\",\n \"/convert2xkt.js\",\n \"/convert2xkt.conf.js\"\n ]\n}", + "content": "{\n \"name\": \"@xeokit/xeokit-convert\",\n \"version\": \"1.1.21\",\n \"description\": \"JavaScript utilities to create .XKT files\",\n \"main\": \"index.js\",\n \"bin\": \"/convert2xkt.js\",\n \"directories\": {},\n \"scripts\": {\n \"build\": \"npm run build-node && npm run build-browser && rollup --config rollup.config.convert2xkt.js && npm run docs\",\n \"build-node\": \"webpack --mode=development --node-env=development --progress\",\n \"build-browser\": \"rollup --config rollup.config.dist.js\",\n \"docs\": \"rimraf ./docs/* && npx esdoc\",\n \"publish\": \"npm publish --access public\",\n \"changelog\": \"auto-changelog --commit-limit false --package --template changelog-template.hbs\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/xeokit/xeokit-convert.git\"\n },\n \"keywords\": [\n \"xeolabs\",\n \"xeokit\",\n \"bim\",\n \"opensource\",\n \"ifc\",\n \"webgl\",\n \"xkt\",\n \"gltf\",\n \"glb\",\n \"cityjson\",\n \"laz\",\n \"gis\"\n ],\n \"author\": \"Lindsay Kay\",\n \"license\": \"LICENSE\",\n \"bugs\": {\n \"url\": \"https://github.com/xeokit/xeokit-convert/issues\"\n },\n \"homepage\": \"https://github.com/xeokit/xeokit-convert#readme\",\n \"dependencies\": {\n \"@loaders.gl/core\": \"^3.2.6\",\n \"@loaders.gl/gltf\": \"^3.2.6\",\n \"@loaders.gl/images\": \"^3.2.6\",\n \"@loaders.gl/json\": \"^3.2.6\",\n \"@loaders.gl/las\": \"^3.2.6\",\n \"@loaders.gl/obj\": \"^3.2.6\",\n \"@loaders.gl/ply\": \"^3.2.6\",\n \"@loaders.gl/polyfills\": \"^3.2.6\",\n \"@loaders.gl/textures\": \"^3.2.6\",\n \"@typeonly/validator\": \"^0.5.2\",\n \"commander\": \"^11.0.0\",\n \"core-js\": \"^3.22.5\",\n \"fs\": \"0.0.1-security\",\n \"pako\": \"^2.0.4\",\n \"path\": \"^0.12.7\",\n \"web-ifc\": \"0.0.40\"\n },\n \"devDependencies\": {\n \"@babel/core\": \"^7.17.10\",\n \"@babel/plugin-external-helpers\": \"^7.17.12\",\n \"@babel/preset-env\": \"^7.17.12\",\n \"@rollup/plugin-alias\": \"^3.1.9\",\n \"@rollup/plugin-commonjs\": \"^21.1.0\",\n \"@rollup/plugin-node-resolve\": \"^13.2.1\",\n \"@xeokit/xeokit-sdk\": \"^2.3.0\",\n \"auto-changelog\": \"^2.4.0\",\n \"babel-loader\": \"^8.2.5\",\n \"copy-webpack-plugin\": \"^11.0.0\",\n \"esdoc\": \"^1.1.0\",\n \"esdoc-node\": \"^1.0.5\",\n \"esdoc-standard-plugin\": \"^1.0.0\",\n \"http-server\": \"^14.1.0\",\n \"npm-upgrade\": \"^3.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"rollup\": \"^2.70.2\",\n \"rollup-plugin-copy\": \"^3.4.0\",\n \"rollup-plugin-minify-es\": \"^1.1.1\",\n \"typeonly\": \"^0.4.6\",\n \"webpack\": \"^5.72.1\",\n \"webpack-cli\": \"^4.9.2\",\n \"webpack-node-externals\": \"^3.0.0\"\n },\n \"files\": [\n \"/dist\",\n \"/convert2xkt.js\",\n \"/convert2xkt.conf.js\"\n ]\n}", "longname": "/home/lindsay/xeolabs/xeokit-convert-mar14/package.json", "name": "package.json", "static": true, diff --git a/docs/source.html b/docs/source.html index 10fd383..4603e40 100644 --- a/docs/source.html +++ b/docs/source.html @@ -80,7 +80,7 @@ -

Source 195/410

+

Source 195/411

@@ -463,12 +463,12 @@ - + - - - - + + + +
2024-08-02 19:42:46 (UTC)
src/parsers/parseGLTFIntoXKTModel.jssrc/parsers/parseGLTFIntoXKTModel.js parseGLTFIntoXKTModel35 %5/1424603 byte7012024-08-02 19:59:54 (UTC)33 %5/1524873 byte7132024-09-06 16:39:25 (UTC)
src/parsers/parseGLTFJSONIntoXKTModel.js